【问题标题】:CSRF attack with FORM GET and IFRAME [duplicate]使用 FORM GET 和 IFRAME 进行 CSRF 攻击 [重复]
【发布时间】:2019-02-26 23:52:17
【问题描述】:

我正在尝试使用以下代码查看网站是否容易受到 CSRF 的攻击

<html>
<body>
<div>
<iframe width="0" height="0" border="0" name="dummyframe" id="dummyframe"></iframe>
<form action="TARGET_SITE" method="GET" id="get_site" target="dummyframe"></form>
<script>
document.getElementById("get_site").submit();
var e = document.getElementById("dummyframe");
if(e != null) {
   alert(e.contentWindow.document.body.innerHTML);
}
</script>
</div>
</body>
</html>

此处添加 iframe 标签是为了避免从 java 脚本提交表单时页面重定向。提交表单时,我确实看到了一个 HTML 响应,其中包含一些我想要访问的有趣信息。

但是我如何访问该 HTML 响应,无论是从 iframe 还是表单标签,示例中的警报窗口会弹出,但它不打印任何内容。

谢谢

【问题讨论】:

  • 它提醒我一个空白警报,但一个有很多行。您的 target_file 文件中有什么内容?
  • 目标是一个类似stackoverflow.com的URL,基本上是一个html响应。
  • 您的问题是您没有将 HTML 响应放入 iframe。那是你想要修复的吗?在这种情况下,我会推荐 AJAX/jQuery。
  • 我的目标是检索正在提交的表单的 HTML 响应(浏览器添加目标站点的 cookie),但没有 iframe 作为目标页面重定向到目标站点。任何检索 HTML 响应的方法都可以回答我的问题。

标签: javascript html forms csrf


【解决方案1】:

如果您只想获取外部页面的 HTML 并将其添加到 &lt;iframe&gt;,那么您需要使用服务器端语言(NodeJS、PHP、Python),因为这个原因(谢谢@Hannes):

由于同源策略,所有常见浏览器都不允许 Javasript 调用访问具有另一个(子)域的任何页面。解决此问题的唯一方法是在您自己的服务器(例如 php 脚本)上设置某种“代理”,该服务器在同一域下运行,从第三个来源获取您想要的信息并将它们打印出来。

取自here。

【讨论】:

  • 不要复制答案...建议将其作为副本关闭
  • 我想要做的就是使用 FORM GET 方法从不同域检索网页(以便浏览器添加 cookie)并访问包含重要字符串的 HTML 响应,这将使攻击成功.该方法不需要使用 iframe。
猜你喜欢
  • 2020-02-16
  • 2019-04-25
  • 1970-01-01
  • 2018-03-05
  • 2020-05-27
  • 2012-07-16
  • 2017-02-03
  • 2013-05-06
相关资源
最近更新 更多