我正在使用 OWASP ZAP 软件来测试一个简单的 asp.net 站点是否存在漏洞。我收到了我不太了解的格式字符串攻击类型的中等警报。详细来说,我得到了这些信息:
描述:当输入字符串的提交数据被应用程序评估为命令时,会发生格式字符串错误。
网址:http://example.com/page.aspx
范围:ctl00%24ContentPlaceHolder1%24dropType
攻击:ZAP
解决方法:通过适当删除坏字符串重写后台程序。这将需要重新编译后台可执行文件。
其他信息:潜在的格式字符串错误。脚本关闭了 /%s 上的连接
参考:https ://www.owasp.org/index.php/Format_string_attack
ddl是这样的:
<asp:DropDownList ID="dropType" runat="server" >
<asp:ListItem Value="A" Text="SIMPLE A TEXT"></asp:ListItem>
<asp:ListItem Value="B" Text="SIMPLE B TEXT"></asp:ListItem>
<asp:ListItem Value="C" Text="SIMPLE C TEXT"></asp:ListItem>
</asp:DropDownList>
最初我认为问题在于从中获取价值,所以我将代码更改为:
cmd.Parameters.AddWithValue("@type", dropType.SelectedItem.Text)
至:
cmd.Parameters.AddWithValue("@type", Regex.Replace(dropType.SelectedItem.Text, "[^\w\.@-]",""))
但是重新编译并重新运行测试,我仍然收到警报。然后我尝试评论整行代码,只是为了测试,但编译并重新运行测试我仍然有警报。是误报,考虑到现在我在 aspx 页面中只是一个简单的下拉列表,而没有在代码中引用它?
更新:
如果我添加具有相同 ddl 的页面 page2.aspx,则不会收到任何漏洞警报。与导致警报的具有相同 dll 的其他页面的唯一区别是,在其他页面中没有对 page2.aspx 的引用,但在某些页面中,有指向 page.aspx 的链接,即警报页面:
<a href="../page.aspx">
<img src="../img/image.jpg" />
</a>
所以我认为警报在某种程度上是关于那个..