【问题标题】:Vulnerability scanner for asp.net flags cross site scripting用于 asp.net 标志跨站点脚本的漏洞扫描程序
【发布时间】:2023-04-20 12:14:01
【问题描述】:

我正在运行 netspark 漏洞测试,它在 url 之后标记

http://localhost:54923/search/'ns='netsparker(0x005AAD)

我无法理解 'ns='netsparker(0x005AAD) 这部分是什么或如何解决此问题我正在清理输入 /search/searchkeyword 以使用户也对输入进行编码

用户在搜索输入框中输入关键字,然后页面被重定向到带有搜索关键字http://localhost:54923/search/apple的搜索页面

1> 不包含 JS 脚本

 if (filterInput.Contains("onmouseover") || filterInput.Contains("script") || filterInput.Contains("</style>") || filterInput.Contains("</script>") || filterInput.Contains("<") || filterInput.Contains("%3c") || filterInput.Contains("?") || filterInput.Contains("%3f") || filterInput.Contains("alert") )
            {
                search = System.Web.HttpUtility.HtmlEncode(filterInput);
                Response.Write("Invalid Search");
                Response.End();
            }

2> 我将以下行添加到 web.config 以使其更安全

<httpRuntime targetFramework="4.5" requestValidationMode="2.0" enable="true"  encoderType="System.Web.Security.AntiXss.AntiXssEncoder,System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>

基于此,我有几个问题

  1. url中的'ns='netsparker(0x005AAD)是什么意思是不是代表js
  2. 如何防止这种情况发生
  3. 我采取的措施很好,或者我需要采取更多措施。

添加几个安全步骤后,netsparket 仍将其标记为 xss。我该如何解决这个问题,使其不被标记

【问题讨论】:

  • 试试 search/javascript:alert(1) 会起作用吗?
  • 您还可以发布更多信息吗?这个字符串是如何在你的后端处理的?可以发一下代码吗?
  • @shawkyz1,当我将/search/javascript:alert(1) 添加到链接asp.net webform 时,会生成一个默认response Server Error in '/' Application. A potentially dangerous Request.Path value was detected from the client (:). ,甚至我正在通过检查它是否不包含任何JS 来清理输入的代码,我也是在此基础上使用 HTML 编码也可以获得额外的保护

标签: asp.net security webforms xss owasp


【解决方案1】:

目前的代码清理基本上是基于黑名单,这是一种不好的做法

在这种特定情况下,您不需要清理,而是对传入的输入进行编码

ASP.Net 输入验证也基于同样不安全的黑名单。

【讨论】:

  • 我在页面上显示之前对输入进行编码,以备不时之需。我不知道你说的黑名单是什么意思
  • 黑名单正是您在这里所做的。例如,当有“onmouseover”或“脚本”时,您指定了您将进行编码。但是如果有 onclick 事件或 onload 事件或任何 javascript 事件怎么办?你不能涵盖所有这些情况
  • 这就是为什么如果您想采用列表方法,最好“允许”一些标签/属性/内容,而不是指定禁止的内容