La vulnerabilidad Full Path Disclosure …

fpd

Según OWASP:

Full Path Disclosure (FPD) vulnerabilities enable the attacker to see the path to the webroot/file. e.g.: /home/omg/htdocs/file/. Certain vulnerabilities, such as using the load_file() (within a SQL Injection) query to view the page source, require the attacker to have the full path to the file they wish to view.

Según Acunetix:

Description
By injecting unexpected data into a parameter. it’s possible to generate an error that will reveal the full path of the script.

Impact
A remote user can determine the full path to the web root directory and other potentially sensitive information.

Si bien esta vulnerabilidad no es peligrosa, es una ayuda para obtener información que nos permitirá a explotar otro tipo de vulnerabilidades como por ejemplo Local File Include, por ejemplo en el caso que publiqué hace un tiempo del sitio de Veramonte, en el cual la combiné con una Directory Traversal.

La clásica forma para lograr explotar esta vulnerabilidad es transformando las variables sospechosas pasadas por GET a arreglos, por ejemplo: https://sitio.com/index.php?module=login&action=blabla → https://sitio.com/index.php?module[]=login&action=blabla. Seguramente, si el sitio está mal desarrollado, lo que hará el sistema es intentar incluir el archivo “login”,”login.php”, “login.inc.php”, etc obteniendo el nombre del fichero desde la variable “module” y si esta variable es un arreglo, mostrará un error o un warning donde podremos ver el path completo del sitio.
Otra forma muy común es, teniendo el mismo caso anterior, remplazar “login” por cualquier cosa: https://sitio.com/index.php?module=asioansiuabnasi&action=blabla, entonces el sistema intentará incluir el fichero “asioansiuabnasi” y como no existe, pues mostraráun warning o error.

Este error nos puede otorgar información como el nombre de usuario, nombre del framework o del “sistema” que se está usando y ruta física donde se encuentra. Este método nos va a servir para buscar otras “puertas de entradas” al sitio web, por ejemlo mediante la dirección IP y el nombre de usuario: https://200.55.55.55/~usuario pudiendo generar otro tipo de errores o buscar otro tipo de vulnerabilidades.

Hace un tiempo descubrí un bug (hasta el momento no estaba reportado) en un plugin para WordPress muy usado, que me revela la ruta exácta de la instalación del CMS. Pronto escribiré algo al respecto.

3 comentarios

  1. mmm…si, alguna vez caché este problema. pero…¿cómo se soluciona? ¿que configuración hay que hacer para que php no muestre la ruta?

  2. @vladimir prieto: Hola! Bueno, a ver…. depende. La solución óptima sería modificar el código y hacer las valdiaciones correspondientes.. pero ya, pensemos que el codigo no lo hicimos nosotos y corresponde al CMS o a algun plugin que estemos usando, entonces puedes deshabilitar la opcion de php que te muestre los errores.
    La configuracion que debes tener en el php.ini es:
    display_errors = Off

    saludos

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.