一、XSS类型
基础类型
- 反射型(非持续)
- 存储型(持续)
- DOM-BASE
拓展类型
- jquery XSS
- MXSS
- UXSS
- PDF XSS
- Flash XSS
- 上传XSS 等
常用标签参考:https://www.freebuf.com/articles/web/340080.html
二、攻击利用
- 盲打
- Cookie盗取
- 凭据窃取
- 页面劫持
- 网络钓鱼
- 权限维持
三、安全修复
- 字符过滤
- 实例化编码
- HttpOnly
- CSP防护
- WAF拦截
四、类型演示
1. 反射型XSS
不存入数据库,点击恶意 URL 就触发,一次性。
反射型.png2. 存储型XSS
存入服务器数据库,所有人访问页面都中招,危害最大。
存储型.png3. DOM型XSS
数据不经过服务器解析,完全在浏览器 DOM 里篡改渲染。
DOM型.png案例:TaoCMS 3.0.2 存储型XSS漏洞
- 环境:PHP7.4 + MySQL5.4 + TaoCMS 3.0.2
- Payload:
aaa')+alert(1)+(' - 输入并点击回复后触发XSS,属于存储型XSS。
taocms.pnglocalStorage类型
用户输入的内容存储在本地存储中,关闭浏览器消失。
localstroage1.png
localstroage2.pnginnerHTML 场景常用 payload
innerHTML 动态插入时,<script> 标签不会执行,常用事件型 payload:
<img src=x onerror=alert(1)>
<iframe src=x onerror=alert(1)>postMessage XSS
实现不同窗口跨域通信,漏洞产生于接收消息的 message 事件没有校验 event.origin 消息来源。
postMessage.png攻击全部发生在受害者浏览器本地,postMessage 跨域投递消息;b.com 未做来源校验和输出过滤,攻击者构造 a.com 诱导受害者访问,通过 iframe 载入 b.com 并投递恶意消息,窃取受害者在 b.com 的资产。
五、其他类型XSS
1. 文件触发型-XSS
文件触发型.png2. SVG-XSS
浏览器可以解析 SVG 格式的图片,如果在其中插入恶意 JS 代码,会被解析执行。
3. PDF-XSS
上传的 PDF 被植入 JS 动作代码,受害者使用支持 PDF JS 的阅读器打开时,会触发 JS 代码执行。
pdf1.png
pdf2.png4. Flash-XSS
SWF XSS:Flash 脚本接收 URL 可控参数,无过滤调用浏览器 JS 接口,借 Flash 作为桥梁,执行浏览器端恶意 JavaScript。