首页 > 其他 > 详细

绕过SNI审查

时间:2020-07-10 22:54:34      阅读:896      评论:0      收藏:0      [点我收藏+]

绕过SNI审查

此文章仅为学习SNI相关知识留作记录

SNI(Server Name Indication)

SNI作用

在SSL初期一个服务器只对应一个域名(如下图),一个服务器也只有一个数字证书。但随着虚拟主机的出现,一个物理服务器上可能会管理多个域名,所以一个物理服务器会同时管理多个证书(如下图)。为了让物理服务器区分客户端究竟是要访问它所管理的哪一个虚拟服务器,需要一个域标明客户端所访问的域名,这就是SNI(Server Name Indication)

技术分享图片

SNI抓包验证

  • 以访问百度为例,抓取Client Hello包可以查看到其中的SNI信息,即 hm.baidu.com,这表示客户端要访问的域名。

技术分享图片

SNI审查及如何绕过SNI审查

SNI审查

所谓SNI审查即使用上述的SNI信息过滤以限制某部分的网站的访问,是防火墙措施的一种。

由于是以域名作为过滤关键字,其好处是一次可以过滤一系列网站,相较于ip过滤有着更高的效率。目前使用SNI审查的网站有P站,steam社区等。使用SNI审查的网站有一个特征,使用ping命令访问其ip地址发现是连通的,但是却无法访问。

绕过SNI审查

绕过思路:绕过的方法很简单,只要伪造错误的SNI,或者直接隐藏SNI,这里采用第二种方法。

我们这里使用nginx,利用其反向代理的功能绕过SNI审查来上P站,使用nginx的原因是当nginx反向代理时会默认隐藏SNI的值。

操作步骤

  • 首先在nginx上配置一个服务器,打开nginx目录下conf/nginx.conf文件,添加如下配置
    server {
        listen       443 ssl;
        server_name  www.pixiv.net;

        #这里需要自签一个数字证书,下面为其公钥和私钥
        ssl_certificate      cert.pem;
        ssl_certificate_key  cert.key;

        location / {
            proxy_pass https://210.140.131.220:443;
            proxy_set_header Host $http_host;
        }

上述代码完成了反向代理P站的配置。意为将一个host为www.pixiv.net的网站代理到210.140.131.220(其中210.140.131.220为P站可访问的ip地址)。

  • 使用POSTMAN验证反向代理成果

技术分享图片

成功获取到P站的html页面。

  • 抓包验证是否成功隐藏SNI信息

技术分享图片

从上图我们可以看见当我们连接210.140.131.220时成功隐藏了我们的SNI信息,这样就绕过了SNI审核。

参考资料:
[1] SNI(Server Name Indication)_浴血重生-学习空间-CSDN博客_sni
[2] PIXIV网页版及客户端访问恢复指南 | 樱花庄的白猫!

绕过SNI审查

原文:https://www.cnblogs.com/greapi/p/13281770.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!