文件上傳漏洞類型分類
如何判斷上傳漏洞類型?
本次實現(xiàn)使用的靶場系統(tǒng)是upload-labs? ? ??upload-labs是一個使用php語言編寫的村象,專門收集滲透測試和CTF中遇到的各種上傳漏洞的靶場讥脐。旨在幫助大家對上傳漏洞有一個全面的了解。目前一共20關(guān)刽辙,每一關(guān)都包含著不同上傳方式。
任務(wù)1:
查看下源碼? ?只在js里添加了幾個白名單 后端沒有任何過濾
第一關(guān)只有前端用JavaScript過濾? ?先把木馬的名字改為合法的后綴? 再用burp抓包 修改成PHP后綴名就可以上傳
任務(wù)2:
第二關(guān)檢查的是文件類型? ?
步驟和任務(wù)一的一樣
任務(wù)3:
還是先查看一下源代碼
設(shè)置了黑名單 刪除兩邊空格?
$deny_ext=array('.asp','.aspx','.php','.jsp');? 這里是黑名單驗證 可以試下php3 php5后綴名? 但是Apache默認(rèn)是不允許解析 如果運維人員修改配置文件是可以解析的
如果中間件是IIS6.0 2003服務(wù)器的話 可以利用IIS的解析漏洞繞過
直接上傳名為 xx.asp:.jpg的文件? ??
任務(wù)4:
利用Windows的命名特性? 上傳xx.php:.jpg? ? Windows系統(tǒng)會自動去掉:.jpg
先把馬的名字改成xx.jpg? 然后利用burp抓包 修改文件名
文件上傳成功了
但是文件是空的? 然后再上傳一遍? ?然后將文件名改為4.<或4.<<<或4.>>>或4.>><后再次上傳甲献,重寫4.php文件內(nèi)容宰缤,Webshell代碼就會寫入原來的4.php空文件中。
任務(wù)5:
?源代碼
和之前對比沒有了轉(zhuǎn)換為小寫
黑名單后綴名:$deny_ext=array(".php",".php5",".php4",".php3",".php2",".html",".htm",".phtml",".pht",".pHp",".pHp5",".pHp4",".pHp3",".pHp2",".Html",".Htm",".pHtml",".jsp",".jspa",".jspx",".jsw",".jsv",".jspf",".jtml",".jSp",".jSpx",".jSpa",".jSw",".jSv",".jSpf",".jHtml",".asp",".aspx",".asa",".asax",".ascx",".ashx",".asmx",".cer",".aSp",".aSpx",".aSa",".aSax",".aScx",".aShx",".aSmx",".cEr",".sWf",".swf",".htaccess");
可以直接把后綴名改成PHP或者PhP等組合繞過
由于Windows系統(tǒng)不區(qū)分大小寫? 大寫PHP也可以正常當(dāng)做php文件解析
任務(wù)6:
源碼
過濾代碼會刪除文件名后面的點? 但是過濾時只過濾.php? 沒過濾.php點
利用Windows字體文件命名特性? 在xx.php后面加空格點? . 直接切掉 .? 只留xx.php
任務(wù)7:
和任務(wù)6原理相同? ?加空格加點
任務(wù)8:
什么是數(shù)據(jù)流晃洒?
php在window的時候如果文件名+"::$DATA"會把::$DATA之后的數(shù)據(jù)當(dāng)成文件流處理,不會檢測后綴名.且保持"::$DATA"之前的文件名
相比之前缺少了數(shù)據(jù)流檢測
可以在后面直接加::$DATA繞過
任務(wù)9:
加點加空格加點
刪除掉末尾點? 還有點和空格? 再去空? 還剩個點? Windows會自動去掉后面的點
任務(wù)10:
因為只過濾了一次php
在后面打亂一個php中間插入一個php? 過濾掉完整的php后又拼出一個完整的php
任務(wù)11:
這關(guān)是白名單驗證? ?可以使用%00截斷繞過? ?但是PHP版本要小于5.3.4
任務(wù)12:
00截斷上傳
任務(wù)13:
繞過文件頭檢查慨灭,添加GIF圖片的文件頭GIF89a,繞過GIF圖片檢查
或者我們使用命令copy 1.jpg /b + shell.php /a
webshell.jpg球及,將php一句話追加到j(luò)pg圖片末尾缘挑,代碼不全的話,人工補充完整桶略。形成一個包含Webshell代碼的新jpg圖片语淘,然后直接上傳即可诲宇。但是我們沒有辦法拿到shell,應(yīng)為我們上傳的圖片馬無法被解析成php形式惶翻,通常圖片馬配合%00或者0x00截斷上傳姑蓝,或者配合解析漏洞
任務(wù)14:
同13
任務(wù)15:
同14
任務(wù)16:
16多出個圖片二次渲染
直接找一個正常的圖片? 然后在里面插入webshell 不用管圖片是否可以正常顯示? ?被二次渲染后webshell還是在里面
圖片插入一句話木馬方式和任務(wù)13一樣
任務(wù)17:
利用條件競爭刪除文件時間差繞過
服務(wù)器先把文件保存? 然后再檢查上傳的文件是否合法 不合法再進行刪除
先用burp多線程上傳幾千個文件? ?再多線程訪問上傳的文件? ? ?文件在打開時是無法刪除的
利用服務(wù)器在處理文件時的時間差 不讓程序刪除上傳的文件
先隨便上傳個圖片 獲取文件地址
http://192.168.60.84:99/upload/upload/
圖片地址? ?
上傳木馬用burp抓包
把數(shù)據(jù)包發(fā)送給測試器
先清除掉負(fù)載
上傳3000個文件 沒有負(fù)載標(biāo)記
線程數(shù)100? ? 快速上傳讓程序來不及處理就訪問? ?訪問時文件就被占用? 程序再去刪除就無法刪除
再抓一個訪問這個文件的數(shù)據(jù)包? ? 和上圖一樣? 訪問3000次? ?線程100
任務(wù)18:
還是和上一關(guān)一樣? ?快速上傳幾千個文件 讓程序來不及重命名
然后利用Apache的解析漏洞? 直接訪問xx.php.7z
任務(wù)20:
雙文件上傳
用于欺騙
如果hatccess沒有加入黑名單 可以上傳.hatccess文件? 文件內(nèi)容為
<FilesMatch "">
SetHandler application/x-httpd-php
</FilesMatch>
意思為任意拓展名都當(dāng)做PHP腳本解析