gpt4 book ai didi

c# - Request.PathInfo 问题和 XSS 攻击

转载 作者:行者123 更新时间:2023-11-30 17:34:36 27 4
gpt4 key购买 nike

由于 API 限制,我有几个网站仍在 .NET 3.5 上运行。今年我们最终会将这些站点迁移到最新的 .NET 版本。其中一项渗透测试表明可能存在 XSS 漏洞。有问题的 URL 是:

Location: http://www.foobar.com/basket.aspx/scripts/searchresults.aspx

Method: GET

Vulnerable Parameter: name of an arbitrarily supplied URL parameter

基本上,basket.aspx 之后的任何内容(如 scripts/searchresults.aspx)都会导致问题。据我所知,Request.PathInfo 将尝试查找路径并最终到达 searchresults.aspx(如果 .aspx 页面存在)但我所有的 CSS 和脚本都可以' 由于相对路径而被发现。该页面基本上中断了。目前尚不清楚这如何导致 XSS 漏洞。然而,它确实破坏了页面。

我的问题:是否需要 Request.PathInfo?在我的初步测试中,如果我检查 Request.PathInfo,我可以确定它可能是一个错误的 URL 请求:

FooBar.Global pageObj = obj;

if (obj.Request.PathInfo.Length > 0)
{
Response.Redirect("~/sitemap.aspx", true); // bad url send to site map
}

最佳答案

Is Request.PathInfo needed?

ASP.NET WebForms 不需要 PathInfo。 It can be helpful for search engine optimization ,但如果您不使用它,请继续并禁用它。您可以添加代码片段,也可以安装 UrlScan并将 AllowDotInPath 选项设置为 0。

How could this cause an XSS vulnerability?

您的页面可能容易受到 Relative Path Overwrite (RPO) 的攻击如果满足所有这些条件,则攻击:

  1. 攻击者可以在页面的某处注入(inject)内容(例如,博客评论)。
  2. 您的页面通过相对路径引用 CSS 样式表。
  3. PathInfo 已启用。

通过将 PathInfo 附加到 URL,攻击者可以使您的页面加载自身作为样式表,因为 ASP.NET 将 Page.aspx/Master.css 解析为 Page.aspx,而不是 Master .css。由于 CSS 的松散(设计)解析规则,攻击者的内容可能被解释为有效的 CSS,这对于允许 CSS 中的 JavaScript 的旧版 Internet Explorer 尤其不利。即使在现代浏览器中,恶意样式表也可以注入(inject)误导其他用户的内容。

I want to use PathInfo. How can I mitigate this vulnerability?

使用绝对路径引用所有 CSS 样式表。例如,您可以调用 ResolveUrl具有应用程序相对路径(以 ~/ 开头的虚拟路径)的方法:

<link href='<%= this.ResolveUrl("~/App_Themes/MySite/Master.css") %>' rel="stylesheet" type="text/css" />

警告:不要使用 ResolveClientUrl方法,因为它返回一个相对路径。

关于c# - Request.PathInfo 问题和 XSS 攻击,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42211237/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com