一、 复现环境
https://github.com/blasty/CVE-2021-41773
|
|
二、目录穿越
不能在浏览器复现,会被自动去掉..
三、RCE
前提:
安装Apache之后,默认并不包含cgi 模块,需要我们自行安装以完成cgi解析,那么有没有可能在启用mod_cgi
模块的前提下,实现RCE呢?
所以前提是启用mod_cgid和mod_cgi模块。
Linux上的apache实现回显RCE:
在linux上直接可以:
|
|
使用burp:
|
|
原理:
直接执行命令无回显的且报500:
原因是ap_scan_script_header_err_core_ex
函数主要负责从cgi处理结果中读取输入,并确保输出格式符合一定要求。大体来说就是解析后的结果必须符合http协议规范,我们知道http请求分为header和body,且中间需要使用\r\n
进行分割。
也就是说,apache将cgi解析结果作为了http响应包的一部分。
所以才有了如上构造的payload。
windows上的RCE
Windows版本的Apache通过目录穿越来读取cmd.exe
,会提示mallformed header from script
,无法实现命令执行。
但是利用相应的cgi模块可以实现代码执行。