一.什么是跨站脚本攻击
是代码注入漏洞的一种,使得攻击者可以通过巧妙的方法向网页中注入恶意代码,导致用户浏览器在加载网页等文档时会执行攻击者的恶意代码。
二.常见XSS漏洞分类
1.按漏洞成因:反射型,存储型,DOM型;
依照输出点的位置:输出在HTML属性中,输出在CSS代码中,输出在JavaScript中
(1)反射型XSS
XSS代码作为客户端输入的内容提交给服务端,服务端解析后,在响应内容中返回输入的XSS代码,最终由浏览器解析执行。
<?php
echo 'you input:' . $_GET['input'];
?>
客户端输入的input值未经任何过滤便直接输出,所有攻击者可以提交:
http://example.com/xss.php?input=<script>alert(/xss/)</script>
alert是弹窗,在测试中,弹窗比较温和,对实验环境破坏小;
结果为/xss/;
(2)存储型XSS
存储型XSS代码会存储在服务端(服务端会将其存储于数据库中),下次请求该网页时不需要再次提交XSS代码。、
(3)DOM XSS
DOM XSS的XSS代码不需要服务端解析响应的直接参与,触发XSS的是浏览器端的DOM解析。
http://example.com/dom.html#<img src=x onerror='alert(/xss/)'>
结果为/xss/;
(4)输出在HTML标签中
XSS攻击Payload输出在HTML属性中时,攻击者需要在闭合相应的HTML属性后注入新属性,或者在闭合标签后直接注入新标签;
(5)输出在CSS代码中
(6)输出在JavaScript代码中
三.防护与绕过
(1)特定标签过滤
(2)事件过滤
(3)敏感关键字(字符)过滤
a.字符串拼接与混淆
b.编码解码
c.location.*,window.name
d.过滤“()”
e.过滤空格
f.svg标签
(4)字符集编码导致的绕过
a.古老的UTF-7与US-ASCII
b.宽字节
c.一些特殊的字符
(5)长度限制
(6)HttpOnly绕过
a.CVE-2012-0053
b.PHPINFO页面
c.Flash、Java
(7)XSS Auditor绕过
(8)内容安全策略(CSP)绕过
a.CSP配置错误
b.unsafe-inline下的绕过
c.严苛规则script-src 'self'下的绕过
d.CRLF导致的绕过
四.危害与利用技巧
XSS漏洞可以实现的功能包括但不限于:
a.窃取用户Cookie信息,伪造用户身份
b.与浏览器DOM对象进行交互,执行受害者所有可以执行的操作
c.获取网页源码
d.发起HTTP请求
e.使用HTML5 Geolocation API获取地理位置信息
f.使用WebRTC API获取网络信息
g.发起HTTP请求对内网主机进行扫描,对存在漏洞的主机进行攻击
五.XSS相关工具及使用
1.Brute XSS:暴力注入XSS工具,用于暴力注入一个参数
下载BruteXSS:https://github.com/rajeshmajumdar/BruteXSS.git(需要搭载python环境)
2.BrupSuit;