客戶端繞過
上傳一個(gè)PHP文件 點(diǎn)開網(wǎng)絡(luò)查看 下面未有請(qǐng)求(同時(shí)彈窗說文件不合法) 這時(shí)候需要抓包 改包里的文件格式(在script標(biāo)簽里的格式)然后可上傳一句話木馬進(jìn)行繞過
服務(wù)端MIME繞過
MIME檢測(cè)的是數(shù)據(jù)包c(diǎn)ontent-type字段 常見圖片格式的MIME類型有以下幾種類型
PNG圖像:image/png
GIF圖像:image/gif
JPG圖像:image/jpeg
點(diǎn)擊上傳 上傳的是PHP文件 提示 只允許上傳圖片文件 這時(shí)候需要進(jìn)行抓包 抓完包 更改content-type字段 修改為圖片格式的值
服務(wù)端目錄檢測(cè)繞過(較少)
文件上傳時(shí),有的程序允許用戶將文件放到指定目錄中,如果指定目錄存在就將文件寫入目錄,不存在則先建立目錄,然后寫入(IIS中間件版本為6.0時(shí))xxxx.asp aaaaa.jpg
上傳jpg文件上傳成功 抓包 抓完以后 將文件夾改為xxx.asp 然后上傳成功 (阿帕奇無這種解析漏洞)
服務(wù)端拓展名檢測(cè)繞過
黑名單:
1.大小寫組合繞過
pHp AsP
上傳PHP文件 提示文件不合法 需要抓包 將PHP大小寫混合 改一句話
2.特殊文件名繞過
再Windows下有一個(gè)特性就是如果文件后綴以點(diǎn)‘.’或者空格‘ ’結(jié)尾的后綴名時(shí),系統(tǒng)在保存文件時(shí)會(huì)自動(dòng)去除點(diǎn)和空格。但要注意Uinx/Linux系統(tǒng)沒有這個(gè)特性
window上傳PHP 不合法? 先進(jìn)行抓包 然后改文件名 把后面加一個(gè). 然后發(fā)送數(shù)據(jù)包顯示上傳2.php.成功
3.0x00截?cái)嗬@過 asp程序居多
文件名后綴有一個(gè)%00字節(jié),可以截?cái)嗄承┖瘮?shù)對(duì)文件名的判斷。在許多語言函數(shù)中,處理字符串的函數(shù)中0x00被認(rèn)為是終止符
例如:網(wǎng)站上傳函數(shù)處理xxx.asp%00.jpg時(shí),首先后綴名是合法的jpg格式,可以上傳,在保存文件時(shí),遇到%00字符丟棄后面的.jpg,文件后綴最終保存的后綴名為xxx.asp
上傳1.asp.jpg文件 抓取數(shù)據(jù)包
在數(shù)據(jù)包1.asp.jpg的‘a(chǎn)sp’后面加上一個(gè)空格(空格的16進(jìn)制為0x20方便尋找) 然后選中‘Hex’找到‘20’,將其改為00 然后發(fā)送數(shù)據(jù)包 顯示上傳成功 上傳的是1.asp
而非jpg文件
4.htaccess文件攻擊
.htaccess文件內(nèi)容
<FilesMatch "haha">
SetHandler application/x-httpd-php
</FilesMatch>
上傳文件 抓包 將文件名改為haha ,haha出現(xiàn)在哪都行,然后改PHPinfo 然后發(fā)送數(shù)據(jù)包
發(fā)現(xiàn)上傳成功 但未被解析 這時(shí)候需要再上傳一個(gè)文件.htaccess 上傳的時(shí)候不加點(diǎn)(因?yàn)辄c(diǎn)開頭的 是隱藏文件) 抓住完以后 加一個(gè)點(diǎn) 然后發(fā)送數(shù)據(jù)包 發(fā)現(xiàn)原來文件可以被解析執(zhí)行
白名單:
1.0x00截?cái)嗬@過
用像test.asp%00.jpg的方式進(jìn)行截?cái)?,屬于白名單文?/p>
2.解析/包含漏洞繞過
這類漏洞直接配合上傳一個(gè)代碼注入過的白名單文件即可,再利用解析/包含漏洞
繞過文件內(nèi)容檢測(cè)
1.制作圖片馬
需要一張圖片和一個(gè)php文件(windows下制作)
shift右鍵 打開命令窗口輸入 copy test.png/b+shell.php/a 2.png
參數(shù)/b指定以二進(jìn)制格式復(fù)制,合并文件;用于圖像類/聲音類文件
參數(shù)/a指定以ASCII格式復(fù)制,合并文件。用于txt等文檔類文件
(Linux下制作)cat test.jpg 2.php > xxx.jpg
制作完成之后 上傳圖片馬 進(jìn)行抓包 修改后綴 改為php 之后上傳成功 打開菜刀進(jìn)行連接
5.解析漏洞(不是代碼問題 是中間件解析出現(xiàn)的問題)
1.Apache解析漏洞
一個(gè)文件名為test.php.aaa.bbb.ccc的文件,Apache會(huì)從ccc的位置往php的位置嘗試解析,如果ccc不屬于Apache能解析的后綴名,那么Apache就會(huì)嘗試去解析bbb,這樣一直往前嘗試,知道遇到一個(gè)能解析的拓展名為止
2.IIS6.0有兩個(gè)解析漏洞,一個(gè)是如果目錄名包.asp,.asa,.cer字符串,那么這個(gè)目錄下所有的文件都會(huì)按照asp去解析
例如:“test.asp/1.jpg”
另一個(gè)是只要文件名中含有.asp,.asa,.cer會(huì)優(yōu)先按asp來解析
例如:“1.asp;.jpg”
iis7.0/7.5是對(duì)php解析時(shí)有一個(gè)類似于Nginx的解析漏洞,對(duì)任意文件名只要在URL后面追加上字符串“/任意文件名.php”就會(huì)按照php的方式去解析
重點(diǎn)!?。?!
上傳漏洞的檢測(cè)框架
(1)尋找上傳點(diǎn)
網(wǎng)站前臺(tái)的上傳點(diǎn)一般會(huì)有頭像上傳,附件上傳,證件認(rèn)證上傳。如果通過SQL注入或者其它一些技術(shù)手段得到網(wǎng)站后臺(tái)權(quán)限,一般在網(wǎng)站更新頁面的地方存在上傳點(diǎn)。也可以通過敏感目錄或者文件掃描工具掃到一些開源編輯器的測(cè)試上傳頁面等等
(2)找到上傳點(diǎn)后,先上傳一張正常的圖片測(cè)試該上傳點(diǎn)時(shí)候可用
(3)上傳一張正常的圖片,抓包修改文件后綴名為對(duì)應(yīng)網(wǎng)站腳本語言
該操作可以繞過前端檢測(cè),MIME檢測(cè),文件內(nèi)容檢測(cè),可以檢測(cè)出網(wǎng)站是否對(duì)上傳文件進(jìn)行了文件后綴名的檢測(cè)
如果上傳成功表示沒有對(duì)文件后綴名進(jìn)行檢測(cè),可以進(jìn)一步上傳圖片馬,抓包修改后綴名為對(duì)應(yīng)網(wǎng)站腳本語言即可獲取webshell。
如果上傳失敗表示對(duì)文件名后綴進(jìn)行了檢測(cè),需要進(jìn)一步判斷是黑名單檢測(cè)還是白名單檢測(cè)
(4)上傳一張正常的圖片,在它后綴隨便添加幾個(gè)字符進(jìn)行上傳
例如:“1.jpgaaaaa”該后綴的文件既不在黑名單之內(nèi)也不在白名單之內(nèi),如果文件上傳成功代表是黑名單檢測(cè),如果上傳失敗代表是白名單檢測(cè)
(5)黑名單檢測(cè)繞過
>文件名大小寫繞過
>特殊文件名繞過
>0x00截?cái)嗬@過
>.htaccess文件攻擊
>php文件包含漏洞
>Apache解析漏洞
>Nginx解析漏洞
(6)白名單檢測(cè)繞過
>0x00截?cái)嗬@過
>php文件包含漏洞
>IIS解析漏洞
>Nginx解析漏洞