Chinaunix首页 | 论坛 | 博客
  • 博客访问: 31555
  • 博文数量: 14
  • 博客积分: 1410
  • 博客等级: 上尉
  • 技术积分: 155
  • 用 户 组: 普通用户
  • 注册时间: 2009-10-07 10:01
文章分类
文章存档

2009年(14)

我的朋友

分类: 系统运维

2009-10-07 11:31:31

墨西哥同学周末很郁闷的在宾馆上网,发现youtube被ban了,于是写个了tool解决这个问题。顺带想到了一种利用 google 统计的漏洞,写在这里了
这个问题实际上是由于 webserver 的 request field limit 造成的。
当 http request header 过长时,webserver 会产生一个400 或者 4xx 错误
Your browser sent a request that this server could not understand.
Size of a request header field exceeds server limit.
如果这些超长数据保存在cookie中,或者能够让用户每次访问的http 头都超长,就会导致用户一直都无法访问该域名,也就是dos了。
sirdarckcat 发现在 google 的统计页面中存在一个 set-cookie 的地方没有控制,类似的地方还有 搜索引擎的参数会导致 referer 过长
这些用户能够控制的地方都会导致 http request field 超长,从而导致服务器返回一个 server limit 的错误.
每个 webserver 之间都有点差异, apache 可能是 8192 字节,具体可以参考这里:

茄子下午测试了一下,发现在IE 8 中可以增加50个 cookie,由于每个cookie的限制是 4k (key, value 对),所以IE8 支持的cookie大小为 204k。 这也是IE 8新增的,以前没这么大。不过这些都远远超过了一般的webserver的默认 server limit 值
btw: apache 对 http request body 的limite 默认是 2G.

值得注意的是,使用XSS,将可以写cookie,从而导致这种 server limit dos 攻击。
我POC了一下:
运行这个脚本后,会在当前域下植入3个cookie,总长度超过8192字节, 之后再请求该域就会无法访问了。
因为是 stored cookie, 所以会导致该用户在清理cookie前一直都无法访问该网站。
阅读(416) | 评论(0) | 转发(0) |
0

上一篇:nfshell

下一篇:扫雷

给主人留下些什么吧!~~