假设我们正在运行一个绑定到 localhost (127.0.0.1) 的服务,目标是只允许本地客户端(即仅来自同一台机器)
可以使用哪些技术来破坏这种安全性,是否有其他措施可以用来强制执行它?
假设我们正在运行一个绑定到 localhost (127.0.0.1) 的服务,目标是只允许本地客户端(即仅来自同一台机器)
可以使用哪些技术来破坏这种安全性,是否有其他措施可以用来强制执行它?
首先也是主要的事情是确保您的主机上的防火墙配置为正确丢弃源或目标地址设置为 127.0.0.1 的传入数据包。
在正常情况下,不应该有来自网络并显示此类地址的数据包。但是,攻击者可能会尝试伪造此类数据包以访问您的本地侦听服务。
我不知道您的机器上正在侦听哪种其他服务,但是如果任何服务可以用作中继,您必须确保它已正确配置以防止将任何内容中继到本地侦听服务。
例如,如果您在此主机上运行 HTTP 代理,攻击者可以使用此代理请求主机“127.0.0.1”:从防火墙的角度来看,这将是从网络到代理服务的合法连接,并且在本地,这将是两个本地服务(代理和目标本地端口)之间的合法通信。这里的 HTTP 代理只是一个例子,这种技术也可以与其他服务一起使用,包括中继连接不是主要功能的服务(例如FTP 反弹攻击是这种威胁的典型例子)。
一个潜在的漏洞是破坏低权限帐户/服务并将其用作访问本地主机绑定服务的枢纽。
为此,我通常更喜欢 UNIX 套接字,因为您可以对它们应用用户/组权限(这将由操作系统透明地处理,用户不必再保留另一个密码)。另外,它们的速度也更快,这使得它们更适合同一台机器上的 IPC。
请注意,某些 UNIX 变体并不总是尊重套接字权限,并且可能需要针对操作系统进行调整(例如增加每个套接字允许的连接数)。
如果服务提供 Web 界面,它可能容易受到 CSRF 攻击、XSS 攻击或“同一站点”脚本的攻击。所有这些都可以通过访问攻击者的外部网站来触发,这本身可能是由恶意广告或网络钓鱼引起的。对于这些攻击,服务是否仅在本地主机上侦听无关紧要,因为只需要本地 Web 浏览器可以访问主机即可。从外部攻击 Intranet 主机也存在同样的问题。
还要考虑主机名 localhost 与 IP 127.0.0.1 并不完全相同(它自然需要先解析),并且在大多数情况下依赖于 hosts 文件中的条目或能够解析 127.0 的解析器/dns 服务器.0.1。所以,确保你在实施安全措施时可以严格指定 127.0.0.1 而不是 localhost,否则你将需要退后一步,还要考虑解析器中的安全问题。