使用已知页面但用户提供的 url 参数打开重定向。可能的?

Open Redirect with known page but user-supplied url parms. Possible?

我们正在审查一些安全调查结果,我正在尝试了解有关开放重定向的调查结果。本质上的问题是:在查询组件中使用用户提供的参数重定向到硬编码的已知本地路径是否可以成为开放式重定向?

假设您在 page1.aspx 中有以下内容:

Response.Redirect("/page2.aspx?parm=" + Request["user-supplied-value"]);

page1.aspx 本身可以成为开放重定向吗?是否可以在 page1 的请求中提供任何值,这会导致浏览器忽略重定向的“page2.aspx”路径,而是重定向到用户提供的-重定向查询部分的值 url?

请注意,我指的不是 page2.aspx 然后获取 parm 的值并无意识地重定向到它的情况,这是一个开放的重定向。我更多地指的是 SQL 注入中的分号如何终止前导文本并允许您内联注入新语句。我想不出查询部分中的参数值实际上会覆盖路径部分。

明确地说,如果您认为答案是“是的,当您重定向到用户提供的输入时会发生开放重定向”,请再次阅读问题。我不是指的是page2盲目重定向到参数中提供的值的情况。相反,在路径组件是硬编码但用户提供的参数是开放重定向的 page1 中的重定向可以吗?

不可能仅通过操纵参数就使现代浏览器转到与 page2.aspx 不同的页面。因此,我不会将其称为开放重定向,但它仍然可能是一个弱点,具体取决于 page2.aspx 的作用。它也可能以某种意想不到的方式成为实际的开放重定向,例如,如果 page2.aspx 中有 header 注入,攻击者可以注入一个全新的位置 header。或者这可能被用来规避弱 referrer-based csrf 保护。或者它可能只是为攻击者提供一种方法来执行网络钓鱼,方法是在受信任的应用程序屏幕中提供 link 来执行用户不想做的事情。

所以简而言之,这可能只是更复杂攻击的基石 - 但它可能是一个重要的攻击,甚至不是弱点,这完全取决于 page2.aspx。