【Vulfocus靶场实战】uWSGI目录穿越漏洞(CVE-2018-7490)的深度利用与路径探测
1. 漏洞背景与原理剖析uWSGI作为一款高性能的Web服务器网关接口在Python、PHP等语言环境中被广泛使用。2018年曝光的CVE-2018-7490漏洞本质上是一个典型的路径规范化缺陷。当PHP插件处理用户请求时未能正确校验DOCUMENT_ROOT的边界导致攻击者可以通过构造特殊的路径序列突破目录限制。这个漏洞的有趣之处在于其利用方式——使用..%2f即URL编码后的../实现目录回溯。就像现实中的穿墙术攻击者通过连续叠加这种特殊字符可以像爬楼梯一样逐级突破目录限制。我在实际测试中发现大多数情况下需要至少两个..%2f才能跳出Web根目录。漏洞影响范围明确限定在uWSGI 2.0.17之前的版本但值得注意的是很多容器化部署的环境由于使用基础镜像的滞后性即使在新版本发布后仍然存在风险。这提醒我们版本号只是表面真正的安全在于完整的依赖链管理。2. 靶场环境搭建与初步探测在Vulfocus靶场中复现这个漏洞时首先需要获取目标地址。启动靶机后通常会得到类似http://123.58.224.8:31858的访问入口。这里有个实用技巧建议先用curl进行初步探测比浏览器更直观curl -v http://123.58.224.8:31858通过响应头可以确认服务器类型和uWSGI版本信息。我习惯先检查几个关键点是否存在uWSGI标识头是否有PHP相关字段默认页面是否暴露框架特征确认环境符合条件后就可以尝试基础payload了。原始文章直接跳到了/etc/passwd读取但实际测试中我建议分步骤验证先测试单层穿越/..%2fREADME.md尝试跳出web目录/..%2f..%2f/etc/passwd验证写入能力如果可能/..%2f..%2f/tmp/test3. 深度利用与路径探测技巧当基础payload生效后真正的挑战才开始。就像我去年在内部红队演练时遇到的场景明明能读到/etc/passwd却找不到flag文件。这时候需要系统性的路径探测方法3.1 敏感文件字典攻击准备一个包含常见路径的字典文件用Burp Suite的Intruder模块批量测试/etc/shadow /root/.bash_history /var/www/html/config.php /tmp/flag3.2 路径智能猜测当遇到Not Found时不要轻易放弃。我总结了几种思路版本特征匹配通过/proc/version获取系统信息推测路径规范环境变量检查尝试读取/proc/self/environ进程列表分析/proc/self/cmdline可能暴露工作目录3.3 靶场特性利用Vulfocus靶场往往会有意设置障碍这时需要仔细检查首页HTML源码可能有注释线索尝试非常规路径如/uploads/..%2f..%2fflag使用靶场自带的搜索功能如文中提到的flag搜索4. 防御方案与实战思考升级uWSGI固然是最直接的解决方案但在企业环境中还需要纵深防御容器层面使用只读文件系统read-only rootfsWeb配置设置php.ini中的open_basedir限制网络层WAF规则应拦截异常的%2f序列在最近一次客户渗透测试中我发现即使打了补丁的系统如果配置不当仍然可能通过..%252f双重编码绕过防护。这提醒我们安全是一个持续的过程不是一次性的修补。最后分享一个实用技巧在Vulfocus这类CTF环境中当所有常规方法都失效时不妨试试/proc/self/cwd/flag——有些题目会把flag放在当前工作目录。这种思路转换往往能打开新局面。