3.1黑名單概念(隨機(jī)構(gòu)造一個(gè)后綴名,能上傳即為黑名單)
一般情況下,代碼文件里會(huì)有一個(gè)數(shù)組或者列表,該數(shù)組或者列表里會(huì)包含一些非法的字符或者字符串,當(dāng)數(shù)據(jù)包中含有符合該列表的字符串時(shí),即認(rèn)定該數(shù)據(jù)包是非法的。
3.2如何確認(rèn)黑白名單
因?yàn)楹诿麊问遣辉试S我們的數(shù)據(jù)包含有符合黑名單列表的字符串,所以我們只需要隨意構(gòu)造一個(gè)不在它列表中的數(shù)據(jù)包即可。
3.3利用后綴大小寫(xiě)繞過(guò)
在Windows中,大小寫(xiě)是不敏感的。
例如:“index.html”和“index.htmL”訪問(wèn)的結(jié)果是一樣的。
3.4利用空格繞過(guò)
在Windows中,文件保存的時(shí)候如果文件后綴名末尾有空格會(huì)自動(dòng)去掉。例如:“phpinfo.php " Windows會(huì)自動(dòng)去掉末尾的空格變成"phpinfo.php".
(在burpsuite里加空格)
3.5 利用點(diǎn)號(hào)()繞過(guò)
在Windows中,文件保存的時(shí)候會(huì)自動(dòng)去掉文件后綴后的點(diǎn)號(hào)。例如:“index.html.”在保存的時(shí)候就變成了“index.html“
(在burpsuite里加點(diǎn))
3.6利用(::$DATA)繞過(guò)
在Windows中如果文件名+“::$DATA”
會(huì)把::$DATA
之后的數(shù)據(jù)當(dāng)成文件流處理,不會(huì)檢測(cè)后綴名,且保持::
D
A
T
A
之前的文件名。例如
:
“
p
h
p
i
n
f
o
.
p
h
p
:
:
DATA之前的文件名。 例如:“phpinfo.php::
DATA之前的文件名。例如:“phpinfo.php::DATA"Windows會(huì)自動(dòng)去掉來(lái)尾的::$DATA變成"phpinfo.php”。
3.7利用雙寫(xiě)后綴繞過(guò)
有些代碼中,會(huì)將數(shù)據(jù)包中符合黑名單列表的字符串替換為空。比如:“index.php”變?yōu)椤癷ndex”。
3.8利用.htaccess文件繞過(guò)(只作用于apache服務(wù)器)
.htaccess文件(或者"分布式配置文件"),全稱是Hypertext Access(超文本入口)。提供了針對(duì)目錄改變配置的方法,即,在一個(gè)特定的文檔目錄中放置一個(gè)包含一個(gè)或多個(gè)指令的文件,以作用于此目錄及其所有子目錄。作為用戶,所能使用的命令受到限制。
比如新建一個(gè).htaccess文件:
<FilesMatch “as.png”>
setHandler application/x-httpd-php
通過(guò)一個(gè).htaccess
文件調(diào)用php的解析器去解析一個(gè)文件名中只要包含"as.png"
這個(gè)字符串的任意文件,所以無(wú)論文件名是什么樣子,只要包含"as.png
"這個(gè)字符串,都可以被以 php的方式來(lái)解析,一個(gè)自定的.htaccess
文件就可以以各種各樣的方式去繞過(guò)很多上傳驗(yàn)證機(jī)制。
繞過(guò)白名單檢測(cè)實(shí)現(xiàn)文件上傳
1.1白名單概念(隨機(jī)構(gòu)造一個(gè)后綴名,不能上傳即為白名單)
一般情況下,代碼文件里會(huì)有一個(gè)數(shù)組或者列表,該數(shù)組或者列表里會(huì)包含一些合法的字符或者字符串,當(dāng)數(shù)據(jù)包中含有不符合該列表的字符串時(shí),即認(rèn)定該數(shù)據(jù)包是非法的。
1.2如何確認(rèn)是否是白名單
因?yàn)榘酌麊问侵辉试S我們的數(shù)據(jù)包含有符合白名單列表的字符串,所以我們只需要隨意構(gòu)造一個(gè)數(shù)據(jù)包,如果可以上傳,說(shuō)明是黑名單,不可以上傳則是白名單。
1.3白名單的繞過(guò)方式
服務(wù)端判斷文件類(lèi)型是從后往前判斷,而對(duì)文件解析是從前往后解析,可以利用O0截?cái)嗟姆绞竭M(jìn)行繞過(guò),包括%00截?cái)嗯cOx00截?cái)?。前提php小于5.3.29。
1.3.1%00截?cái)嗬@過(guò)白名單檢測(cè)
%00是一個(gè)url編碼,url發(fā)送到服務(wù)器后就被服務(wù)器解碼,這時(shí)還沒(méi)有傳到驗(yàn)證函數(shù),也就是說(shuō)驗(yàn)證函數(shù)里接收到的不是%00字符,而是%00解碼后的內(nèi)容,即解碼成了Ox00
在url中%00表示ascll碼中的0,而ascii中0作
為特殊字符保留,表示字符串結(jié)束,所以當(dāng)url中出現(xiàn)%00時(shí)就會(huì)認(rèn)為讀取已結(jié)束。
1.3.2 OxO0截?cái)嗬@過(guò)白名單檢測(cè)
系統(tǒng)在對(duì)文件名進(jìn)行讀取時(shí),如果遇到Ox00,就會(huì)認(rèn)為讀取已經(jīng)結(jié)束。但要注意是文件的十六進(jìn)制內(nèi)容里的o0,而不是文件名中的00。文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-670843.html
brupsuite中將文件修改后綴上傳后抓包,在repeater中加地址后加一個(gè)空格,去hex中將空格空格字符16進(jìn)制20改成00再send文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-670843.html
到了這里,關(guān)于web安全第六天:繞過(guò)白名單監(jiān)測(cè)實(shí)現(xiàn)文件上傳的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!