Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 3 IIS Express(经典模式)或IIS 6上的MVC3返回404和文件扩展名(cgi等) 我试图重新创建一个HP的WebSPECT测试来验证可能的攻击向量。在本例中,它将Crazywwboard.cgi固定到任何url的末尾。在我的应用程序中,当我尝试这样做时,我得到的是IIS 404页面,而不是我的自定义错误页面。此外,在iisexpress404中,我可以看出处理程序被引用为StaticFile。未命中任何控制器甚至路由代码(我通过在每个路由上放置一个空routeconstraint进行测试,该路由的match方法立即返回true,并在那里设置一个断点)。Web.Config基本上是来自MVC3的(除了一些应用程序设置,这些设置与此无关)。我在没有扩展(cgi)的情况下对其进行了测试,代码的行为符合预期。我在应用程序的其余部分使用.NET4无扩展URL,正常行为正常。当我使用cgi时,它给出了IIS的404。是否需要通过web.config替换StaticFileHandler_Asp.net Mvc 3_Url Routing_Asp.net 4.0 - Fatal编程技术网

Asp.net mvc 3 IIS Express(经典模式)或IIS 6上的MVC3返回404和文件扩展名(cgi等) 我试图重新创建一个HP的WebSPECT测试来验证可能的攻击向量。在本例中,它将Crazywwboard.cgi固定到任何url的末尾。在我的应用程序中,当我尝试这样做时,我得到的是IIS 404页面,而不是我的自定义错误页面。此外,在iisexpress404中,我可以看出处理程序被引用为StaticFile。未命中任何控制器甚至路由代码(我通过在每个路由上放置一个空routeconstraint进行测试,该路由的match方法立即返回true,并在那里设置一个断点)。Web.Config基本上是来自MVC3的(除了一些应用程序设置,这些设置与此无关)。我在没有扩展(cgi)的情况下对其进行了测试,代码的行为符合预期。我在应用程序的其余部分使用.NET4无扩展URL,正常行为正常。当我使用cgi时,它给出了IIS的404。是否需要通过web.config替换StaticFileHandler

Asp.net mvc 3 IIS Express(经典模式)或IIS 6上的MVC3返回404和文件扩展名(cgi等) 我试图重新创建一个HP的WebSPECT测试来验证可能的攻击向量。在本例中,它将Crazywwboard.cgi固定到任何url的末尾。在我的应用程序中,当我尝试这样做时,我得到的是IIS 404页面,而不是我的自定义错误页面。此外,在iisexpress404中,我可以看出处理程序被引用为StaticFile。未命中任何控制器甚至路由代码(我通过在每个路由上放置一个空routeconstraint进行测试,该路由的match方法立即返回true,并在那里设置一个断点)。Web.Config基本上是来自MVC3的(除了一些应用程序设置,这些设置与此无关)。我在没有扩展(cgi)的情况下对其进行了测试,代码的行为符合预期。我在应用程序的其余部分使用.NET4无扩展URL,正常行为正常。当我使用cgi时,它给出了IIS的404。是否需要通过web.config替换StaticFileHandler,asp.net-mvc-3,url-routing,asp.net-4.0,Asp.net Mvc 3,Url Routing,Asp.net 4.0,更新:在进行进一步测试时,从应用程序开始请求时开始的.NET组件永远不会被命中。根据我的经验,这意味着永远不会调用web.config中定义的错误页面。我还返回并在我的控制器名称中添加了一个.aspx扩展名(即http:\localhost\myapp\controller.aspx\action\test.cgi),然后url甚至使用“cgi”扩展名输入到.NET组件中。这是对ASP.NET 4/MVC/IIS6无扩展url场景的限制吗?如果有,有什么解决办法吗?我更愿意保持无扩展性,但如果情

更新:在进行进一步测试时,从应用程序开始请求时开始的.NET组件永远不会被命中。根据我的经验,这意味着永远不会调用web.config中定义的错误页面。我还返回并在我的控制器名称中添加了一个.aspx扩展名(即http:\localhost\myapp\controller.aspx\action\test.cgi),然后url甚至使用“cgi”扩展名输入到.NET组件中。这是对ASP.NET 4/MVC/IIS6无扩展url场景的限制吗?如果有,有什么解决办法吗?我更愿意保持无扩展性,但如果情况更糟,我将返回控制器中的.aspx。请理解我无法控制服务器端设置。

将其添加到
Global.asax.cs

routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); // This one is here by default
routes.IgnoreRoute("{resource}.cgi/{*pathInfo}"); // This is your new one
// Other routes go AFTER these two as before.
并确保在web.config中也打开了
customErrors
,我相信您已经打开了

我只是尝试了一下,效果很好(例如,添加任何带有
的内容。cgi
将我发送到我的标准错误页面,而不更改web服务器本身的任何内容)

顺便说一句,请不要将URL更改为在末尾包含
.aspx
,因为这将违背MVC的精神!而且,攻击者只需省略
.aspx
,仍然可以获得404页面,除非您实现我的微小修复

编辑: 如果将其放入
web.config
部分,会发生什么

<add verb="*" path="*.cgi" type="System.Web.Mvc.MvcHttpHandler, System.Web.Mvc, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />

我经历了与您现在经历的相同的事情,这篇文章让我达到了我需要的地方。。。来自haacked.com


+1我不知道这个漏洞。谢谢希望我的答案对你有用。如果是,请将其标记为答案。这在经典模式下不适用于IIS Express,但在集成模式(测试)下也适用于customError。正如我之前所说,在经典模式下,甚至都没有触及.NET组件。我怀疑这是一个我无法更改的服务器配置问题。这是在经典模式下吗?还是IIS 6?我完全按照您指定的那样做了。您是否有足够的控制权来确保web服务器重新启动(例如,如果无法执行
iisreset
,请编辑
web.config
)?此外,我还编辑了我的答案,并尝试了其他内容。这不应该是3.0.0版吗?(我把它改成了3.0.0,1.0.0)并没有效果。没有.NET代码命中。我通过创建一个应用程序_BeginRequest()事件处理程序并放置int x=0来测试这一点;带断点。在经典模式下测试了IIS Express(Win7-64位)和IIS 6(win2003),IIS Express始终会重新启动。应用程序启动总是在第一次请求我的登录页面时被点击-在调试期间通过断点进行验证。对于IIS 6,我完全没有控制权。Richard H说他无法访问web服务器。这就是为什么我试图提供一个不涉及配置IIS的解决方案。这篇文章导致我最初在我的控制器上使用.aspx,然后导致Haack后来写的另一篇关于ASP.NET 4下无扩展URL(这是首选项)的文章。