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