web渗透文件包含漏洞
1)文件包含漏洞
不同语言文件包含写法
asp
<!--#include file="1.asp" -->
<!--#include virtual="1.asp" -->
aspx
<!--#include file="inc/menu.aspx" -->
jsp
<jsp:include page="footer.jsp" flush="true">
<jsp:param name="version" value="1.0" />
</jsp:include>
php
<?php
include("inc/head.php");
body
include("inc/footer.php");
?>
黑盒查看漏洞
配合文件上传进行getshell,图中包含php后门代码
配合记录日志进行getshell, 日志会访问ua信息,修改ua信息为后门代码,包含运行后门代码
配合会话文件进行getshell, PHP会话文件默认存储在/tmp目录,文件名格式为sess_<sessionid>(如sess_abc123,sessionid可通过Cookie的PHPSESSID获取),当用户登录输入用户名密码调用$_SESSION写入会话文件;
<form method="POST" action="/login.php">
<input name="username" value="<?php @eval($_POST['cmd']);?>">
<input name="password" value="123">
</form>
配合伪协议进行getshell,操作伪协议没有上传也能进行php代码执行,读文件,写文件,伪协议中需要注意编码算法的转换问题
php://input
data://
php://filter
file://
白盒代码审计
查看应用功能定位审计识别应用中使用文件包含功能的模块,如模板加载、插件调用、配置文件引入等
定位包含文件的关键代码位置,重点关注动态加载文件的功能点
分析文件包含的参数传递流程,确定用户可控参数的输入点
检查应用是否对包含文件路径有明确的业务需求和限制
2)文件包含检查方法
静态代码分析:查找应用中使用的文件包含函数(如 PHP 中的 include、require、include_once、require_once 等)
检查文件路径参数是否直接使用用户输入,未经过滤或过滤不严格
分析路径拼接方式,判断是否存在路径遍历漏洞(如使用../ 等字符)
查看是否对包含的文件类型有严格限制(如仅允许特定扩展名)
检查是否采用了白名单机制限制可包含的文件范围
分析代码中是否存在协议限制,是否禁止了危险协议的使用
3)文件包含工具
代码审计工具:Seay 源代码审计系统、Fortify、Checkmarx 等
动态测试工具:Burp Suite、OWASP ZAP(用于参数篡改和测试)
漏洞扫描工具:Nessus、AWVS(可检测常见文件包含漏洞)
专用工具:File Inclusion Tester、fimap(文件包含漏洞扫描工具)
命令行工具:curl、wget(用于测试伪协议利用)
4)靶场
DVWA 靶场:包含 Low 到 High 不同难度的文件包含漏洞场景,适合入门学习
Pikachu 靶场:提供了清晰的文件包含漏洞演示环境,包含本地文件包含和远程文件包含案例
CTF Show:包含多个 CTF 风格的文件包含挑战,适合提升实战能力