2010-04-06 67 views
4

我正在尝试编写一个程序,验证从机器发出的所有cookies实际上是否属于它们来自的域。这是检测基于cookie的恶意攻击(如XSS)的更大安全项目的一部分。这个项目的主要障碍实际上是检测即将发生的cookie。有人能指出我正确的方向来监控HTTP信息流量的cookie信息吗?有关该项目的其他信息:这是一个用C语言和大量脚本语言编写的Windows应用程序。非常感谢帮忙。如何监控cookie是否发送至域名以外的域?

+0

我的应用程序本身不发送也不接收cookie。我的程序只是在后台运行,并验证它所运行的计算机上发送的所有cookies都会转到它们来自的域。理想情况下,无论客户端可能使用哪种浏览器,此应用程序都需要工作。因此,我认为它需要嗅探来自我电脑的任何和所有HTTP流量的cookie信息。然后,一旦找到cookie信息,请验证它是否与它来自同一个域。因此,我的问题是:如何监控任何和所有cookie的传出http流量? – Bsaltafo 2010-04-06 18:46:35

+2

您提出的安全系统是不可能的。你不能以这种方式控制客户的行为。此外,XSS有效载荷可以在传输时对cookie进行编码,因此即使您可以嗅探客户端的流量,您也永远无法找到您正在查找的会话ID。 – rook 2010-04-06 19:12:56

+1

+1修补您的XSS。它更容易。 – 2010-04-06 19:15:37

回答

0

您无法在传出的请求中嗅探cookie。假设你为正常的会话id格式获得正确的正则表达式,它仍然不能解决任何问题。攻击者只会闯入几个请求并逃避你的过滤器。或者他可能会以某种方式加密它。

如果它是一个具有XSS漏洞的电子邮件/论坛网站,攻击者可以将cookie发布到同一个公共网站,然后阅读会话标识符。你的过滤器并不聪明,因为即使它在请求中检测到一个cookie,它也会被发送到同一个网站..所以你不能触发异常。

有无数的方法来规避你的过滤器。我不认为它是一个可行的项目。

1

您可以使用Firefox加载项来阅读浏览器正在使用的所有Cookie,浏览器会知道它拥有哪些Cookie以及拥有它们的域。然后,您可以修改Tamper-Data来嗅探所有传出的http请求并查找cookie值,进一步您可以放弃请求或在传输之前对其进行修改。

这将从来没有停止攻击者。攻击者在传输之前对Cookie进行混淆/编码/加密是微不足道的。

HttpOnlyCookies是一个更好的(但不完整)解决这个问题。如果设置了这个头部元素,并且浏览器支持它,那么JavaScript将无法访问document.cookie。但是攻击者可以使用XmlHttpRequest来伪造对系统的请求,从而在经过验证的会话中“骑”。

你应该修补XSS,防范XSRF,使用https为整个会话并启用HttpOnlyCookies。我建议您阅读以下文章:A3:“破坏的身份验证和会话管理”The Owasp Top 10 for 2010.

0

您可以通过让代理服务器运行流量并记录所有内容,来浏览浏览器发送的非SSL内容。如果您愿意忍受“不安全的证书”警告,您可以让代理拦截SSL。另一方面,如果说域名服务器在你附近遭到攻击,谁知道你的浏览器真的在哪里发送东西。

我同意其他人暗示这样的窃听不一定会证明什么。此外,一个任性的应用程序可能会传输一些内容,但由于混淆,您会错过它。