Cómo dejar de revelar directorios web en ASP.Net MVC

3

Hemos creado una aplicación web utilizando ASP.Net MVC3 y SQL Server 2008 que tiene funciones como pago con tarjeta de crédito, etc. Contratamos a un tercero para que realice una evaluación de vulnerabilidad y pruebas de penetración.

Tenemos un buen informe con pocos problemas de seguridad. Hemos solucionado todos los problemas excepto uno.

En ese informe dice que nuestra aplicación revela directorios web como 'Admin / Contact / Details' '/ Areas / Admin / Styles /'. No es un tema importante. Pero nuestra administración también quiere arreglar eso ...

Cualquier idea para resolverlo correctamente y rápidamente. Aprecie si alguien puede arrojar algo de luz sobre esto.

    
pregunta Gayan Perera 01.12.2014 - 12:15
fuente

2 respuestas

4

Es un escenario típico con .NET MVC: las URL amigables para los motores de búsqueda son el resultado directo de la implementación adecuada. Pero tengamos algo claro: estos no son directorios web, sino rutas MVC, ¿verdad?

Los probadores de lápiz paranoicos a menudo son incómodos cuando la interfaz de administración está expuesta de alguna manera en la URL, ya que puede atraer atención no deseada, o puede ser recolectada y utilizada para difuminar.

Si desea mejorar esto, es posible que deba abusar del motor de enrutamiento ASP.NET para ofuscar la ruta, si su preocupación es que la interfaz de administración está "expuesta", eso sería una solución rápida, pero la ofuscación es Nunca la forma correcta de arreglar las cosas.

Una alternativa es usar un administrador de recursos y el enrutamiento se basa en tokens de recursos, pero eso implicaría modificaciones importantes en la aplicación. Cada recurso tiene su propia ID de token de recursos y se puede generar dinámicamente cuando un usuario inicia sesión. Luego, cada recurso (página, estilo, imagen) es un enlace al administrador de recursos. Luego, obtener una hoja de estilo se verá así:

<link rel="stylesheet" type="text/css" href="/Resource/80af9420ab0401-00291844a/91009abff01">

Lo mismo se aplica a las URL. Esto puede generar una gran cantidad de gastos generales y un rendimiento deficiente, escalabilidad deficiente, etc. No lo recomiendo , pero en estos días la administración solo escucha a los "consultores" externos a los que les pagan y se niega. para reconocer el talento interno.

Desafortunadamente, a veces es una cuestión de compromiso: la seguridad no debe ser el resultado de escalabilidad o rendimiento deficientes ...

    
respondido por el Milen 01.12.2014 - 13:44
fuente
1

Si estos son directorios, puedes ocultarlos. Un buen artículo está aquí: Cómo resolver la tiranía de las respuestas HTTP 403 a la navegación de directorios en ASP.NET :

  

Es posible que no sepa esto, pero una respuesta HTTP 403 cuando navega a un directorio vacío es un grave riesgo para la seguridad.

     

¡¿Qué ?! Quiere decir que si voy a mi sitio web que tiene una carpeta de "scripts" donde coloco todo mi JavaScript y tengo la navegación del directorio deshabilitada (como debería hacerlo) y el servidor devuelve un 403 "Prohibido" (que debería hacerlo), ¿Estoy poniendo mis cosas de Internet en riesgo de ser pwned ?!

El resumen de cómo hacer esto fue agregarlo a web.config :

<system.web>
  <customErrors>
    <error statusCode="404" redirect="/Error/PageNotFound?foo=bar" />
  </customErrors>
</system.web>
<system.webServer>
  <rewrite>
    <outboundRules>
      <rule name="Change location header" patternSyntax="ExactMatch">
        <match serverVariable="RESPONSE_location" pattern="/Error/PageNotFound?foo=bar" />
        <action type="Rewrite" value="/Error/PageNotFound" />
      </rule>
    </outboundRules>
  </rewrite>
  <httpErrors errorMode="Custom">
    <error statusCode="403" subStatusCode="14" path="/Error/PageNotFound" responseMode="Redirect" />
  </httpErrors>
  <defaultDocument enabled="false" />
</system.webServer>

Si el informe hace referencia a Rutas MVC en lugar de a directorios, aún podría responder con un mensaje estándar Page Not Found para que el usuario no esté informado de la presencia de la página de administración. Tenga en cuenta que esto no es una seguridad real y no debe utilizarse en lugar de asegurar adecuadamente las páginas de administración (me doy cuenta de que parece estar al tanto, pero si alguien más encuentra su pregunta, pensé que lo aclararía). Luego, los usuarios administradores deberán iniciar sesión utilizando la página de inicio de sesión y no podrán ir directamente a las páginas de administración y se les solicitarán sus credenciales.

    
respondido por el SilverlightFox 02.12.2014 - 12:16
fuente

Lea otras preguntas en las etiquetas