File Inclusion(文件包含漏洞)
概述
第一关 File Inclusion(local)本地文件包含
首先,随便选一个球星,观察到url是
可见其中包含了一个文件file1.php,猜测这里其他文件名可能也是个filex.php(x是数字)的格式
把5个NBA球星都选一遍,发现文件名确实是file1.php~file5.php
用burp爆破,send to intruder
爆破位置设置为文件名中的数字,payload设置为Numbers,从6到100,步长为1,点start attack开始爆破
把爆破结果按照长度排个序,发现有如下四种长度,分别取代表file6.php、file7.php、file10.php、file100.php
把每一个文件名在浏览器上试一下,发现file6.php是包含用户名和密码的隐藏文件
且file7.php返回了报错,通过这个报错,可以知道fi_local.php中用来进行文件包含的函数是include(),并且包含的文件路径为与fi_local.php同文件夹下include文件夹中的文件。file10.php和file100.php都是一样的报错信息
第二关 File Inclusion(remote)远程文件包含
当包含的文件在远程服务器上时,就形成了远程文件包含。
所包含的远程文件后缀不能与目标服务器语言相同. (比如目标服务器是php解析的, 远程服务器的文件不能是php)
远程文件包含前提条件:
需要配置文件 php.ini 中 allow_url_include = on
以及 allow_url_fopen = on
刚点开界面发现存在警告
warning:你的allow_url_include没有打开,请在php.ini中打开了再测试该漏洞,记得修改后,重启中间件服务!
开始去查找警告存在的问题,从警告中可以看到说是 php.ini 文件中的allow_url_include 没有打开,找到警告中说的文件php.ini
按 ctrl +F 查找警告中的allow_url_include,看到本来是关闭的,改为 On打开。修改完之后,将小皮的套件重启
先随便选择一个名字尝试提交,可以看到和本地包含类似,也是在可控参数filename 上传入了文件的地址观察一下url
注:’%2F‘是’/‘的 url 编码
接下来可以搭建一个站点,把站点地址输入到 url 中进行测试
尝试写入一句话木马,格式为txt文本,前面讲到不能包含同后缀的文件,是把其他类型的文件当成 php 解析
然后就得到远程包含的地址:
http://127.0.0.1/websecurity/test/yijvhuamuma.txt
地址上的IP即远程那台要把文件传入服务器的计算机的IP
通过修改变量 filename 的参数,改为远程包含文件的地址
上传成功后,我们的文件就传到了后台服务器所在文件夹的同级目录下
也可以看到,文件后缀由 .txt 变成了 .php,就是把 txt 当初 php 解析了