网站可以通过浏览器访问局域网/本地主机中的计算机吗?如何阻止它们?

信息安全 网络 网页浏览器 防火墙 javascript 网络扫描仪
2021-08-16 23:30:03

问题 1:在浏览互联网时,网站是否可以通过我的浏览器执行访问托管在 Localhost 或 LAN 上的网站或服务的代码?

问题 2:此外,来自 Intranet 网站/服务的数据是否可以通过远程站点通过我的 Web 浏览器运行的代码被抓取/黑客/窃取?

问题 3:现代 Web 浏览器是否可以防止此类攻击?如何保护?

问题4:如何隔离浏览器访问本地主机和内网?

4个回答

大多数浏览器不区分 WAN、LAN 和本地主机。这意味着它们对从 WAN 到 LAN 的跨站点请求应用与 WAN 上的不同站点之间或同一 LAN 上的不同站点之间相同的策略和限制。

这尤其意味着像CSRF这样的跨站攻击是可能的,而且这种攻击在实践中也使用了很多年——例如大规模攻击通过浏览器劫持你的路由器

虽然CSRF只能导致不需要的操作(例如更改路由器的 DNS 设置),但不能单独用于从其他攻击中窃取数据:如果您有一个可通过 WebSockets 访问的内部站点,则默认情况下也可以访问它从外部使用浏览器作为蹦床(Cross-Origin WebSocket)。内部站点将明确需要检查请求的来源以停止此访问(即默认情况下是开放且不安全的)。其他使渗漏成为可能的攻击是针对内部站点的XSS攻击或DNS 重新绑定此外,明确设置跨域策略的不安全设置(CORS) 在内部站点上也可用于渗出。使用 Flash 可能会有更多可能。

由于大多数浏览器不区分内部站点和外部站点,因此很难阻止这种访问。这意味着预计内部站点具有与外部站点相同的保护。即使是用于保护内部 LAN 免受外部攻击的外围防火墙通常也不会阻止此类访问,因为这些攻击在大多数防火墙不可见的层上起作用。

限制此类访问的一种方法是使用多个浏览器(或配置文件)——一个用于内部站点,一个用于外部站点。可以通过仅允许通过显式代理访问 Internet 来限制访问:一个浏览器将为所有站点配置代理,因此只能访问外部站点,前提是该代理不允许访问内部站点。另一个浏览器没有配置代理,因此可以在内部但没有外部站点。这种严格的分离阻止了外部和内部通过浏览器进行的跨站点访问。但它可能会影响大多数环境中的可用性。

是的,在您的 LAN 或本地主机上运行的站点和服务可以(有时)通过浏览器中的恶意攻击者进行访问。除了 Cyber​​nard 提到的浏览器中的错误之外,还有其他(更常见的)攻击使这成为可能。

请记住,恶意 javascript 在浏览器中运行,因此它可以攻击您的浏览器可以访问的任何内容:这包括 localhost 和您的 LAN。那里的应用程序可以拒绝精心设计的请求。

DNS 重新绑定攻击

DNS 重新绑定攻击中,攻击者使用将引用两个不同 IP 地址的主机名。首先,它将引用他们的服务器,他们将从该服务器加载一个包含 javascript 的恶意页面。javascript 将等待,然后向同一主机名发出另一个请求,但与此同时,DNS 服务器将该主机名使用的 IP 地址更改为 localhost 或 LAN 上的 IP。由于主机名保持不变,恶意 javascript 可以轻松访问本地资源,并且可以从您的本地主机或 LAN 读取数据。

这不是理论上的问题:Tavis Ormandy 刚刚在 Transmission BitTorrent 客户端中发现了这样一个漏洞它被用来攻击默认设置的路由器

某些 DNS 服务器(包括某些路由器内置的服务器)通过在来自 Internet 的响应中不接受“本地”IP(RFC1918 和 localhost)来提供针对此的保护。

跨站请求伪造

如果攻击者只想更改您的 Web 应用程序的状态并且该应用程序容易受到跨站点请求伪造(CSRF) 的攻击,那么他们可以向该站点发出请求,甚至无法读取页面的内容。CSRF 在 OWASP 前 10 名中,所以这几乎不是一个不常见的错误。

错误的 CORS 设置

利用CORS允许跨域请求的应用程序可能配置错误,并允许来自浏览器中运行的恶意站点的跨域请求。虽然肯定不是您的 LAN 或本地主机所独有的,但它们仍然会受到影响。

在浏览 Internet 时,网站可以通过我的浏览器执行访问托管在 Localhost 或 LAN 上的网站或服务的代码吗?

在其他答案中有一些关于 DNS 重新绑定、CSRF 等的好信息。但是,我很惊讶没有人提到网络扫描。JavaScript 可用于扫描您的整个本地网络,并可以确定哪些端口在哪些主机上打开。

这是一个执行此操作的示例网站:http ://www.andlabs.org/tools/jsrecon.html

请注意,网站可以在未经您许可或不知情的情况下执行此操作。

此外,如果您正在运行任何本地服务(例如 redis、memcached、elasticsearch),它们通常也会受到浏览器的攻击,如本文所示:https ://bouk.co/blog/hacking-developers/

数据可以写入这些服务,但 CORS 会阻止从它们读取数据,因此这就是 DNS 重新绑定攻击的来源。

此外,来自 Intranet 网站/服务的数据是否可以通过远程站点通过我的网络浏览器运行的代码被抓取/黑客/窃取?

与上面类似,这取决于目标 Web 服务器设置的 CORS 策略。这可以通过 DNS 重新绑定绕过。

现代网络浏览器是否可以防止此类攻击?如何保护?

并不真地; 正如其他人所说,浏览器并没有真正区分广域网和局域网,也不一定要这样做。虽然 CORS 有所帮助,但我们已经看到它可以通过 DNS 重新绑定绕过。

如何从浏览器中隔离 Localhost 和 Intranet 访问?

唯一真正的解决方案是禁用所有不受信任的 JavaScript。NoScript 扩展适用于主流浏览器,并且相当可配置。

我想您也可以尝试将您的 PC 与网络的其余部分隔离,并且可能有一种方法(使用 iptables)可以阻止您的浏览器访问本地服务。但是,我怀疑这会很乏味。

问题 1:在浏览互联网时,网站是否可以通过我的浏览器执行访问托管在 Localhost 或 LAN 上的网站或服务的代码?

是的,不容易,只能通过某种黑客攻击。

黑客非常聪明,并且一直在努力利用网络浏览器中的漏洞。如果他们以零日访问您的浏览器,他们很可能会注入代码并让它执行。因此,每次尝试都可以利用越来越多的访问权限。大多数黑客会注入远程桌面病毒,以便他们可以看到桌面并与之交互,但并非总是如此。

问题 2:此外,来自 Intranet 网站/服务的数据是否可以通过远程站点通过我的 Web 浏览器运行的代码被抓取/黑客/窃取?

是的,不容易,只能通过某种黑客攻击。

问题 3:现代 Web 浏览器是否可以防止此类攻击?如何保护?

数十、数千或更多工时的测试。让安全研究团队以各种可能的方式检查每个浏览器,看看有什么问题。然后让他们报告它,以便浏览器团队可以修复它。他们还赞助黑客大会上的活动,为攻击支付真钱赏金。如果漏洞利用足够好,它可以为带来黑客攻击的研究人员或团队带来 10,000 甚至一百万美元。

他们甚至有 fuzzer,向网络浏览器抛出随机数据,以查看是否有任何中断或以意想不到的方式运行。

高级零日变得越来越少,但非常聪明的人仍在研究它们。零日漏洞利用的宝库正在被邪恶的黑客组织囤积,如果价格合适,他们愿意出售。

问题4:如何隔离浏览器访问本地主机和内网?

  • 沙盒软件和虚拟机
  • 使用所有内容的最新版本。
  • 防火墙 不要将未经测试和未经证实的扩展加载到您的浏览器中。
  • 防病毒和 rootkit 检测器
  • 身份识别系统

我带着一点理智结束了这个可怕的信息。

顶级网络浏览器都经过了彻底的测试,并不断修补他们的代码。虽然答案是肯定的,但他们可以进入,但如今这非常困难。通常需要团队来查找和利用顶级浏览器 firefox、chrome 和 edge 的漏洞。通常需要几个月的专门研究才能找到弱点。即使这样,也可能需要几个月的时间才能将其转化为有效的漏洞利用。与此同时,白帽子,好人,越来越接近找到相同的东西并解决问题。这可以抵消黑客数月的辛勤工作。 这不再是一项微不足道的任务。