SCD o Source code disclosure, es una
vulnerabilidad que permite la lectura de ficheros que se encuentren en
el sistema víctima, debido a errores en la programación de páginas que
realizan descargas de archivos. Esto se da debido a que no se hace un
conveniente filtrado de los datos que llegan del cliente,
permitiéndonos obtener cualquier fichero del cual conozcamos su ruta
dentro del servidor.
Un ejemplo de un código vulnerable es el siguiente:
$f = $_GET["f"];
header(“Content-type: application/octet-stream”);
header(“Content-Disposition: attachment; filename=\”$f\”\n”);
$fp=fopen(“$f”, “r”);
fpassthru($fp);
?>
header(“Content-type: application/octet-stream”);
header(“Content-Disposition: attachment; filename=\”$f\”\n”);
$fp=fopen(“$f”, “r”);
fpassthru($fp);
?>
En él se observa cómo
se insertan los datos directamente dentro de la función fopen, sin
ningún tipo de validación o verificación, ocasionando que el fichero sea
descargado sin inconveniente.
A continuación presento la explotación
de este ataque en una página vulnerable. Los datos fueron modificados
para proteger el sitio original.
Se tiene la siguiente ruta: www.ejemplo.com/download.php?id=archivos.pdf
En ella, la variable id recibe el
archivo a descargar, en este caso archivos.pdf, reemplazamos este
documento por el nombre de fichero o página que queramos obtener, para
este ejemplo, el objetivo es encontrar las credenciales de conexión de
la base de datos, para ello le damos como valor a la variable id el
fichero download.php, como se muestra en la figura 1.
En la figura 2 se presenta el código del
archivo, brindándonos información adicional, como lo es el fichero
con_str.php, el cual podría ofrecernos datos sensibles, puesto que es
requerido al cargar la página, pudiendo contener los datos de la
conexión. A continuación, procedemos a su descarga, figura 3.
Como se dijo anteriormente, el fin
principal de la explotación de esta vulnerabilidad es tener acceso a
documentos existentes en el servidor objetivo, para este caso, el
nuestro, era conseguir las credenciales que nos permitirán tener acceso a
la base de datos. Con esta información en nuestras manos solo nos
faltará acceder como un usuario legítimo al sistema. Figura 4 y 5.
Fuente: http://www.flu-project.com/source-code-disclosure.html
No hay comentarios:
Publicar un comentario