我开发了一个基于 Beancount 的账本托管服务 HostedBeans,欢迎大家来了解纯文本复式记账并试用我的服务。
查看源代码

灰常冷门的攻击方式:跨端口窃取Cookie

大多数网站,在登陆后会通过Cookie来保存登陆状态如果你能够得到其他人的Cookie,你就可以以他的身份来访问网站.

如果你得到了管理员的Cookie,那么你就可以以管理员的身份来进入后台

访问一个网站时,当一条Cookie满足下面三个规则的时候,这个Cookie就会被发送:

  • 该网站的域名与Cookie要求的域名相同
  • 该网页的路径与Cookie要求的路径相同
  • 该网页的连接方式(HTTP/HTTPS)与Cookie的要求相同

注意!这其中没有与端口有关的要求!

也就是说,浏览器认为 http://xxoo.xo/http://xxoo.xo:1234/ 是同一个网站

http://xxoo.xo/ 设置的Cookie,在访问 http://xxoo.xo:1234/ 时也会被发送

这意味着,如果你能够在 xxoo.xo 对应的ip上的其他端口建立Web服务器,并欺骗 xxoo.xo 的管理员访问你的Web服务器,那么你就可以窃取到管理员的Cookie,进而以管理员的身份来访问网站,进入后台.

如果 xxoo.xo 被托管在一个公用的虚拟主机服务器上,这会非常简单,你可以在相同的服务器上购买一份虚拟主机,甚至试用。然后在其他端口建立一个Web服务器。当然,国内的大多低端主机商恐怕不会提供这个功能。

所以我要给我的神马终端(http://what.jybox.net)打个广告,这是一个权限非常灵活,而价格又非常低的虚拟主机.

很好,现在你在 xxoo.xo 所在的服务器上的 1234 端口建立了一个Web服务器,并写了一个记录Cookie的脚本

下面你只需要欺骗 xxoo.xo 的管理员访问 http://xxoo.xo:1234/ 即可

他会随便访问别人发来,而且看起来很奇怪的地址么?

其实你可以做得很隐蔽,你可以去他的网站,发表一个帖子(如果是论坛)或评论(如果是博客),发一个地址为 http://xxoo.xo:1234/xxoo.png 的图片,图片是会在网页打开的时候自动加载的,而 xxoo.png 是你写的记录Cookie的脚本.

如此一来,竟做得神不知鬼不觉,没几个人会检查网页上每个图片的地址的…


我想我有必要再给 xxoo.xo 的管理员一点忠告,想避免这种攻击也并不是很困难

方案1.不要和别人共用服务器,自己购买独立的服务器,独立的IP.

这一条是最简单的解决方案,只要你有钱

方案2. 整个网站都使用HTTPS协议,并设置Cookie仅通过HTTPS发送,不得不说,HTTPS是非常有效的,避免信息泄露的技术。不过SSL证书是非常贵的….

所以,我有必要在这里给JySSL(https://github.com/jybox/JySSL)打一个广告,这是我创立的,(目前)免费的SSL证书颁发机构

方案3. 使用CDN,CDN相当于一个代理,你需要将你的域名指向CDN,而CDN一般只开放80端口,其他端口的通讯都会被丢弃.

撰写评论

如希望撰写评论,请发邮件至 jysperm@gmail.com 并注明文章标题,我会挑选对读者有价值的评论附加到文章末尾。

精子生于 1995 年,英文 ID jysperm.

订阅推送

通过 Telegram Channel 订阅我的博客日志、产品和项目的动态:

王子亭的博客 @ Telegram


通过邮件订阅订阅我的博客日志、产品和项目的动态(历史邮件):

该博客使用基于  Hexo  的  simpleblock  主题。博客内容使用  CC BY-NC-ND  授权发布。最后生成于 2024-04-08.