人妻丰满熟妇AV无码片,岛国AV无码免费无禁网站,丰满岳乱妇一区二区三区,男插女高潮一区二区

php http響應(yīng)拆分漏洞

技術(shù)分享 2019-10-01 00:00:00
http響應(yīng)拆分漏洞常出現(xiàn)于需要header輸出的業(yè)務(wù)流中。此處僅討論php < 5.4的情況下header Location跳轉(zhuǎn)問題(示例見Bug#60227),不討論setrawcookies是否有類似問題(反正我在php 5.2及以上版本會(huì)被php自身攔截)。

根據(jù)參考鏈接中的的歷史剖析:

(1)PHP 5.1.2以下版本必定存在問題。使用(urlencode結(jié)果為%0d%0a)就可以構(gòu)造CRLF攻擊。Bug#60227是以5.1.2版本為分界的,此處采納但本人未驗(yàn)證。

(2)5.1.2 <= php < 5.3.11、5.4.0 <= php < 5.4.1(redhat討論給出的版本范圍)可以繞過內(nèi)建防御。Stefan Esser大牛說只需要(urlencode結(jié)果為%0d)換行即可在Chrome和IE上生效,有時(shí)要配合使用空格(urlencode結(jié)果為%20)?

(3)已經(jīng)完全修復(fù)的版本是從5.3.11和5.4.1開始(redhat討論給出的版本范圍)?本人沒確認(rèn)。

在360網(wǎng)站安全檢測上,這個(gè)漏洞權(quán)重較高,屬高危(http://webscan.#/vul/view/vulid/129 )。但個(gè)人不是很認(rèn)可,因?yàn)椋?

(1)實(shí)際來看和業(yè)務(wù)太緊密,大多不好利用,和“高?!钡目臻g有差別。

(2)5.1.2 <= php < 5.3.11、5.4.0 <= php < 5.4.1(redhat討論給出的版本范圍)的內(nèi)建防御雖然不完全,但已經(jīng)不允許組合使用(php會(huì)報(bào)錯(cuò)從而執(zhí)行不下去)。只使用繞過雖然能控制CSP(Content Security Policy)Header選項(xiàng)或者設(shè)置cookies影響業(yè)務(wù)可用性,但試來試去就是做不到某些教程中的顯示釣魚內(nèi)容或者執(zhí)行腳本(http://www.javaarch.net/jiagoushi/847.htm )——瀏覽器似乎直接Location跳轉(zhuǎn)走了,即使為空也不顯示頁面內(nèi)容,導(dǎo)致無法顯示釣魚內(nèi)容或者執(zhí)行腳本,結(jié)果預(yù)期攻擊失敗,達(dá)不到效果......

另外其演示鏈接“r=%0d%0a%20SomeCustomInjectedHeader%3Ainjected_by_wvs”(參數(shù)r用于header跳轉(zhuǎn)中的Location字段),經(jīng)過測試即使是不完全內(nèi)建防御(比如php 5.2.x)也會(huì)過濾掉%0d%0a(就是),只剩下空格,結(jié)果這行header實(shí)際上沒有任何換行,那這種情況下是否還能攻擊生效,個(gè)人表示懷疑(實(shí)測沒發(fā)現(xiàn)成功)。

檢測網(wǎng)站還給出一個(gè)字符過濾修復(fù)的建議方案,但資源消耗比較大且不合理。這里主要是將它里面的多次正則直接合并為一個(gè),并做成函數(shù)供開發(fā)按需調(diào)用過濾,而不是在所有GET/POST等輸入?yún)?shù)都過濾——如果這樣做的話好多存在換行的需求等業(yè)務(wù)會(huì)出現(xiàn)問題,比如寫文章無法換行等。

function fix_http_header_inject($str){
if(empty($str)){
return $str;
}
return trim(strip_tags(preg_replace('/( |\t|\r|\n|\')/', '', $str)));
}
//echo fix_http_header_inject(urldecode("asdfdas%0d%0a%20asdfdas%0d%0a%20asdfdas%0d%0a%20asdfdas%0d%0a%20"));
咨詢小瓶科技
咨詢我們
頂部