网安教育
培养网络安全人才
技术交流、学习咨询
1.XSS定义
XSS攻击通常指的是通过利用网页开发时留下的漏洞,通过巧妙的方法注入恶意指令代码到网页,使用户加载并执行攻击者恶意制造的网页程序。这些恶意网页程序通常是JavaScript,但实际上也可以包括Java、VBScript、ActiveX、 Flash或者甚至是普通的HTML。攻击成功后,攻击者可能得到包括但不限于更高的权限(如执行一些操作)、私密网页内容、会话和cookie等各种内容。
2.XSS危害
植入键盘记录器。(也就是可以记录键盘输入的内容)
攻击受害者所在的局域网。
代理转发流经被攻击者的所有 Web 流量,即实施中间人攻击。
窃取或篡改应用 cookie 用于会话劫持。
更改被攻击者 Web 应用的显示内容。
绕过 CSRF 安全防护措施。
创建包含恶意 JavaScript 代码的虚假网站以及到该网站页面的链接
发送嵌入恶意 Web URL 的电子邮件。
使用 URL 短码隐蔽真实 URL。
3.XSS漏洞产生原因
程序员对网页输入框没有做严格的过滤,导致楼哦对那个的出现,也是互联网上严重性很高的漏洞,原则上只要有输入框救会存在,这就要看开发人员的过滤水平的高低了。
1.反射性XSS
(1)什么是反射型XSS
反射性XSS就是在页面的输入框中,在没有被过滤的情况下,写入JS脚本标签,在前端页面中显示效果,因为是非持久性的所以,当客户端进入网页的时候,脚本就执行一次,下一次就不会继续执行了。
通常情况下利用的位置是在网站的输入框,url框等
(2)演示
首先这里用皮卡丘靶场作为演示场。
<1>.测试特殊符号是否报错 <>“”
<2>.发现报错who is <>“”,i don't care!
<3>.打开控制台查看前端代码
看到这里你在输入框的输入特殊字符被识别为一个语句输出
<4>.写入标签代码<script>alert(“我是最帅的”)</script>
这里有一个地方要注意,输入框被限制了长度,需要在控制台自行改动一下
<5>.复制连接新开一个页面试一下
<6>.新打开的链接显示跳出了弹框
<7>.那么我们刷新页面试一下
刷新后的url
这时候刷新页面后 上面的url发生了变化,这也说明了反射型XSS的特性,非持久性
2.DOM型XSS
(1)什么是DOM型XSS
在JS中可以改变正规HTML的框架和文本。JS对页面进行操作的时候,是需要有一个接口对HTML页面进行连接。这个中间桥梁就是DOM,在这个中间更改一些代码,可以进行一些操作。这就是DOM型XSS。
通常这个利用的位置是在网页输入框
(2)演示
<1>.输入特殊符号检测<>//""
页面显示what do you see?
<2>.打开终端查看代码
在这里我们是可以看到有一个闭合方式的存在。
<3>.尝试闭合"<script>alert("我是最帅的")</script>"
可以看到这里的尝试闭合是没有作用的,没有起到任何作用,将所有代码都当作了链接地址。
<4>.那么我们应该怎么去填写我们的脚本呢?
知道js语法事件的同学肯定是很轻松就能过去的。
<5>.尝试闭合,i love you"'
我们可以非常清楚的看到闭合,那么我进行事件写入看一下。
<6>.事件写入 i love you" ' onclick="alert('我是最帅的')"
我们可以看到这里我们成功的写入了进去。
<7>.点击查看
这里显示了我们添加进去的事件,所以说,在测试时还是需要多了解javascript的用法
3.存储形XSS
(1)什么是存储型XSS
存储型XSS就是应用程序直接将攻击者提交的代码存储到数据库中进行保存,这样就可以永久的显示在用户的前端页面上。(说白了也就是,将代码存到前端页面上,比如说你写上传了一个脚本图片存储在网页上,只要有人进入这个网站,那么就会在前端页面上执行,钓鱼网站同理。)
通过利用位置在网页可以将输入内容存储到数据库的地方。
(2)演示
<1>.特殊符号进行测试 <>""
这里我们可以看到存储进去了.
<2>.打开控制台,查看代码
<3>.写入脚本
<4>.复制链接打开
还是可以显示 ,这不能证明存储型的持久性,我们继续测试。
<5>.刷新页面
还是显示,后面我多次刷新发现只要我不删除就可以一直存在。
1.标签外
(1)直接添加标签绕过
这个请看上面的反射型XSS演示。
2.标签内
(1)构造闭合
这个请看上面的DOM型XSS演示。
(2)填写事件
这个请看上面的DOM型XSS演示。,不同标签下事件是不同的,当遇到的时候百度搜索就可以了解到。
(3)大小写绕过
绕过演示
<1>.输入特殊字符检测
这里检测后很明显是没有饶过
<2>.输入标签尝试
这里也是非常明显,标签内不可以添加标签
<3>.添加事件尝试”/><a href ='javascript:alert("企鹅兄最帅")'>a</a>
这里还是一样的被过滤了,那么尝试其他方法
<4>.大小写绕过尝试"><a Href ='javascript:alert("企鹅兄最帅")'>a</a>
后面的绕过不做演示
(4)双写绕过
<script>
改为
<scr<script>ipt>
(5)编码转译绕过
16进制:x+16进制;
HTML编码:&#+10进制/16进制+;
JS编码:利用String.fromCharCode函数将 Unicode 编码转为字符
base64编码:eval()用于将字符串当作程序执行,atob()用于解密base64
(6)空格、回车、table绕过
空格:
javascript:alert('xss');
可以改为
java script:alert('xss');
回车:
javascript:alert('xss');
可以改为
java
script:alert('xss');
Tab:
javascript:alert('xss');
可以改为
java script:alert('xss');
(7)非闭合标签
<script>
可以改为
<script
(8)利用特性进行绕过
这个对版本的限制很强,这里不同版本问题不一样,这里就不总结了。
企鹅兄在这里希望大家在这里可以学到一些等下,真诚的希望大佬们指出错误,你的建议就是我坚持的动力
版权声明:本文为CSDN博主「跳楼梯企鹅」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_50481708/article/details/124448401
版权声明:著作权归作者所有。如有侵权请联系删除
战疫期间,开源聚合网络安全基础班、实战班线上全面开启,学网络安全技术、升职加薪……有兴趣的可以加入开源聚合网安大家庭,一起学习、一起成长,考证书求职加分、升级加薪,有兴趣的可以咨询客服小姐姐哦!
加QQ(1005989737)找小姐姐私聊哦
原文始发于微信公众号(开源聚合网络空间安全研究院):XSS跨站脚本漏洞原来可以这样理解
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论