我正在尝试研究和修补 TLS 重新协商漏洞,该漏洞使网站容易受到中间人攻击。但是,我不明白攻击究竟是如何发生的,我觉得一个简单的工作示例会有所帮助。
攻击者如何将数据附加到客户端的请求中?为什么服务器不会将其作为两个请求接收?攻击者和受害者是否需要在同一网络上才能发生这种情况?
有人能提供一个演示中间人攻击的最小工作示例吗?Wget、curl、脚本等等。
感谢您的帮助。
答案1
由于您指定了 TLS 重新协商,我假设您指的是 CVE-2009-3555。概念验证代码由 RedTeam Pentesting 发布,可从其网站获取:http://www.redteam-pentesting.de/en/publications/tls-renegotiation/-tls-renegotiation-vulnerability-proof-of-concept-code
此外,YouTube 上还有视频演示它的用法。
答案2
中间人攻击就是字面意思。第三方位于发送方和接收方之间,在传递数据之前对其进行操纵。例如,如果服务器 A 正在向服务器 B 发送数据包,中间人客户端将首先接收该数据包,并使用一些巧妙的过滤工具修改数据包中的特定数据,然后将其传递给服务器 B。
例如,有一天,为了愚人节的恶作剧,我们制定了规则来查找同事的名字“John Doe”或“John”或“Doe”,并将其替换为“Rick Astley”、“Rick”和“Astley”。然后,我们找到了他的 Facebook 个人资料图片的 URL,并编写了一条规则,规定当出现带有此地址的数据包时,将其替换为此地址,这是 Rick Astley 图片的 URL。每次他登录 Facebook 时,它都会显示 Rick Astley 的图片而不是他的照片,并将他的名字替换为 Rick Astley 的名字。我们能做到这一点的唯一方法是在我们的网关上,因为我们的网关可以看到每个人的互联网流量(如果不使用一些诡计,比如 ARP 中毒,它在交换网络上就无法工作)。
无论如何,真正好用的工具是 Ettercap。只需在 Google 上搜索 Ettercap 教程,你就能找到一些简单易用的示例。