6-文件包含漏洞

简介

本地文件包含 (LFI, Local File Inclusion)

目录遍历漏洞/文件任意访问漏洞
通过接口动态包含
可用于包含恶意代码或图片马
包含敏感文件

远程文件包含 (RFI, Remote File Inclusion)

漏洞 描述 原因 后果
XXE XML 外部实体注入 使用 XML 传输数据,并且允许解析外部实体 导致访问敏感文件,探测端口,执行系统命令等
SSRF 服务顿请求伪造 使用了 curl_exec () 之类的函数 导致端口扫描,攻击内网主机,绕过防火墙,获取敏感信息,访问大文件造成内存溢出,操作 Redis 等问题
RFI 远程文件包含 使用了 include 导致任意文件访问,包含 shell 代码

需要配置 php.ini:
allow_url_fopen=On
allow_url_include=On

PHP 相关函数和伪协议

函数 作用
include () 包含并运行指定文件
include_once () 只包含一次,不重复包含
require () 同 include,但出错时会停止
require_once ()
fopen () 打开文件或 url
readfile 读取文件并写入到输出缓冲
highlight_file 语法高亮一个文件
file_get_contents 将整个文件读入一个字符串
file 把整个文件读入一个数组

PHP 伪协议

php://filter 可以作为中间流处理其他流,例如 php://filter/resource=/flag

?url=/etc/passwd 测试是否能访问文件
?url=/var/log/nginx/access.log 查看日志
日志注入

文件包含漏洞挖掘与利用

URL 关键字

URL 参数名出现了 page file filename include 等关键字
URL 参数值出现了文件名,如 xxx.php xxx.html

如:
?file=content
?page=abc.asp
?home=abc.html

利用流程

发现漏洞,上传 shell/读取敏感文件 (FUZZ),执行恶意代码

自动工具:
LFI Suite