新之助
- 关注

首先需要在php.ini中开启两个配置
allow_url_include=On
allow_url_fopen=On
Low级别:
1.来到File Inclusion模块,刚开始有三个文件并且URL的参数为:page=include.php
2.当我点击file1.php就加载了file1的内容,并且URL的参数变为:page=file1.php
并且显示了对应的file1的文件内容,此时我们知道page参数是一个包含文件的位置
3.接着我们修改page参数的值尝试读取一个本地文件,假设这个站点的某个目录下存在一个phpinfo.php的文件我们通过../+phpinfo.php的组合尝试在不同级别目录下尝试读取phpinfo文件将page参数改为
page=../phpinfo.php 可以看到页面返回了错误信息,并且泄露了站点的路径
4.接着我们再将page参数改为page=../../phpinfo.php
可以看到页面返回了PHP的配置信息,说明存在本地文件包含漏洞,我们可以通过包含一个本地的绝对路径
或相对路径的文件来读取该文件的信息
5.接着我们假设我们通过上传文件,上传了一个txt.php的文件,路径为/csrf/txt.php,目标站点为:192.168.107.128
我们尝试读取一下其内容,将page参数改为page=http://192.168.107.128/csrf/txt.php
可以看到成功的读取了文件的内容
Medium级别:
1.来到Medium级别,看着和low级别表面上无异
2.我们直接包含一个本地文件测试一下
假设我们知道目标机器C盘有一个key.txt文件
直接尝试本地读取将page参数改为page=C:\\key.txt
可以看到直接读取到了
3.接着我们在尝试读取一下远程上传的文件,我们通过文件上传漏洞在远程主机192.168.107.128上的csrf/目录下上传了一个txt.php的文件
尝试利用远程文件包含漏洞,读取一下,将参数改为page=http://192.168.107.128/csrf/txt.php
可以看到此时报错了,观察报错信息,发现我们的http://被过滤了变成了192.168.107.128/csrf/txt.php
这里存在一个信息泄露,直接将站点目录信息给爆出来了,并且将php的警告信息原封不动的输出了
导致我们可以通过报错信息判断出其存在过滤,因此可以考虑绕过
4.接着尝试将http://
改成hTTp://
,参数变为hTTp://192.168.107.128/csrf/txt.php
这里我们通过大小写混合绕过了过滤,读取到了远程文件内容
High级别:
1.来到high级别,表面上同前两个一样,我们点击file2,就读取了file2的文件内容
2.我们先来尝试一下本地文件包含,将URL的page参数改为page=C:\\key.txt
可以看到,页面直接返回了一个错误,并且没有任何报错信息的提示,在high级别中就做了一些防信息泄露的调整,修改了返回的报错信息,导致我们无法判断具体是使用了什么规则拦截
3.我们尝试一下远程文件包含,将URL的page参数改为page=http://192.168.107.128/csrf/txt.php
还是直接返回了错误页面
4.接下来我们尝试利用PHP伪协议
file://本地文件路径
访问本地文件系统
将URL的page参数改为page=file://C://key.txt
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)
