阅读
跨域资源共享CORS和同源策略SOP是您的朋友。由于有问题的 javascript 不是由 托管的http://127.0.0.1
,因此它将违反 SOP,并且浏览器中 CORS 的默认规则将阻止 javascript读取响应。这涵盖了您的直接问题 - 默认情况下您受到保护。
写作
然而,“阅读”部分是关键。浏览器在任何情况下都会向服务器发出请求。CORS 唯一做的就是阻止 JavaScript 接收响应。因此,CORS 会阻止攻击者从其他地方读取数据,但不会阻止攻击者将数据发送到其他地方。
因此,如果您的应用程序由于收到请求而要进行重要的状态更改,您最终可能会遇到问题。有用的是,CSRF 令牌可以保护您免受此类攻击。需要明确的是,攻击者甚至不需要 JavaScript 就可以在其他地方发送请求 ( h/t mti2935 ) -img
嵌入在您访问的页面上的标签可以触发GET
对任何服务器的请求,从而使攻击者特别容易触发不希望的操作如果您的服务器根据GET
请求执行操作。
因此,如果您的应用程序在没有 CSRF 保护的情况下进行状态更改,并且攻击者知道端点,您可能会遇到麻烦。对于现实生活中的示例,不安全且常用的路由器已像这样被利用。考虑由家庭路由器托管的 Web 应用程序中的这个假设 URL:
http://admin:admin@192.168.1.1/enable_remote_admin_access
它启用远程管理员访问(也就是调整配置,以便人们可以从互联网登录到路由器的管理部分),它有一个众所周知的 URL,它需要基本身份验证,并且路由器附带一个众所周知的默认用户名和密码(管理员:管理员)。结果,攻击者创建了一个网页,该网页使一个简单的GET
请求上述网址。攻击者不会从路由器获得响应(因为 CORS),但路由器仍会收到请求,如果存在漏洞,现在已准备好接受来自 Internet 的管理员连接。然后恶意脚本用受害者的 IP 地址打电话回家,另一个快速脚本检查他们的 IP 地址以查看现在是否有可访问的路由器。如果是这样,那么攻击者已经悄悄地完全控制了受害者的家庭网络,因为他们访问了错误的页面并且使用了一个常见的、易受攻击的路由器。
算术
当然,自定义应用程序更难像这样利用,因为它是一种盲目的攻击。如果没有关于他们正在攻击什么的信息,几乎不可能取得任何成功。因此,实际风险水平可能很低,因为攻击面非常小。不过,这里有一些注意事项需要牢记:
- 如果发生有针对性的攻击,所有赌注都将取消。如果攻击者知道您在本地运行一些存在漏洞的软件,他们只需要您访问错误的链接即可。
- CORS 配置很重要。如果您的本地应用程序使用过于宽松的 CORS 配置,那么攻击者可以读取结果并“浏览”您的应用程序。
- 根据网络的配置方式,可能会进行一些基本的端口扫描。
- DNS 重新绑定( h/t EdC ) 可能允许攻击者绕过 SOP 和 CORS。这种攻击可能存在障碍,但坚定的攻击者可能会通过使用它来提高成功几率。