一、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 就触发,一次性。

反射型.png反射型.png

2. 存储型XSS

存入服务器数据库,所有人访问页面都中招,危害最大。

存储型.png存储型.png

3. DOM型XSS

数据不经过服务器解析,完全在浏览器 DOM 里篡改渲染。

DOM型.pngDOM型.png

案例:TaoCMS 3.0.2 存储型XSS漏洞

  • 环境:PHP7.4 + MySQL5.4 + TaoCMS 3.0.2
  • Payload:aaa')+alert(1)+('
  • 输入并点击回复后触发XSS,属于存储型XSS。

taocms.pngtaocms.png

localStorage类型

用户输入的内容存储在本地存储中,关闭浏览器消失。

localstroage1.pnglocalstroage1.png

localstroage2.pnglocalstroage2.png

innerHTML 场景常用 payload

innerHTML 动态插入时,<script> 标签不会执行,常用事件型 payload:

<img src=x onerror=alert(1)>
<iframe src=x onerror=alert(1)>

postMessage XSS

实现不同窗口跨域通信,漏洞产生于接收消息的 message 事件没有校验 event.origin 消息来源。

postMessage.pngpostMessage.png

攻击全部发生在受害者浏览器本地,postMessage 跨域投递消息;b.com 未做来源校验和输出过滤,攻击者构造 a.com 诱导受害者访问,通过 iframe 载入 b.com 并投递恶意消息,窃取受害者在 b.com 的资产。


五、其他类型XSS

1. 文件触发型-XSS

文件触发型.png文件触发型.png

2. SVG-XSS

浏览器可以解析 SVG 格式的图片,如果在其中插入恶意 JS 代码,会被解析执行。

3. PDF-XSS

上传的 PDF 被植入 JS 动作代码,受害者使用支持 PDF JS 的阅读器打开时,会触发 JS 代码执行。

pdf1.pngpdf1.png

pdf2.pngpdf2.png

4. Flash-XSS

SWF XSS:Flash 脚本接收 URL 可控参数,无过滤调用浏览器 JS 接口,借 Flash 作为桥梁,执行浏览器端恶意 JavaScript。