接上一篇:
本文进一步探讨将CVE-2021-41773路径穿越漏洞提升至RCE的可能性。 RCE探索 在安装Apache之后,默认并不包含cgi 模块,需要我们自行安装以完成cgi解析,那么有没有可能在启用`mod_cgi`模块的前提下,实现RCE呢? 首先修改`httpd.conf`配置文件,启用`mod_cgid`和`mod_cgi`模块。 使用`apachectl -k restart`重启服务,`mod_cgi`模块的功能是根据输入脚本类型选择不同解析器进行执行,常用的解析器有`php`、`perl`等,直接写一个`id`命令,虽然httpd错误日志提示`Bad header`,但是命令已经执行成功: 尝试使用重定向,命令结果成功写入文件。 命令回显 在跟踪代码的过程中,注意到错误日志`apache/error_log`提示`malformed header from script sh`,分析后发现该错误来自于`ap_scan_script_header_err_core_ex`函数: 根据分析可知,`ap_scan_script_header_err_core_ex`函数主要负责从cgi处理结果中读取输入,并确保输出格式符合一定要求。 大体来说就是解析后的结果必须符合http协议规范,我们知道http请求分为header和body,且中间需要使用`\r\n`进行分割。这里使用`echo`命令直接写入一个文件头,由此成功获取了一个正常的返回报文。 接下来使用相关语法就可以成功获取命令执行的回显结果。 Windows版本补充分析 Windows版本的Apache通过目录穿越来读取`cmd.exe`,会提示`mallformed header from script`,无法实现命令执行。 但是如果安装了对应的cgi也有可能实现RCE,比如php: 由于传播、利用此文档提供的信息而造成任何直接或间接的后果及损害,均由使用本人负责,且听安全团队及文章作者不为此承担任何责任。 点关注,不迷路!
|
|