q3rv0

Follow the white rabbit….

LFI+SQLI [Incluyendo Ficheros a Travez De Valores Enteros]

No es necesario que un parametro trabaje con valores tipo “string” para incluir ficheros localmente, hay ciertos parametros que trabajan con funciones como include(), require(), etc pero lo hacen por medio de un valor entero,por ejemplo:

Tenemos la siguiente url:

http://www.webvuln.com/path/index.php?op=11

La cual se encarga de mostrar cierto contenido dependiendo del valor que sea ingresado en el “id”.En este caso el script realiza una sentencia en la base de datos para obtener el nombre del fichero, el cual luego sera pasado a include().

1
2
3
$query=mysqli_query($conexion, "SELECT path FROM archivos WHERE id=".$_GET['id'].";");
$fichero=mysqli_fetch_array($query, MYSQLI_ASSOC);
include($fichero['path']);

Ahora vamos a un caso real.

La vulnerabilidad se da del lado del admin, al ingresar una comilla simple vemos el siguiente error.

El problema es que no podemos realizar un path traversal directamente por lo que se explicaba en lineas anteriores, pero si podriamos comprobar si el mismo parametro es vulnerable a inyeccion de comandos SQL.

Definitivamente si, y nos arroja la columna 3 la cual hace referencia a la seleccion de la ruta del archivo.

Entonces podriamos probar a inyecctar una sentencia para poder divisar cualquier fichero (siempre dentro de los limites) a nuestro antojo.

Veamos el fichero /etc/passwd.

1
http://www.webvuln.com/path/index.php?op=11 union select 1,2,0x2f6574632f706173737764,4,5–

Como dije anteriormente este parametro vulnerable se encuentra detras del panel de administracion, pero hay muchas veces en las que la reglas de un upload no pueden ser evadidas y hay que buscar otra manera de subir una shell, tranquilamente se podria explotar mediante una jpg file inclusion y proseguir con la intrusion.