使用隐形 iframe 来解决 CSRF 请求因 “CORS Missing Allow Origin” 而被拦截的问题
2022-11-10 19:27:18389浏览
使用 Burpsuite 生成的 CSRF 表单在提交之后会跳转结果页,容易暴露渗透意图。 使用 Ajax 虽然可以不跳转结果页面,但是很容易被浏览器的同源策略拦截,而跨域资源分享策略(CORS)对发起请求的网站有特殊要求。 那么有没有什么办法可以在神不知鬼不觉的情况下达成渗透目标呢?

一、浏览器的同源策略

1. 什么是同源策略

同源策略是一个重要的安全策略,它用于限制一个源的文档或者它加载的脚本如何能与另一个源的资源进行交互。它能帮助阻隔恶意文档,减少可能被攻击的媒介。

所谓“同源”,指的是两个网址的协议、域名、端口 必须相同,如果有一项不同则视为跨域,跨域的请求会被浏览器拦截,除非服务器在返回的请求头中声明允许来自指定域的请求。

比如在 static.baidu.comwww.baidu.com 发起请求,就会被浏览器拦截。

2. 如何判断被同源策略拦截的请求

在浏览器开发者工具的网络分栏里,可以看到“CORS Missing Allow Origin” ,这就是在说网站没有允许相关跨域请求。

二、解决方案

1. 使用 burpsuite 生成一个 CSRF PoC,记住要勾选“include auto submit script”

2. 复制生成的 PoC 代码到目标 HTML 里面,用编辑器打开

3. 在目标 HTML 里面加上一个带有 name 属性的 iframe 标签

<iframe name="invisibleIframe" style="display:none"></iframe>

4. 将目标 HTML 里面的 form 标签的 target 属性设置为上述 iframe 标签的 name 值

5. 重新进行测试,会发现请求不再被拦截,而且页面也不会跳转,利用成功!

6. 该方法仅适用于已经证实可以通过 form 表单发起请求的情况

这个方法是将 form 提交之后的跳转改成了由 iframe 来打开,如果通过 form 提交也会被拦截,那么隐形的 iframe 并不能解决问题。

友情链接: