A adição de relaxedUrlToFileSystemMapping="true"
ao nó httpRuntime no web.config permitiu que essa URL fosse processada pelo ASP.Net MVC conforme o esperado.
<system.web>
<httpRuntime relaxedUrlToFileSystemMapping="true" />
</system.web>
Este URL faz parte de uma varredura de conformidade pci e está sinalizando a página de erro asp.net muito esparsa retornada, que no site ativo é um código de status 500 e o texto
Server Error in '/' Application.
Runtime Error
Description: An exception occurred while processing your request. Additionally, another exception occurred while executing the custom error page for the first exception. The request has been terminated.
Ao executar o site no visual studio, no entanto, obtenho um 404 e o texto
Server Error in '/' Application.
The resource cannot be found.
Description: HTTP 404. The resource you are looking for (or one of its dependencies) could have been removed, had its name changed, or is temporarily unavailable. Please review the following URL and make sure that it is spelled correctly.
Requested URL: /WEB-INF./web.xml
Version Information: Microsoft .NET Framework Version:4.0.30319; ASP.NET Version:4.0.30319.18044
Eu tentei ignorar esse URL no roteamento e mapeá-lo para nossa rota 404 /error/not-found
, temos erros personalizados com um redirecionamento padrão para /error/internal
. Eu também tentei usar uma tag de localização para negar o acesso, bloqueando-a com a filtragem de solicitações e usando um manipulador com esse caminho para capturar a solicitação.
Eu tentei esta reescrita, também tentei a mesma regra de bloqueio e redirecionamento, mas eu ainda recebo a mesma página de erro do asp.net. A imagem é cortada, mas a regra é ^.*\./.*$
e corresponde à URL que estou tentando filtrar (também tentei simplesmente WEB-INF
).
Alguma ideia de como posso obter este URL para mostrar a nossa página de erro personalizada?
A adição de relaxedUrlToFileSystemMapping="true"
ao nó httpRuntime no web.config permitiu que essa URL fosse processada pelo ASP.Net MVC conforme o esperado.
<system.web>
<httpRuntime relaxedUrlToFileSystemMapping="true" />
</system.web>
No IIS, por padrão, mensagens de erro detalhadas são exibidas para clientes locais, e é por isso que você pode ver essas mensagens via Visual Studio, mas recebe o erro 500 remotamente.
Para alterar, no Gerenciador do IIS, clique no site afetado, clique em "Páginas de erro" na visualização de recursos e, no painel à direita, selecione "Editar configurações de recursos". Você poderá então selecionar "páginas de erro personalizadas" e configurar as coisas dessa maneira.
Editar: também há uma vulnerabilidade com o Tomcat:
<servlet-mapping>
<servlet-name>FileServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
Encontre isso no seu arquivo web.xml e comente. Isso impedirá que alguém acesse /WEB-INF./ e acesse seus arquivos. Note que / WEB-INF / deve lançar um 404 apropriado.