使用DOM破坏启动xss

目录

实验环境:

分析:

找破坏点:

查看源码找函数:

找到了三个方法,loadComments、escapeHTM 、displayComments

loadComments

escapeHTM

displayComments:

GOGOGO 


实验环境:

Lab: Exploiting DOM clobbering to enable XSS | Web Security Academy (portswigger.net)

分析:

找破坏点:

第一个输入框可以看见是<texarrea>;不能插入语句.:

 构造一个语句试试

 <img src=1 οnerrοr=alert(1)>bxbxbxb

可以看到onerror被过滤掉了,所以就不能在这里注入了:

查看源码找函数:

主要看.js,因为js可能会出现DOM破坏的点;找到了这个东西,看看:

loadCommentsWithDomClobbering.js

找到了三个方法,loadComments、escapeHTM 、displayComments
loadComments

将   <>'"  过滤为实体编码;这意味着不会再走进标签开始状态,恶意代码不会在这生效了:

escapeHTM

XMLHttpRequest()这个类是js的请求方法的总结

建立了一个request请求,监听了一个onreadystatechange ,将返回的requesText用json进行解析,解析完后调用displayComments进行展示;

就是做一个提交然后解析后展示。

displayComments:
  1. 获取DOM元素:首先,通过document.getElementById("user-comments")获取一个HTML元素,这个元素将作为容器来显示所有的评论。

  2. 遍历评论数组:使用for循环遍历传入的comments数组,每个元素代表一个评论。

  3. 创建评论部分:对于每个评论,创建一个section元素,并设置其class属性为comment

  4. 创建段落元素:在section元素内部创建一个p元素,用于显示评论内容。

  5. 处理头像:获取评论中的头像URL,如果评论中没有提供头像URL,则使用默认头像。头像URL被插入到一个img标签中,并添加class="avatar"

  6. 创建头像容器:创建一个div元素,用于包含头像的img标签。

  7. 将头像添加到容器中:将头像的HTML代码添加到div元素中

发现问题:

如果没有头像的话会使用默认的头像 ,如果能去到defaultAvatar这里,就有可能闭合下面的src

let defaultAvatar = window.defaultAvatar || {avatar: '/resources/images/avatarDefault.svg'}
let avatarImgHTML = '<img class="avatar" src="' + (comment.avatar ? escapeHTML(comment.avatar) : defaultAvatar.avatar) + '">';

GOGOGO 

window.defaultAvatar这个东西可以创造,如何去创造呢?

根据前面的知识,这是一个两层的层级关系,我们可以用 HTMLCollection 来操作

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

这里注意  "  需要进行 HTML实体编码,用 URL 编码的话浏览器会报错

Failed to load resource: net::ERR_UNKNOWN_URL_SCHEME

这样评论以后我们可以在自己的评论处看到:

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

好像并没有实现:(需要再评论一次,再次获取头像时会被   ↑  这个覆盖掉)

cid:提交一个不存在的伪协议,后面的语句不会被编码为Unicode的形式去,会顺利的进入到HTML中,随着HTML解码被解出。

 

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MySQL库表的基本操作

目录 1.库的操作1.1 创建数据库1.2字符集和校验规则①查看系统默认字符集以及校验规则②查看数据库支持的字符集③查看数据库支持的字符集校验规则④校验规则对数据库的影响 1.3操纵数据库①查看数据库②显示创建的数据库的语句③修改数据库④数据库删除⑤备份和恢复⑥还原注意…

C库函数signal()信号处理

signal()是ANSI C信号处理函数&#xff0c;原型如下&#xff1a; #include <signal.h>typedef void (*sighandler_t)(int); sighandler_t signal(int signum, sighandler_t handler); signal()将信号signum的处置设置为handler&#xff0c;该handler为SIG_IGN&#xff…

物联网(IoT)详解

物联网&#xff08;IoT&#xff09;详解 1. IoT定义简介2. IoT工作原理3. IoT关键技术4. 物联网与互联网区别5. IoT使用场景6. 开源物联网平台7. 参考资料 1. IoT定义简介 首先第一个问题&#xff0c;什么是物联网&#xff08;IoT&#xff09;? 物联网&#xff08;英文&#…

LabVIEW光纤水听器闭环系统

开发了一种利用LabVIEW软件开发的干涉型光纤水听器闭环工作点控制系统。该系统通过调节光源频率和非平衡干涉仪的光程差&#xff0c;实现了工作点的精确控制&#xff0c;从而提高系统的稳定性和检测精度&#xff0c;避免了使用压电陶瓷&#xff0c;使操作更加简便。 项目背景 …

thinkphp5实现弹出框(下拉框选项动态赋值)

效果图 原理 先执行接口获取动态数据&#xff0c;然后在 layer.open的success回调函数中动态添加html代码片段&#xff0c;通过如下方法&#xff0c;将动态生成的代码插入指定的div中&#xff0c;实现动态赋值的效果。 // 动态获取的数据 var data ......;// 弹出框配置 lay…

【BUU】[NewStarCTF 2023 公开赛道]Final -CP读取文件内容

漏洞检测 访问首页发现是ThinkPHP5 的站点 用工具扫描一下,发现存在ThinkPHP5.0.23 RCE漏洞 访问验证,写入shell 成功写入shell. 根目录发现flag,但是权限不足 提权获取flag 准备提权,这里一开始尝试了find,但是find权限不足 尝试采用cp命令,移动到web目录,发现访问还是…

基于web的物流管理系统--论文pf

TOC springboot473基于web的物流管理系统--论文pf 第1章 绪论 1.1 课题背景 二十一世纪互联网的出现&#xff0c;改变了几千年以来人们的生活&#xff0c;不仅仅是生活物资的丰富&#xff0c;还有精神层次的丰富。在互联网诞生之前&#xff0c;地域位置往往是人们思想上不可…

基于深度学习的图像特征优化识别复杂环境中的果蔬【多种模型切换】

文章目录 有需要本项目的代码或文档以及全部资源&#xff0c;或者部署调试可以私信博主项目介绍图像特征优化方法模型原理及实验对比模型训练每文一语 有需要本项目的代码或文档以及全部资源&#xff0c;或者部署调试可以私信博主 项目介绍 基于深度学习的图像识别技术广泛应…

清影智能开源版CogVideox:开源文本到视频生成模型的探索

人工智能&#xff08;AI&#xff09;领域的创新一直在不断推进&#xff0c;而下一个前沿领域&#xff0c;很可能就是文本到视频生成模型。在不久的将来&#xff0c;我们将会看到许多中小型公司推出自己的文本到视频生成模型&#xff0c;这一技术将会迅速发展。而这正是为什么当…

Java | Leetcode Java题解之第350题两个数组的交集II

题目&#xff1a; 题解&#xff1a; class Solution {public int[] intersect(int[] nums1, int[] nums2) {Arrays.sort(nums1);Arrays.sort(nums2);int length1 nums1.length, length2 nums2.length;int[] intersection new int[Math.min(length1, length2)];int index1 …

建筑工程项目管理系统-计算机毕设Java|springboot实战项目

&#x1f34a;作者&#xff1a;计算机毕设匠心工作室 &#x1f34a;简介&#xff1a;毕业后就一直专业从事计算机软件程序开发&#xff0c;至今也有8年工作经验。擅长Java、Python、微信小程序、安卓、大数据、PHP、.NET|C#、Golang等。 擅长&#xff1a;按照需求定制化开发项目…

Java——反射(4/4):反射的作用、应用场景(案例需求、实现步骤、代码实现)

目录 作用 应用场景 案例需求 实现步骤 代码实现 作用 基本作用&#xff1a;可以得到一个类的全部成分然后操作。可以破坏封装性。最重要的用途是&#xff1a;适合做Java的框架&#xff0c;基本上&#xff0c;主流的框架都会基于反射设计出一些通用的功能。 通过反射能够…

JVisualVM 基础知识与配置详解(图文界面)

目录 前言1. 基本知识2. 下载配置3. 测试 前言 对于Java的基本知识&#xff0c;推荐阅读&#xff1a; java框架 零基础从入门到精通的学习路线 附开源项目面经等&#xff08;超全&#xff09;【Java项目】实战CRUD的功能整理&#xff08;持续更新&#xff09; 1. 基本知识 …

[Meachines] [Easy] Bastion SMB未授权访问+VHD虚拟硬盘挂载+注册表获取NTLM哈希+mRemoteNG远程管理工具权限提升

信息收集 IP AddressOpening Ports10.10.10.134TCP:22, 135, 139, 445, 5985, 47001, 49664, 49665, 49666, 49667, 49668, 49669, 49670 $ nmap -p- 10.10.10.134 --min-rate 1000 -sC -sV PORT STATE SERVICE VERSION 22/tcp open ssh OpenSSH fo…

multimodel ocr dataset

InternLM-XComposer2-4KHD InternLM-XComposer2-4KHD a light-weight Vision Encoder OpenAI ViT-Large/14Large Language Model InternLM2-7B, 这篇论文采用的是一种动态分辨率的输入&#xff1b; 全图有一个global view,resize到336*336&#xff1b; 然后把图片resize再pad…

Kubernetes群集部署

Kubernetes概述 是一个开源的Docker容器编排技术 源自于google的borg2015年7月kubernetesv1.0正式发布调度计算集群节点&#xff0c;动态管理节点上的作业使用[labels]和[pods]概念&#xff0c;将应用按逻辑单元分组 主要用途 自动化部署、扩展和管理容器应用资源调度部署管理…

计算机毕业设计pyspark+django+scrapy租房推荐系统 租房大屏可视化 租房爬虫 hadoop 58同城租房爬虫 房源推荐系统

用到的技术: 1. python 2. django后端框架 3. django-simpleui&#xff0c;Django后台 4. vue前端 5. element-plus&#xff0c;vue的前端组件库 6. echarts前端可视化库 7. scrapy爬虫框架 基于大数据的租房信息推荐系统包括以下功能&#xff1a…

Windows下串口编程与单片机串口设备通信(win32-API)

一、前言 串行通信接口&#xff0c;通常简称为“串口”&#xff0c;是一种数据传输方式&#xff0c;其中信息以连续的比特流形式发送&#xff0c;每个比特在不同的时间点被传输。这与并行通信形成对比&#xff0c;在并行通信中&#xff0c;多个比特同时通过多个线路传输。串口…

学习笔记 韩顺平 零基础30天学会Java(2024.8.15)

P512 ArrayList底层源码2 P513 Vector注意事项 最近有点懈怠&#xff0c;要去新的环境上学了&#xff0c;有点焦虑&#xff0c;调整状态ing&#xff0c;准备开始研一&#xff0c;希望能继续本科的荣耀&#xff01;&#xff01; PS&#xff1a;本科应该算是荣耀的吧哈哈哈哈哈

html 首行缩进2字符

1. html 首行缩进2字符 1.1. 场景 在Html开发中让一段文字&#xff08;富文本等&#xff09;首行缩进两个文字&#xff0c;可能在前面加上8个“ ”&#xff0c;因为过去对CSS不熟悉&#xff0c;这种方法实现虽然比较直接&#xff0c;但是文字多的时候会有很多“ ”充斥在代码中…