利用 Cookie 机制鉴别 Tor Browser 和爬虫

释放双眼,带上耳机,听听看~!

大概从 8 月 6 号中午开始,「暗网交易市场」的爬虫就开始疯狂报「登录失败」的错误,下午抽空修复了一下,发现 deepmix 的站长利用了一个 Cookie 机制配合 Tor Browser 的特性很巧妙地区分出正常访问和爬虫,记录一下浪费在这上面的两个小时。

定位问题展开目录

deepmix 的登录页面需要从入口跳转多次进入,这几次跳转均正常,只有在登录 POST 请求发送之后,又跳转回入口页进入死循环,可以确定问题位于登录 POST 请求处。

一开始判断是网站做了什么反爬措施识别了非浏览器的请求,准备用 Chrome 配合 Burp 抓包看看有什么区别,但是 Chrome 也出现了同样的问题,无限跳转入口页。

Tor Browser 是一个把 Tor 和 Firefox 打包在一起魔改后的浏览器,按理说和正常浏览器是没什么区别的,不应该出现 Chrome 也被识别出来问题,只能重点抓 Tor Browser 的包来看,但 Tor Browser 的代理必须配置到 Tor 的监听端口上,不能配到 Burp 里,只好在调试工具里看。

171f2e555064c9
14251ed89657fe

非常明显,Chrome 登录时 POST 请求只带了 3 个 cookie,而 Tor Browser 登录时会带走 6 个 cookie。

19e171e2555f1b

网站可以根据 POST 请求中的 Cookies 轻易鉴别出 Tor Browser 和其余请求。

原理展开目录

为什么 Chrome 请求的时候会少 3 个 cookie 呢?这就要注意少的那 3 个 cookie 的特殊之处了,缺少的 phpbb3_nspa_kphpbb3_nspa_sidphpbb3_nspa_u 都有一个 secure 属性。

标记为 Secure 的 Cookie 只应通过被 HTTPS 协议加密过的请求发送给服务端。但即便设置了 Secure 标记,敏感信息也不应该通过 Cookie 传输,因为 Cookie 有其固有的不安全性,Secure 标记也无法提供确实的安全保障。从 Chrome 52 和 Firefox 52 开始,不安全的站点(http:)无法使用 Cookie 的 Secure 标记。

因为 Chrome 访问时判断请求地址是 HTTP 协议,带有 secure 标记的 cookie 不传送,导致登录失败,而爬虫的 session 机制一般都是遵循标准,也同样不带有这 3 个 cookie 而失效。

Tor Browser 修改了浏览器的安全判断,当通过 Tor 网络访问时,均认为是安全链接。deepmix 借用了 Tor Browser 的这一特性,在入口页跳转的过程中塞进去 3 个 secure 的 cookie,达到在注册、登录等关键页面上拦截爬虫的效果。

177c5f71e26995

修复展开目录

修复这个问题也很简单,只需要重置所有 cookie 的 secure 属性即可。

for c in session.cookies:
    c.secure = False

参考链接展开目录

人已赞赏
漏洞播报

打造自己的 RSS 生成服务

2020-1-28 1:07:26

新闻中心漏洞播报

RE100 Re4newer

2020-1-28 1:11:33

免责声明:我们致力于保护作者版权,部分文字/图片来自互联网,无法核实真实出处,如涉及版权问题,请及时联系我们删除[139-1017-3248]。从该公众号转载本文至其他平台所引发一切纠纷与本站无关。支持原创!
0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索