pikachu---Files Inclusion
文件包含漏洞
概述:
在web后台开发中,程序员往往为了提高效率以让代码看起来更加简洁,会使用“包含”函数功能。
比如把一系列功能函数都写进function.php中,之后当某个文件需要调用的时候,就直接在文件头中写上一句<?php include function.php?>就可以调用函数代码。
但有些时候因为网站功能需求,会让前端用户选择需要包含的文件或者在前端功能中使用了“包含”功能,并且开发人员没有对要包含的这个文件进行安全考虑,就会导致攻击者可以通过修改包含文件的位置来让后台执行任意文件或代码。
分类:
- 本地文件包含漏洞
- 远程文件包含漏洞
拓扑图:

包含函数:
include()与require()语句相同,处理错误不同。
- require()会生成致命错误并停止脚本。
- include()只生成警告并且脚本会继续。
Files Inclusion(local):
随便选择下拉菜单中的文件,点击提交查询,页面显示查询文件信息,发现在url中有filename的参数。

尝试本地文件包含,修改url中filename的参数,猜测后台操作系统版本和一些常用配置的文件夹,这里举例随便写一个,成功包含我们想要的文件。

查看后台源代码:

发现其对用户包含的文件没有进行任何处理,直接调用include()函数,从而出现本地文件包含漏洞。
Files Inclusion(remote):
远程文件包含漏洞形式与本地文件包含漏洞差不多,在远程包含漏洞中,攻击者可以通过访问外部地址来加载远程的代码。
远程包含漏洞前提:
如果使用的include和require,则需要php.ini配置如下:
allow_url_fopen = on//默认开启
Allow_url_include = on//默认关闭
拓扑图:

攻击者可以自己搭网站并放置含有一句话木马的文件,然后通过文件包含加载到目的网站,从而实现攻击。
攻击者:192.168.18.11
存在远程文件包含漏洞的站点:192.168.18.21
在攻击者网站中编写一句话木马文件,使其在远端站点访问时自动执行生成文件并讲一句话木马写入文件的操作。

在下拉菜单中随便选一个文件点击提交查询,发现在url中同样存在filename参数。

修改filename的参数为访问攻击者网站中的一句话木马文件,回车执行,页面无变化。
但查看网站根目录中已经生成该文件,并成功写入一句话木马。

此时攻击者可在网站中找到与页面同级的目录,访问yijuhua.php文件,并传入x的参数为系统命令,成功执行。

查看后台源代码:

发现其也没有包含的文件名做过滤或限制处理,还有就是我们手动将远程文件包含权限打开,因为导致远程文件包含漏洞。
文件包含漏洞之文件上传漏洞的利用思路:
- 制作一个图片木马,通过文件上传漏洞上传。
- 通过文件包含漏洞对该图片木马进行“包含”。
- 获取执行结果。
文件包含漏洞常见防范措施:
- 在功能设计上尽量不要将文件包含函数对应的文件放给前端进行选择和操作。
- 过滤各种../../,http://,https://
- 配置php.ini配置文件allow_url_fopen = off;Allow_url_include = off;magic_quotes_gpc = on
- 通过白名单策略,仅允许包含运行指定的文件,其他的都禁止。

浙公网安备 33010602011771号