文件上傳繞過方法


首先,上傳的文件路徑必須的清楚的,文件可被訪問並且能執行。

文件上傳驗證的種類

1.客戶端js驗證

通常我們看見網頁上會有一段js腳本,用它來驗證上傳文件的后綴名,其中分為黑白名單的形式,一般情況下只驗證后綴名。

判斷:當你在瀏覽器中瀏覽加載文件,但沒有點擊上傳按鈕時就會彈出對話框,比如:只允許上傳.jpg/.jpeg/.png后綴名的文件,可此時並沒有發送數據包。

2.服務器端驗證

*文件頭content-type字段校驗(image/gif)

前面情況同上(客戶端js驗證),可用burpsuite抓包改包,即將content-type字段改為image/gif。

*文件內容頭校驗(gif89a)

幾個常見的文件頭對應關系:
(1) .JPEG;.JPE;.JPG,”JPGGraphic File”

(2) .gif,”GIF 89A”

(3) .zip,”Zip Compressed”

(4) .doc;.xls;.xlt;.ppt;.apr,”MS Compound Document v1 or Lotus Approach APRfile”

*文件后綴名繞過

       黑名單驗證:

       (1)大小寫繞過,如pHp,aSp等。

       (2)可能被解析的文件擴展名,如jsp:jspx,jspf ;asp:asa,cer,aspx ;php:php2 php3 php4 ;exe:exee。

       白名單驗證:

(1)0x00截斷繞過

(2)解析調用/漏洞繞過                     

3.  配合文件包含漏洞

前提:校驗規則只校驗當文件后綴名為asp/php/jsp的文件內容是否為木馬。

繞過方式:(這里拿php為例,此漏洞主要存在於PHP中)

(1)先上傳一個內容為木馬的txt后綴文件,因為后綴名的關系沒有檢驗內容;

(2)然后再上傳一個.php的文件,內容為<?php Include(“上傳的txt文件路徑”);?>

此時,這個php文件就會去引用txt文件的內容,從而繞過校驗,下面列舉包含的語法:

#PHP   

<?php Include("上傳的txt文件路徑");?>

#ASP   

<!--#include file="上傳的txt文件路徑" -->

#JSP   

<jsp:inclde page="上傳的txt文件路徑"/>

or 

<%@include file="上傳的txt文件路徑"%>

詳細參考:文件包含漏洞(繞過姿勢)

4.  配合服務器解析漏洞繞過

詳細可參考:http://thief.one/2016/09/21/服務器解析漏洞/

5.  配合操作系統文件命令規則

6.  CMS、編輯器漏洞

7.  配合其他規則

8.  WAF繞過

參考:http://www.mamicode.com/info-detail-2116088.html

http://www.cnblogs.com/lgf01010/p/9516445.html


免責聲明!

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



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