重定向到这样的网址是否安全:“ https://example.com/” + userData?

Bra*_*rks 6 exploit http-redirect

重定向到我自己域上的url时,我可以安全地使用用户数据吗?

假设我拥有example.com。如果正常使用我的应用程序有时需要我将用户重定向到这样的网址,可以吗?

https://example.com/ + userData
Run Code Online (Sandbox Code Playgroud)

无论如何,这可以用来进行攻击,例如运行javascript吗?或重定向到完全不同的域?

出于讨论的目的,我想:

  • 忽略目录遍历攻击
  • 仅考虑影响浏览器的攻击(不包括example.com服务器)

您可以假设我完全不对从用户那里收到的参数进行编码。

编辑:澄清- userData无论如何都不会添加到页面-它仅驻留在URL本身中。

t.m*_*dam 5

评论中所述,这种情况似乎无法通过伪协议javascript:(或data:也可以用于执行JavaScript)进行利用。但是,如果在自定义404页面上example.com输出,则有可能执行反射的XSS攻击userData。假设此页面显示错误消息:

<h1>Page 'userData' not found.</h1>
Run Code Online (Sandbox Code Playgroud)

在这种情况下,如果攻击者提交了JavaScript有效负载(例如<script>alert('xss');</script>),它将在页面上呈现,

<h1>Page '<script>alert('xss');</script>' not found.</h1>  
Run Code Online (Sandbox Code Playgroud)

并且该代码可以由访问者执行。可以通过过滤用户数据来防止这种攻击-无论如何都应该清除用户输入。

由于用户输入已附加到域中,因此开放重定向漏洞利用似乎不太可能,并且漏洞利用尝试应导致404响应。当然,如果还有其他允许任何重定向的本地页面,则攻击者可以在其有效负载中使用它们,例如:

vulnerable/page?url=http://attacker.com
Run Code Online (Sandbox Code Playgroud)

请注意,仅仅因为我无法确认漏洞利用程序,并不意味着代码不容易受到攻击,具体取决于服务器配置。我们可以通过基于有效和受信任位置的列表过滤用户数据来防止开放重定向攻击。这可能还有助于针对服务器的其他几种攻击,例如目录遍历,文件包含和服务器端请求伪造攻击。