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

本文深入分析了Apache HTTP Server中存在的架构问题,揭示了三种混淆攻击方式、9个新漏洞及20种利用手法。研究展示了如何通过问号截断绕过访问控制、利用RewriteRule逃逸Web根目录,以及如何将XSS转化为RCE等关键技术细节。

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

故事是如何开始的?

今年年初,作者开始寻找下一个研究目标,最终决定深入研究Apache HTTP Server。尽管去年曾短暂浏览过其源代码,但当时已从编码风格中"闻"到异常味道。今年决定将这种"怪味"具体化,深入探究Apache HTTP Server的安全问题。

为什么Apache HTTP Server闻起来臭臭的?

Apache HTTP Server采用模块化设计,由数百个小模块协同处理HTTP请求。所有模块都依赖巨大的request_rec结构进行数据同步和交换,这个结构会在模块间传递,每个模块都可以随意修改其中的任意值。当规模扩大到数百个模块时,缺乏良好开发标准会导致模块间存在可利用的安全缝隙。

新型攻击面:混淆攻击(Confusion Attacks)

基于模块间对结构字段理解的不一致,研究团队发展出三种混淆攻击:

1. 文件名混淆(Filename Confusion)

1-1 截断攻击

  • 路径截断:通过问号%3F截断RewriteRule后面的路径
  • 误导RewriteFlag分配:利用截断行为将处理程序设置到非预期请求

1-2 ACL绕过

利用mod_proxy与其他模块对r->filename理解不一致,绕过基于文件的访问控制和认证

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

2-1 服务器端源代码泄露

  • 泄露CGI源代码
  • 泄露PHP源代码

2-2 本地小工具操纵

  • 信息泄露
  • XSS攻击
  • 本地文件包含(LFI)
  • 服务器端请求伪造(SSRF)
  • 远程代码执行(RCE)

2-3 从本地小工具越狱

利用符号链接跳出受限目录

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

3-1 覆盖处理程序

  • 覆盖处理程序泄露PHP源代码
  • 其他高级利用(暂未完全披露)

3-2 调用任意处理程序

  • 信息泄露
  • 脚本误解释
  • 完整SSRF
  • 访问本地Unix域套接字
  • RCE

其他重要漏洞

CVE-2024-38472

基于Windows UNC的SSRF攻击,可通过HTTP请求解析器或Type-Map触发

CVE-2024-39573

基于RewriteRule前缀完全可控的SSRF

技术影响

研究发现9个新漏洞,涉及20种利用手法和30多个案例分析。这些漏洞已通过官方安全渠道报告,并在Apache HTTP Server 2.4.60版本中修复。

实际风险

由于Apache HTTP Server的广泛使用,这些漏洞影响范围极大。特别是:

  • 使用Files语法保护的单文件认证可被直接绕过
  • 不安全的RewriteRule配置可能导致整个文件系统被访问
  • 历史遗留代码可能将XSS转化为RCE

防护建议

管理员应及时更新到2.4.60或更高版本,审慎检查RewriteRule配置,避免使用不安全的重写规则,并对关键文件实施多层防护措施。


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