我正在通过长期渗透测试报告并解决了绝大多数问题,但我遇到了一个特定的问题,这个问题确实应该通过以前的工作来解决。
为了阻止详细的错误消息,我决定拦截global.asax中的HttpExceptions,如下所示:
Sub Application_Error(ByVal sender As Object, ByVal e As EventArgs)
Dim exc As Exception = Server.GetLastError
If (exc.GetType Is GetType(HttpException)) Then
If exc.Message.Contains("potentially dangerous Request.Path") Then
Response.Redirect("~/")
End If
End If
End Sub
现在是的,这有点肮脏,但它可以工作并拦截这个特殊异常的任何抛出。例如,将浏览器指向https://test.mysite.org/%3cscript%3e_q_q=%27%29%28%27%3c/script%3e,然后站点检测到异常,吞下它并重定向到主页,而不显示错误页面。
但是,如果我转到相同的URL但删除了主机和有效负载之间的斜杠 - 也就是说,https://test.mysite.org%3cscript%3e_q_q=%27%29%28%27%3c/script%3e - 那么异常抛出,您会看到带有可怕详细信息的标准IIS HTTP 500页面例外。我不确定为什么会出现这种情况,我可以做些什么来拦截它 - 在所有其他情况下,修复工作都非常有效。
为了在所述情况下拦截此例外,我可以/应该做些什么?我有一种可怕的感觉,HttpApplication所在的管道中正在发生的事情...