混淆攻击:利用Apache HTTP Server中隐藏的语义歧义

本文深入分析Apache HTTP Server架构中的混淆攻击面,揭示三种混淆攻击类型、九个新漏洞及二十种利用技术。研究涵盖文件名混淆、文档根目录混淆和处理程序混淆,展示如何通过问号字符绕过访问控制、利用不安全重写规则突破Web根目录限制,以及通过遗留代码将XSS转化为RCE。

混淆攻击:利用Apache HTTP Server中隐藏的语义歧义

摘要

本研究聚焦Apache HTTP Server(Httpd)架构中的混淆攻击面,揭示其内部模块间因语义歧义导致的安全风险。通过分析r->filenameDocumentRootr->handler等关键字段在不同模块中的不一致解读,研究人员发现了三种混淆攻击类型,共涉及9个新漏洞(CVE-2024-38472至CVE-2024-38477等)、20种利用技术和30余个案例分析。

攻击类型详解

1. 文件名混淆(Filename Confusion)

  • 截断利用:mod_rewrite模块将重写结果强制视为URL,导致路径在问号处被截断。例如,通过%3F可绕过RewriteRule中的文件扩展名限制,使非PHP文件被PHP处理器执行。
  • ACL绕过:mod_proxy将r->filename作为URL处理,而认证模块将其视为文件路径,导致基于Files指令的单文件保护(如admin.php)可被?字符绕过。

2. 文档根目录混淆(DocumentRoot Confusion)

  • 源码泄露:不安全的RewriteRule(如^/html/(.*)$ /$1.html)允许访问Web根目录外的文件。结合路径截断,可泄露CGI或PHP源码(如通过http://server/html/usr/lib/cgi-bin/script.cgi%3F)。
  • 本地组件操纵:在Debian/Ubuntu默认配置下,通过/usr/share目录内的符号链接或调试脚本(如magpie_debug.php)实现信息泄露、XSS、LFI、SSRF乃至RCE。
  • 目录突破:利用符号链接(如Redmine中的/usr/share/redmine/instances/指向/var/lib/redmine/)结合重写规则,可访问系统敏感文件(如数据库配置)。

3. 处理程序混淆(Handler Confusion)

  • 处理器覆盖:因历史代码(1996年)中r->content_type可覆盖r->handler,模块错误(如ModSecurity未处理AP_FILTER_ERROR)可能导致PHP源码泄露。
  • 任意处理器调用:通过CGI的本地重定向响应,控制Content-Type头部可调用任意处理器(如server-statusmod_proxy),实现SSRF、本地Unix域套接字访问或RCE(如利用PEAR的pearcmd.php)。

其他漏洞

  • CVE-2024-38472:Windows环境下通过UNC路径触发NTLM认证劫持(需AllowEncodedSlashes On配置或Type-Map处理器)。
  • CVE-2024-39573:完全控制RewriteRule前缀时,可调用mod_proxy实现SSRF。

影响与修复

  • 漏洞影响Apache HTTP Server 2.4.60之前版本,已通过官方更新修复。
  • 部分补丁可能导致向后兼容性问题,需管理员谨慎评估。

未来工作

混淆攻击面仍具潜力,其他Httpd发行版(如RHEL、BSD)或应用特定配置可能存在更多可利用的规则和组件。

结论

Httpd的模块化架构在长期迭代中积累了大量技术债务,模块间语义歧义已成为新的攻击面。维护者需在兼容性与安全性间取得平衡,而研究人员应持续探索真实环境中的潜在风险。

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计