洞悉互聯網前沿資訊,探尋網站營銷規律
作者:狐靈科技 | 2021-11-29 11:08 |點擊:
Upload-labs是一個幫你總結所有類型的上傳漏洞的靶場,包括常見的文件上傳漏洞:
項目地址:https://github.com/c0ny1/upload-labs
操作系統:windows、Linux
php版本:推薦5.2.17(其他版本可能會導致部分Pass無法突破)
php組件:php_gd2,php_exif(部分Pass需要開啟這兩個組件)
apache:以moudel方式連接
直接上傳php木馬,發現前端報錯:
嘗試前端繞過,在前端js判斷函數中加上可以上傳php文件:
即可上傳成功:
查看源代碼:
發現僅僅判斷content-type,于是修改content-type繞過:
查看源代碼:
成功上傳:
查看源代碼:
雖然還是黑名單,但幾乎過濾了所有有問題的后綴名,除了.htaccess,于是首先上傳一個.htaccess內容如下的文件:
SetHandler application/x-httpd-php
這樣所有文件都會解析為php,然后再上傳圖片馬,就可以解析:
訪問:
查看源代碼:
還是黑名單,加上了.htaccess,但是沒有將后綴進行大小寫統一,于是可以通過大小寫繞過:
訪問:
查看源代碼:
還是黑名單,但是沒有對后綴名進行去空處理,可在后綴名中加空繞過:
訪問:
查看源代碼:
還是黑名單,但是沒有對后綴名進行去”.”處理,利用windows特性,會自動去掉后綴名中最后的”.”,可在后綴名中加”.”繞過:
訪問:
查看源代碼:
還是黑名單,但是沒有對后綴名進行去”::$DATA”處理,利用windows特性,可在后綴名中加” ::$DATA”繞過:
訪問:
查看代碼:
黑名單過濾,注意第15行和之前不太一樣,路徑拼接的是處理后的文件名,于是構造info.php. . (點+空格+點),經過處理后,文件名變成info.php.,即可繞過。
訪問:
查看源代碼:
依舊是黑名單過濾,注意到,這里是將問題后綴名替換為空,于是可以利用雙寫繞過:
訪問:
查看代碼:
看到是白名單判斷,但是$img_path直接拼接,因此可以利用%00截斷繞過:
訪問:
查看代碼:
和十一關不同的是這次的save_path是通過post傳進來的,還是利用00截斷,但這次需要在二進制中進行修改,因為post不會像get對%00進行自動解碼。
訪問:
本關要求上傳圖片馬即可,查看代碼:
通過讀文件的前2個字節判斷文件類型,因此直接上傳圖片馬即可,制作方法:
copy normal.jpg /b + shell.php /a webshell.jpg
上傳圖片馬
成功繞過:
接下來利用的話,還需要結合文件包含漏洞。
本關還是要上傳一個圖片馬,查看代碼:
這里用getimagesize獲取文件類型,還是直接就可以利用圖片馬就可進行繞過:
本關還是要上傳一個圖片馬,查看代碼:
這里用到php_exif模塊來判斷文件類型,還是直接就可以利用圖片馬就可進行繞過:
本關還是要上傳一個圖片馬,查看代碼:
本關綜合判斷了后綴名、content-type,以及利用imagecreatefromgif判斷是否為gif圖片,最后再做了一次二次渲染,繞過方法:
成功上傳:
本關考察的是條件競爭,查看代碼:
這里先將文件上傳到服務器,然后通過rename修改名稱,再通過unlink刪除文件,因此可以通過條件競爭的方式在unlink之前,訪問webshell。
首先在burp中不斷發送上傳webshell的數據包:
然后不斷在瀏覽器中訪問,發現通過競爭可以訪問到:
本關需要上傳圖片馬,查看代碼
本關對文件后綴名做了白名單判斷,然后會一步一步檢查文件大小、文件是否存在等等,將文件上傳后,對文件重新命名,同樣存在條件競爭的漏洞。可以不斷利用burp發送上傳圖片馬的數據包,由于條件競爭,程序會出現來不及rename的問題,從而上傳成功:
本關考察CVE-2015-2348 move_uploaded_file() 00截斷,上傳webshell,同時自定義保存名稱,直接保存為php是不行的
查看代碼:
發現move_uploaded_file()函數中的img_path是由post參數save_name控制的,因此可以在save_name利用00截斷繞過: