
本文共 1924 字,大约阅读时间需要 6 分钟。
上一篇博客:
目录
-
XSS漏洞概述
- 简介
- XSS危害
- XSS漏洞验证
-
XSS的分类
- 反射型XSS
- 存储型XSS
- DOM型的XSS
-
XSS的构造触发
- 利用【<>】构造HTML、JS
- 伪协议
- 产生自己的事件
- 利用CSS跨站
- 利用其他标签及手法
-
XSS变形
开始
一、XSS漏洞概述
XSS 跨站脚本攻击(Cross-site-scripting)
本来应该缩写为CSS,但是和HTML中的CSS(重叠样式脚本)重名,所以更改为XSS
1.1简介
XSS 作为OWASP TOP 10 之一
主要基于JavaScript完成恶意的攻击行为,JS可以非常灵活的操作html,css和浏览器,这使得XSS攻击的"想象空间"特别大
XSS可以通过精心构造的JS代码注入到网页中,并且由浏览器执行这段JS代码,达到而已攻击的效果
当用户访问被XSS脚本注入的网页,XSS脚本就会被提取出来,用户浏览器就会解析这段XSS代码
XSS的攻击对象是用户和浏览器,前面学习的SQL注入攻击对象则是网站后台数据库
但是XSS漏洞发生在网站服务器
微博、留言板、聊天室等收集用户输入的地方,都有可能被注入XSS代码,都存在遭受XSS攻击的风险
只要没有对用户的输入进行严格过滤,就会被XSS
1.2危害
XSS利用JS代码实现攻击,有很多攻击方法,下面简单列出几种
- 盗取各种用户账号
- 盗取用户Cookie资料,冒充用户身份进入网站
- 劫持用户会话,执行任意操作
- 刷流量,执行弹窗广告
- 传播蠕虫病毒
…
…
1.3XSS漏洞验证
我们可以用一段简单的代码,验证和检测漏洞的存在,这样的代码叫做PoC(Proof of Concept)
PoC —>漏洞的验证与检测
EXP—> 漏洞的完整利用工具
Shellcode—> 利用漏洞时,所执行的代码
payload—> 攻击载荷
- 在sqlmap中叫做—》攻击代码模板
- 在msf中叫做—》Shellcode类似,功能是建立与目标的连接
PoC漏洞检测代码
<script>alert(/xss/)</script>
—》最常用<script>confirm('xss')</script>
<script>prompt('xss')</script>
测试网页代码
代码写在例如网站留言板的位置,点击提交,发现弹窗,我们输入的内容直接被浏览器执行了
二、XSS的分类
大概分为3个类型:反射型XSS、存储型XSS、DOM型XSS
2.1 反射型XSS
非持久性、参数习惯的跨站脚本
反射型的JS代码在Web应用的参数(变量中),如搜索框的反射型XSS
在搜索框中,提交PoC代码,点击搜索,即可触发反射型XSS
注意,提交的PoC会出现在(搜索框行为)search.php页面的keywords参数中
上面的网页留言本栗子就是反射型XSS
2.2存储型XSS
持久性的跨站脚本
XSS代码不是在某个参数、变量中,而是写进数据库或文件等可以永久保存数据的介质中
通常发生在留言板等地方,将恶意代码写入到数据库中,然后为了浏览器触发XSS,需要第二步模拟网站后台管理员,查看留言,第一时间执行XSS代码
当管理员通过留言审核,每次访问留言页面,都会执行代码
2.3DOM型XSS
DOM XSS比较特殊
本地修改DOM树
举栗
只要修改DOM树,浏览器会重新渲染页面
源代码+XSS代码—》新的DOM树代码
三、XSS的构造
其实还有flash构造,但是google开始不再支持flash,故接下来不再详细介绍
3.1利用【<>】构造HTML、JS
可以利用【<>】构造HTML、JS的<script>
标签
例如:<script> alert(/xss/)</script>
上面举栗
3.2伪协议构造
在IE浏览器框直接输入:jsvascript:alert(/xss/);
,利用javascript协议弹窗
测试
除了链接,还可以是按钮、图片等,点击弹框
3.3产生自己的事件
"事件驱动"是一种比较经典的编程思想。
在网页中发生的事件很多,如鼠标移动、点击,键盘输入等,在JS里面都有学习
JS通过这些事件进行响应,我们可以通过事件触发JS函数,触发XSS
事件种类
- windows事件—>windows对象触发,例如
alert
事件 - Form事件—>表单动作触发
- keyboard事件
- Mouse事件
- Media事件
…
…
如<img src='x.jpg' onmouseover = 'alert(/xss/)>
鼠标经过弹窗
3.4利用CSS跨站
3.5其他标签以及手法
四、XSS的变形
绕过XSS过滤器检测
参考:B站千峰
发表评论
最新留言
关于作者
