1. 程式人生 > >【滲透課程】第七篇-上傳漏洞之繞過上傳漏洞

【滲透課程】第七篇-上傳漏洞之繞過上傳漏洞

ng- 相關 都是 http itl 了解 利用 存在 上傳

前一篇我們已經講過了上傳漏洞的解析漏洞,在某些時候,知道網站存在哪個解析漏洞,那麽我們就可以更好的利用上傳漏洞

這個知識點在我們前面就有粗略說過了(http://www.yuntest.org/index.php/archives/765.html), http攔截也是上傳漏洞的其中之一, 下面我們來對繞過上傳漏洞進行更深的了解。

正文

管理員防止文件上傳漏洞時可以分為兩種,一種是客戶端檢測,一種是服務端檢測:

客戶端檢測:使用JavaScript檢測,在文件上傳之前,就對文件進行驗證

服務器端檢測:服務端腳本一般會檢測文件的MIME類型(這裏大家先點過去了解一下mime類型)檢測文件擴展名是否合法,甚至有些程序檢測文件中是否嵌入惡意代碼。

圖片一句話:

把一句話木馬插入在圖片文件中,而且並不損壞圖片文件,這一方法可以躲過少許的防火墻檢測。再利用解析漏洞得到webshell

推薦一款專業的制作軟件:LEdjpgcom

一、客戶端檢測繞過方法:

FireBug插件:將用於檢驗文件擴展名的onsubmit事件刪除。

中間人攻擊:使用Burp Suite,首先把木馬擴展名改為一張正常圖片(圖片木馬的簡介上一篇說過了,大家可以百度加以了解)的擴展名,比如JPG擴展名,,在上傳時使用Burp Suite攔截上傳數據,再將其中的擴展名JPG修改為PHP,就可以繞過客戶端驗證。也有可能還需要相應地修改Content-Length(Http知識點,看不明白跑回去看:http://www.yuntest.org/index.php/archives/686.html)

任何客戶端驗證都是不安全的,客戶端驗證是防止用戶輸入錯誤,減少服務器開銷,而服務器端驗證才可以真正防禦攻擊者。

註:從第一篇一直看到這裏的,不理解的去面壁

二、服務器端檢測

白名單與黑名單驗證

黑名單過濾方法:定義不允許上傳的文件擴展名

黑名單的繞過方法:

1.攻擊者可以從黑名單中找到Web開發人員忽略的擴展名,如:cer

2.對文件的後綴名進行大小寫轉換,比如黑名單中有php,可以將文件的後綴改為pHp,僅限windows平臺

3.在windows系統下,如果文件名以“.”或者空格作為結尾,系統會自動刪除“.”與空格,利用此特性也可以繞過黑名單驗證。(asp.或asp_)

白名單過濾方法:定義允許上傳的文件擴展名

白名單的繞過方法:結合Web容器的解析漏洞

MIME驗證

php中通過$_FILE[‘file‘][‘type‘]來檢驗

繞過方法:可以在Burp Suite中更改Content-Type的內容為image/jpeg

目錄驗證

在文件上傳時,程序通常允許用戶將文件放到指定的目錄中,如果指定的目錄存在,就將文件寫入目錄中,不存在的話則先建立目錄,然後寫入。

比如:在前端的HTML代碼中,有一個隱藏標簽<input type="hidden" name="Extension" value="up"/>

在服務器端有如下代碼

if(!is_dir($Extension)){ //如果文件夾不存在,就建立文件夾

mkdir($Extension);

}

攻擊者可以利用工具將表單中value的值由“up”改為“pentest.asp”,並上傳一句話圖片木馬文件。

程序在接收到文件後,對目錄判斷,如果服務器不存在pentest.asp目錄,將會建立此目錄,然後再將圖片一句話密碼文件寫入pentest.asp目錄,如果Web容器為IIS 6.0,那麽網頁木馬會被解析。

截斷上傳攻擊

在ASP程序中最常見,也就是%00將後面的字符都截斷了,比如上傳文件名為1.asp%00xxser.jpg。

實際操作過程中,利用Burp Suite的Repeater中的HEX選項卡可以進行這樣的操作。

截斷上傳漏洞不僅出現在ASP程序上,在PHP、JSP程序中也存在這樣的問題。

0x00不是針對所有基於白名單的後綴名檢查都能繞過,代碼的實現過程中必須存在截斷上傳漏洞。

【滲透課程】第七篇-上傳漏洞之繞過上傳漏洞