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

复现dom破坏案例和靶场

文章目录

    • 靶场网址
    • 第一个实验
      • 步骤和原理(代码为示例要根据自己的实验修改)
    • 第二个实验
      • 步骤和原理(代码为示例要根据自己的实验修改)

靶场网址

注册后点击
在这里插入图片描述

第一个实验

此实验室包含一个 DOM 破坏漏洞。注释功能允许“安全”HTML。为了解决这个实验,请构造一个 HTML 注入,该注入会破坏一个变量并使用 XSS 调用 alert() 函数。

步骤和原理(代码为示例要根据自己的实验修改)

转到其中一篇博客文章并创建包含以下锚点的评论:

<a id=defaultAvatar><a id=defaultAvatar name=avatar href="cid:&quot;οnerrοr=alert(1)//">

返回到博客文章并创建包含任何随机文本的第二条评论。下次加载页面时,将调用 alert()。

特定博客文章的页面导入 JavaScript 文件loadCommentsWithDomPurify.js,其中包含以下代码:

let defaultAvatar = window.defaultAvatar || {avatar: '/resources/images/avatarDefault.svg'}

defaultAvatar 对象是使用这种危险的模式实现的,该模式包含逻辑 OR 运算符和全局变量。这使得它容易受到 DOM 破坏。

您可以使用锚标记来破坏此对象。创建两个具有相同 ID 的锚点会导致它们被分组到 DOM 集合中。第二个锚点中的 name 属性包含值 “avatar”,该值将使用 href 属性的内容破坏 avatar 属性。

请注意,该站点使用 DOMPurify 过滤器来尝试减少基于 DOM 的漏洞。但是,DOMPurify 允许您使用 cid: 协议,该协议不会对双引号进行 URL 编码。这意味着您可以注入一个编码的双引号,该引号将在运行时被解码。因此,上述注入将导致 defaultAvatar 变量在下次加载页面时被分配 clobbered 属性 {avatar: ‘cid:“οnerrοr=alert(1)//’}。

当您发布第二篇文章时,浏览器会使用新创建的全局变量,该变量会在 onerror 事件处理程序中走私有效负载并触发 alert()。

第二个实验

本实验使用 HTMLJanitor 库,该库容易受到 DOM 破坏。为了解决这个实验,请构造一个绕过过滤器的向量,并使用 DOM 拼接来注入一个调用 print() 函数的向量。您可能需要使用漏洞利用服务器才能使您的向量在受害者的浏览器中自动执行。

步骤和原理(代码为示例要根据自己的实验修改)

转到其中一篇博客文章并创建包含以下 HTML 的评论:

<form id=x tabindex=0 onfocus=print()><input id=attributes>

转到漏洞利用服务器并将以下 iframe 添加到正文中:

<iframe src=https://YOUR-LAB-ID.web-security-academy.net/post?postId=3 οnlοad="setTimeout(()=>this.src=this.src+'#x',500)">

请记住更改 URL 以包含您的实验室 ID,并确保 postId 参数与您在上一步中注入 HTML 的博客文章的 postId 匹配。

存储漏洞并将其交付给受害者。下次加载页面时,将调用 print() 函数。

该库使用 attributes 属性来筛选 HTML 属性。但是,仍然有可能破坏 attributes 属性本身,从而导致长度未定义。这使我们能够将所需的任何属性注入到表单元素中。在本例中,我们使用 onfocus 属性来走私 print() 函数。

当加载 iframe 时,经过 500 毫秒的延迟后,它会将 #x 片段添加到页面 URL 的末尾。为了确保在执行 JavaScript 之前加载包含注入的注释,延迟是必要的。这会导致浏览器将焦点放在 ID 为“x”的元素上,这是我们在注释中创建的表单。然后,onfocus 事件处理程序调用 print() 函数。

http://www.lryc.cn/news/427130.html

相关文章:

  • 【高校科研前沿】南方科技大学冯炼教授等人在遥感顶刊RSE发文:全球人类改造的基塘系统制图
  • How to run angular CICD on gitlab-runner of wsl?
  • 搭建Java集成开发环境IntelliJ IDEA
  • JS逆向浏览器脱环境专题:事件学习和编写、DOM和BOM结构、指纹验证排查、代理自吐环境通杀环境检测、脱环境框架、脱环境插件解决
  • 驾校预约学习系统--论文pf
  • 交叉编译ARM平台的OpenCV1.0
  • 牛客周赛 Round 56 AK
  • LeetCode 热题 HOT 100 (038/100)【宇宙最简单版】
  • SQLALchemy ORM 的关联关系之 ORM 中的一对一
  • 模型部署 - docker
  • 学懂C++(三十四):深入详解 C++ 高级多线程编程技术中的并发设计模式
  • 大数据产业链图谱_产业链全景图_大数据行业市场分析
  • photonserver 部署相关教程
  • GEE训练:sentinel-1数据的投影、显示和导出
  • 后端学习笔记(七)--MyBatis参数传递
  • uniapp 网络请求自动处理loading
  • 【Solidity】函数的使用
  • 详解golang内存管理
  • C++ 线程 一些同步方式
  • 【开发语言】编译型语言和解释性语言有啥区别?
  • 将A服务器上指定文件夹中的文件,批量同步到B服务器上
  • 2024.8.17
  • 十分钟搭建一个RTMP服务器
  • Spring Boot解决循环注入问题
  • 《数据挖掘》期末考核重点
  • Golang | Leetcode Golang题解之第334题递增的三元子序列
  • HarmonyOs编写一个案例实现一个照片选择(阶段进阶 四种需求 逐一完善)
  • 洗衣机洗衣服一些知识
  • 探索文件系统:高效、可靠的文件管理与访问机制
  • 启程与远征Ⅸ--优化生成式人工智能以满足业务需求的框架