Post79 nn

Explotando la vulnerabilidad LDF (Local File Disclosure)


Logo uri spioni mh 1
Cristian Palma P

Con anterioridad en BacktrackAcademy nos enfocamos en generar una idea sobre la vulnerabilidad de Local File Inclusion (LFI) dicha falla permitiría ejecutar archivos localmente en el servidor y tener una vista de archivos críticos para el sistema como la lista de usuarios, sin embargo existen distintas vulnerabilidades de tipo Local File que pueden ser un riesgo si no las mitigamos oportunamente.

A continuación  se presentará la vulnerabilidad de Local File Disclosure con cual podemos acceder a leer el código fuente de ficheros críticos en el sistema y así analizar su contenido en busca de otro tipo de vulnerabilidades u obtener información relevante para crear un vector de ataque. 

Algunos funciones vulnerables dentro del código podrían ser las siguientes:


    * Readfile() 
    * File()
    * Fgets()
    * Fgetc() 


Un ejemplo de código de esta vulnerabilidad sería la siguiente:



Código PHP vulnerable a  Local File Disclosure 



Local File Disclosure nos permite la posibilidad de leer código fuente de del archivo a través de la función readfile(). Esta vulnerabilidad es muy peligrosa debido a que nos permite leer el origen del archivo y obtener información importante como ftp, mysql logins etc.


A diferencia de los casos Local File Inclusion donde podíamos ver el resultado navegador, normalmente la ejecución de las funciones anteriormente indicadas están asociadas dentro del PHP de descargas, donde nos iremos aprovechando de esta vulnerabilidad para ir descargando los archivos directamente desde el servidor.


En base a lo anterior se presentará el siguiente ejemplo:


Dorks para LDF


1) Existen Dorks asociados a esta vulnerabilidad:


    * inurl:download_archivo.php?file=

    * inurl:download_archivo.php

    * inurl:download.php?file=


Podemos encontrar mas de estas en Google Hacking Database


2) Buscaremos en base al Dork inurl:download.php?file= site:.com.ar y posteriormente procedemos a investigar de manera manual las páginas que posiblemente tengan la una vulnerabilidad Local File Disclosure 


Resultado de la búsqueda


3) Encontrada nuestra víctima copiaremos y a cortaremos la ruta para que el navegador nos descargue el archivo Download.php


Url Original



Url acortada


Ingresando la URL hasta la palabra file= el navegador nos debería descargar el archivo, en caso de ser vulnerable podremos ver el contenido del archivo php




Contenido del archivo download.php


La función php:readfile() no se encuentra configurada de manera segura, permitiendo leer el archivo y revelándonos el código fuente del archivo, adicionalmente de la ruta.


Cómo podemos identificar en la imagen anterior se puede observar los siguientes detalles a considerar: 

    
     * Se puede visualizar la trama del archivo que acabamos de descargar.        
     * Podemos ingresar de manera directa alguna de las siguientes peticiones:        
         * /etc/passwd
         * /etc/shadow “Sin embargo dependerá de los permisos que tengamos para visualizar el contenido”
         * /etc/group


5) De acuerdo a lo anterior ingresamos la siguiente URL www.victima.com.ar/download.php?file=/etc/passwd, si la consulta resulta exitosa nos descargara el archivo passwd con las cuentas del sistema


Descarga del archivo /etc/passwd


6) Posteriormente a la descarga, procedemos a abrir el archivo y ver el contenido.


Contenido del archivo passwd


Como podemos observar el ataque se concluyó exitoso de modo que nos evidencia información sensible de la entidad, lo que podría afectar su credibilidad y fiabilidad por tanto se debe considerar una vulnerabilidad de aspecto crítico.

Adicionalmente también se solicitó el archivo /etc/shadow pero no se pudo concluir de manera exitosa por los permisos insuficientes.



Permiso denegado




Artículos que te pueden interesar