首页 > 其他分享 >jquery DOM型漏洞

jquery DOM型漏洞

时间:2023-04-21 13:22:35浏览次数:37  
标签:jquery hash DOM js 漏洞 版本 CVE

1、漏洞介绍

漏洞编号:CVE-2016-7103、CVE-2015-9251、CVE-2014-6071、CVE-2012-6708、CVE-2011-4969

漏洞环境:jquery

影响范围:

  • 1.x系列版本等于或低于1.12的jQuery
  • 2.x系列版本等于或低于2.2的jQuery

漏洞原理:$(val)形式的jquery代码,由于某些版本的jquery的解析规则存在漏洞,导致将参数val解析为html元素执行,如果其是<img src=1 one rror=alert(‘xss’)>类似的值,会解析触发js。

由于经常搭配hash作为参数被利用,所以称作jquery dom-based漏洞。

2、测试和复现

(1)引入jquery

<script src="http://code.jquery.com/jquery-1.7.2.min.js"></script>

(2)poc

<script>
//(1)基于img标签执行xss,成功执行
$("<img src='xx' one rror='alert(/a1b2/)'>")
//(2)测试script和iframe标签是失败的,没有报错,但是不引入外部js,也不执行js伪代码
$("<script src='test_j.js'><\/script>")
$("<iframe src='javascript:alert(/xss/)'></iframe>")
//(3)img标签执行过程可以拆分
s = "<img one rror='alert(/a1b2/)'>"
obj = $(s)
obj.attr('src', 'xx')
//(4)或者
$("<img one rror='alert(/abc/)'>").attr('src','xx')
</script>
  • 注意,作为$的参数值,可以是直接的字符或者js转义,不能是url编码。且必须是一个直接的html标签,不能添加#等前缀
  • 在Edge、chrom、firefox浏览器都测试成功。

3、漏洞发现和利用

(1)漏洞发现

  • 确定jquery的版本,是否存在该漏洞。
    • 可以查看jquery文件,然后搜索version,是否存在注释或者变量
    • 如果进行了文件重命名或者删除版本信息,可以与jquery库进行比较
  • 存在$(val)形式的js代码,分析参数val的来源,是否可受攻击者控制

(2)漏洞利用

该漏洞一般是基于dom型xss,攻击者将待解析的payload保存在hash部分,但是还需要页面内存在截取#之后的文本,以及对其url解码,否则无法解析。

(貌似,Safari 浏览器js读取hash会自动进行js解码,所以无需再手动对hash进行js解码,直接的$(location.hash))

当然,其他处传递过来的文本也是可以的。

4、漏洞防护

  • 最好的就是升级版本,避开存在该漏洞的版本
  • 其次,尽量避免$中的变量被用户控制
  • 还可以对$中的变量提前进行过滤和实体编码
  • 对jquery文件重命名和删除版本标识,使攻击者无法简单判断版本也是临时之举

标签:jquery,hash,DOM,js,漏洞,版本,CVE
From: https://www.cnblogs.com/wd404/p/17340023.html

相关文章

  • dom4j读写xml
    dom4j读写xmlexample  SAXReaderreader=newDocumentdoc=reader.read(...);ListchildNodes=doc.selectNodes("//Config/Child/ChildNode");for(Objectobj:childNodes){NodechildNode=(Node)obj;Stringname=childNode.valueOf(&q......
  • 迁移学习(PAT)《Pairwise Adversarial Training for Unsupervised Class-imbalanced Dom
    论文信息论文标题:PairwiseAdversarialTrainingforUnsupervisedClass-imbalancedDomainAdaptation论文作者:WeiliShi,RonghangZhu,ShengLi论文来源:KDD2022论文地址:download 论文代码:download视屏讲解:click1摘要提出问题:类不平衡问题;解决方法:提出了一......
  • jQuery的遍历-prev()和next()方法(购物车数量加减)
    jQuery的遍历-prev()和next()方法<divclass="box"id="box"><ahref='#'class="a"><inputtype="text"class="atxt"value="1"><ahref='#'class="......
  • Exp5 信息搜集与漏洞扫描
    Exp5信息搜集与漏洞扫描目录Exp5信息搜集与漏洞扫描1.实验过程记录1.1各种搜索技巧的应用使用GoogleHacking搜索网址目录结构利用搜索引擎的技巧路由侦查1.2DNSIP注册信息的查询whois查询nslookup查询dig域名查询IP2Location地理位置查询IP2反域名查询1.3基本的扫描技术:主机......
  • Exp5 信息搜集与漏洞扫描-20201324
    目录1各种搜索技巧的应用1.1搜索网址目录结构dir_listingbrute_dirs1.2利用搜索引擎的技巧普通检索采用字段设置1.3路由侦查2DNSIP注册信息的查询2.1whois查询2.2nslookup查询2.3dig域名查询2.4IP2Location地理位置查询2.5IP2反域名查询3基本的扫描技术:主机发现、端口......
  • Exp5 信息搜集与漏洞扫描
    目录一.实验信息二.实验内容三.实验知识四.实验过程4.1各种搜索技巧的应用4.1.1搜索网址目录结构4.1.2利用搜索引擎4.1.3路由侦查4.2DNSIP注册信息的查询4.2.1nslookup域名查询4.2.2whois域名查询4.2.3dig查询4.2.3利用IP查看地理位置4.3基本的扫描技术4.3.1主机发现4......
  • 20201226马瑞婕Exp5- 信息搜集与漏洞扫描
    20201226马瑞婕Exp5-信息搜集与漏洞扫描目录1各种搜索技巧的应用1.1搜索某一个网址目录结构1.2通过搜索引擎进行信息搜索1.3路由侦察二、DNSIP注册信息的查询2.1whois命令查询2.2nslookup、dig域名查询2.3IP2Location地理位置查询三、基本的扫描技术:主机发现、端口扫描......
  • unix domain 与本地本地回环在进程间通信中的差异
    前言:127.0.0.1它是一个私有IP,代表的就是你的本机环回地址,其实本质上是绑定在虚拟网卡loopback上的IP。在实际应用中,有遇到在使用本地回环做进程间通讯的时候程序阻塞的情况。比如下面代码(一)本地回环:客户端数据收发程序:staticintsend_recv(char*cmd,int*ret,char*str......
  • 一种基于Unix Domain和TCP连接的跨设备多进程间通信的方法
    ​前言:在linux系统进程间通信的方式有消息,消息队列,管道,内存映射,套接字等多种方式。在Android系统上进行进程间通信主要是使用Binder,其它的还有共享内存,管道,RPC和UnixDomain等方式。但是,在linux中常用的消息队列,在Android等系统上并不能直接的使用,Android上常用的Binder,在其他......
  • java RandomAccess 遍历效率
     RandomAccess 是判断集合是否支持快速随即访问,以下是个测试用例:JDK中推荐的是对List集合尽量要实现RandomAccess接口如果集合类是RandomAccess的实现,则尽量用for(inti=0;i<size;i++)来遍历而不要用Iterator迭代器来遍历,在效率上要差一些。反过来,如果List是SequenceList......