1 上傳技術基礎
1.1 JS驗證繞過類
如何判斷為本地驗證呢? 一般情況下速度較快的返回信息認為是本地驗證,但有時候需要根據抓包以及跟蹤上傳代碼來分析是否為本地驗證。
- 刪除驗證方法繞過上傳
- 修改過濾白名單繞過上傳
在客戶端的檢測中,通常使用JS對上傳圖片檢測,包括文件大小、文件拓展名、文件類型等。在繞過本地上傳限制時,可以使用Firebug對客戶端的腳本進行編輯。
1.2 MIME類型檢測繞過類
MIME作用:使用客戶端軟件,Web服務器使用MIME來說明發送數據的種類,Web客戶端使用MIME來說明希望接收到的數據類型。
在檢測繞過過程中,可以使用BurpSuite抓包,攔截並更改相應提交數據,后述幾種繞過方法類似。
1.3 文件擴展名檢測繞過類
PHP 語言除了可以解析以 php 為后綴的文件,還可以解析 php2、php3、php4、php5這些后綴的文件,同時不同的服務器所支持的文件類型也不盡相同。
1.4 文件內容檢測繞過類
對於文件內容檢測,可以使用BurpSuite修改提交的數據包,可通過在末尾添加幾個空格后粘貼“一句話”,然后修改相應的尾綴為 php 。注,上述的“一句話”為一句話木馬相應的代碼。
1.5 空字符截斷目錄路徑檢測類
對於空字符截斷目錄路徑檢測類,可以使用BurpSuite修改上傳保存的文件名,並且通過Hex進行空字符截斷。00是一個截斷字符的16進制,截斷字符后面的都會被截斷,也就是被忽略,所以對於uploading/1.php .jpg 就變成了uploadimg/1.php,從而實現了上傳php文件的目的。
2 解析導致的上傳漏洞
2.1 IIS 6.0 目錄路徑解析漏洞
在IIS 6.0目錄路徑檢測解析中,文件名字為 ".asp/xxx.jpg" 或者 ".asa/xxx.jpg",同樣會被IIS當作 ASP 文件來解析並執行。
說明:首先請求 /aaa.asp/xxx.jpg,從頭部查找 " . ",獲得了 .asp/xxx.jpg,查找 " / ",如果有這內存截斷,所以 /aaa.asp/xxx.jpg 會當作 /aaa.asp 來進行解析。
2.2 IIS 6.0 站上的解析缺陷
在IIS 6.0目錄路徑檢測解析,文件的名字為 ".php;xxx.jpg",也同樣會被IIS當成 PHP 文件類解析並執行。
說明:首先請求 /aaa.php;xxx.jpg,從頭部查找 " . ",獲得了 .php;xxx.jpg,查找 " ; ",如果有則 內存截斷,所以 /aaa.php;xxx.jpg 會被當作 /aaa.php 來進行解析。
2.3 Apache站上的解析缺陷
Apache是從后面開始檢查后綴,按最后的一個合法后綴執行。在進行繞過解析過程中,將需要上傳的木馬文件后綴名改為 .7z、 .cab、 .zip、 .bmp 等允許的上傳類型都可以上傳成功。
2.4 htaccess文件上傳解析漏洞
.htaccess文件中定義了將上傳的文件后綴名為 .jpg 格式的文件以 php 格式來解析文件。.htaccess 是apache服務器中的一個配置文件,不是上傳的文件的黑名單之內,所以該類型文件可以上傳成功。
AddType application/x-httpd-php .jpg
3 上傳技術之編輯器
3.1 FCK編輯器
- 查看FCKeditor版本信息
http://www.xxx.com/fck242/_samples/default.html http://www.xxx.com/fck242/_whatsnew.html
- FCKeditor上傳地址
http://www.xxx.com/fck242/editor/filemanager/browser/default/connectors/test.html http://www.xxx.com/fck242/editor/filemanager/upload/test.html http://www.xxx.com/fck266/editor/filemaneger/connectors/test.html http://www.xxx.com/fck266/editor/filemaneger/uploadtest.html
- FCKeditor漏洞利用:首先上傳圖片看編輯器是否可利用,然后結合前面的解析漏洞上傳木馬
4 防護
- 客戶端檢測,使用JS對上傳圖片檢測,包括文件大小、文件擴展名、文件類型等
- 服務器端檢測,對文件大小、文件路徑、文件擴展名、文件類型、文件內容檢測、對文件重命名等
- 其他限制,服務器端上傳目錄設置不可執行權限