V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
通过以下 Referral 链接购买 DigitalOcean 主机,你将可以帮助 V2EX 持续发展
DigitalOcean - SSD Cloud Servers
lehui99
V2EX  ›  VPS

问了下内部人员阿里云的机房备案白名单技术细节,想到了继续使用 HTTP 并且绕过备案的方法

  •  
  •   lehui99 · 2014-02-23 15:19:51 +08:00 · 1838 次点击
    这是一个创建于 3731 天前的主题,其中的信息可能已经有所发展或是发生改变。
    一直好奇为何自己修改hosts文件可以访问不备案的域名,而做了域名指向后就被TCP Reset了,对阿里云服务器来说这两个情况看到的数据包完全是一样的,阿里云是怎么区分这两种情况的。最近问了下阿里云的内部人员,才搞清楚技术细节。
    原来阿里云的机房白名单工作原理是在TCP连接建立(TCP的3步握手成功)后对浏览器发出的第一个数据包进行的检测,而且是黑白名单进行检测,不是仅通过白名单进行检测。检测步骤如下:
    ================================
    1、如果不是HTTP协议则放行。
    2、如果不包含Host字段则放行。
    3、如果Host字段为IP格式则放行。
    4、如果Host字段在白名单内则放行。
    5、如果Host字段在黑名单内则发送TCP RST。
    6、如果Host字段不在黑名单内则去进行域名解析,放行此次连接(怪不得刚做好域名指向的时候是可以访问的,过了几分钟再访问就永远被Reset了)。如果之后域名解析的结果指向了阿里云,则将此域名加入黑名单,否则不加入黑名单(怪不得本地修改hosts文件永远可以访问没有备案的域名)。
    由于只对TCP连接后的第一个数据包进行检测,所以想到了个绕过的办法,就是把Host字段放到第二个数据包内。在不通过代理服务器的情况下能想到的方法就是将HTTP请求弄得很大,这样由于超过了MTU的最大值(Internet上最大MTU通常是1500左右),Host字段就很可能跑到第二个数据包内了。这样既绕过了黑白名单检测,Web服务器又能正确响应请求。
    通过在未备案域名的主页后添加一长串参数(比如 http://www.XXXXXX.com/?hfhsdhjdjfdkjdjkf.............. ),参数的长度为1600,果然即使做了域名指向访问未备案的域名也永远不会被Reset。
    ================================
    然后我就想到了个既可以让用户直接访问主页不用输入一长串参数或路径,又能将阿里云当服务器访问未备案域名的方法:
    ================================
    1、将网站所有内容放在很深的子目录内,保证路径长度超过1500(比如12个长度为128字节的目录)。
    2、开一个新的子域名(比如 web.XXXXXX.com ),指向阿里云。
    3、找一个国外的免费空间做跳转,跳转到指向阿里云的子域名和很深的路径(比如 http://web.XXXXXX.com/fhskjdhfksjdhkf/fhskdjfhsjkdfh........... )。
    4、将主域名指向那个免费空间,用户访问主域名自动跳转到阿里云。
    ================================
    试验了一下,果然可行!不用HTTPS就能绕过备案。
    BTW,阿里云的黑白名单都是对主域名进行的记录,比如访问了 www.XXXXXX.com 后被检测到了域名指向阿里云,那么黑名单内记录的是 XXXXXX.com 而不是 www.XXXXXX.com ,所以之后即使访问 asdf.XXXXXX.com 也会被Reset。黑名单有时效,过了一段时间如果黑名单内的域名没有被访问就会清除黑名单,之后再被访问就再进行域名解析。有时候阿里云的域名解析失败会延迟几个小时进行再次解析,所以有时候(概率很小)域名指向做了几个小时之后才被Reset。
    18 条回复    1970-01-01 08:00:00 +08:00
    est
        1
    est  
       2014-02-23 15:39:22 +08:00
    感谢反馈。相关部门会在1秒钟内补上这个漏洞。
    stackoverflow
        2
    stackoverflow  
       2014-02-23 15:44:37 +08:00
    很赞,可行,但是对用户和搜索引擎都不友好,而且这个漏洞修补得非常容易。

    话说是哪位技术人员泄漏的检测策略呀?
    lsylsy2
        3
    lsylsy2  
       2014-02-23 15:46:46 +08:00
    1s改漏洞……
    lsylsy2
        4
    lsylsy2  
       2014-02-23 15:49:44 +08:00
    5、如果Host字段在黑名单内则发送TCP RST。

    山寨墙啊
    lehui99
        5
    lehui99  
    OP
       2014-02-23 16:49:56 +08:00
    @est 1秒。。。。。。


    @stackoverflow 不能把别人供出来。。。。。。


    @lsylsy2 阿里云不备案现在就是直接Reset的
    ovear
        6
    ovear  
       2014-02-23 17:34:14 +08:00
    似乎对目前几乎所有的白名单都有用。。。啧啧
    oott123
        7
    oott123  
       2014-02-23 18:18:50 +08:00 via Android
    …自己搭个 dns 服务器,看看阿里云负责解析域名的 ip 是多少,针对那个 ip 段把 dns 的包 drop 掉,你看这事靠谱么…
    lsylsy2
        8
    lsylsy2  
       2014-02-23 18:25:08 +08:00
    @oott123 re……
    oott123
        9
    oott123  
       2014-02-23 18:41:57 +08:00 via Android
    @lsylsy2 没看懂…?re 是什么意思, reply 么?
    akira
        10
    akira  
       2014-02-23 18:49:09 +08:00
    何必呢,不想备案,丢国外就是
    ovear
        11
    ovear  
       2014-02-23 18:49:10 +08:00
    不可行,dns只能拿到递归dns的地址,如果阿里云使用4个8啊,4个114怎么办
    Mihuwa
        12
    Mihuwa  
       2014-02-23 19:40:53 +08:00 via iPhone
    思路很好。
    lehui99
        13
    lehui99  
    OP
       2014-02-23 20:24:26 +08:00
    @ovear 国内的白名单机制都是这个原理吗?

    @oott123 看11楼的回复,可能不行。
    oott123
        14
    oott123  
       2014-02-23 23:32:40 +08:00 via Android
    @ovear 不是有 edns-client-subnet ?
    ovear
        15
    ovear  
       2014-02-23 23:55:50 +08:00
    @oott123 4个114没有实现,其他大部分要求去申请合作才能授权,比如说opendns,4个8都要申请。。
    ovear
        16
    ovear  
       2014-02-23 23:56:37 +08:00
    @lehui99 看样子都是这样的=。= 试了几家了。。
    quake0day
        17
    quake0day  
       2014-02-24 00:05:29 +08:00
    赞一下楼主钻研的精神。思路很好。
    lehui99
        18
    lehui99  
    OP
       2014-02-24 21:08:56 +08:00 via Android
    看来国内的机房白名单都能用这种方式绕过啊。。。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1309 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 17:45 · PVG 01:45 · LAX 10:45 · JFK 13:45
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.