XSS在线测试环境:
https://brutelogic.com.br/xss.php
这两个站对xss的理解很有帮助!!!
参考链接:
https://www.anquanke.com/post/id/86585
https://www.jianshu.com/p/99cf89bb65c3
开始学习------><-------
XSS简介:
XSS,跨站脚本攻击,Cross-Site-Scripting,由于简写与css(层叠样式脚本)重名,故更名为xss。xss就是基于javascript语句完成恶意的攻击行为。JS可以很灵活的操作html,css和浏览器。这也使得xss的攻击范围很大。
XSS利用方向:
- 盗取用户账号
- 盗取cookie资料
- 劫持用户会话,进行任意操作
- 刷流量,执行弹窗广告
- 传播蠕虫病毒
说实话,以上几种我都不会,只会搞下小框框,毕竟没有违法犯罪牟利的需求。好吧,主要还是因为菜。
XSS的利用原理:
浏览器没有过滤客户端输入的JS语句,导致可以执行JS代码,这就是XSS漏洞。
XSS的简单验证poc:
<script>alert(/xss/)</script>常用
<script>confirm('xss')</script>
<script>prompt('xss')</script>
XSS的分类:
1.反射型xss
反射型xss是非持久性、参数型的跨站脚本,JS代码在web应用的参数中,如我们最常见的搜索框。
2.存储型xss
存储型xss是持久型跨站,不存在某一参数中,写进数据库或文件中等能永久保存数据的地方;并且需要客户浏览器从服务器再请求到这些包含了恶意的XSS代码的页面,这才触发。
3.DOM型xss
DOM型的xss,其攻击的payload是修改受害者浏览器页面的DOM树结构而完成执行。这里由于payload是在浏览器本地修改DOM树,并不会传到服务器上,故DOM型比较难检测。
XSS的构造:构造形式是多种多样的,包括但不限于以下
- 简单的xss:<script>alert(/xss/)</script>
- 伪协议利用:<a href="javascript:alert(/xss/)">touch me!</a> <img src="javascript:alert('xss')">
- HTML事件:这个请参考https://www.w3school.com.cn/tags/html_ref_eventattributes.asp <svg onload=alert(111)>
XSS的变形:对于绕过防护,变形是个技巧,此处不提。
shellcode的调用:
shellcode就是在利用漏洞使所执行的代码,完整的xss攻击,会将shellcode存放在某服务器上,在触发xss时调用shellcode。如<script src="http://localhost/XSS-TEST/normal/xss.js"></script>
小实验:劫持cookie
植入一个存储型xss,待管理员查看或触发时,cookie被发送到hacker服务器上,再利用cookie重放登录。
截图:
- 注册一个xss平台账户,新建一个项目,选择模块,或者自定义模块,对模块好奇的可以展开详情查看代码
- 我在这里选择默认的模块,勾选keepsession,保存下session信息
- 点击完成后就会生成payload,随便选择一个copy下来
- 这里我找了一个带stored xss的靶场,pikachu,https://github.com/zhuifengshaonianhanlu/pikachu,将payload注入进去,页面没有弹框,刷新一下,看不出异常。
- 到xss平台下查看,是否有返回的信息,这个网站卡的可以。。可以看到,返回了cookie信息。