miércoles, 4 de abril de 2012

Técnicas Avanzadas SQL Injection (3º Parte)

********************************************

Técnicas Avanzadas SQL Injection (1º Parte)
Técnicas Avanzadas SQL Injection (2º Parte)
Técnicas Avanzadas SQL Injection (3º Parte)

********************************************



Buenas a todos!

En este nuevo post sobre técnicas avanzadas en SQL Injection donde veremos cómo es posible leer ficheros mediante este tipo de vulnerabilidad.

Para ello deberemos como siempre encontrar la vulnerabilidad SQLi en la web y después deberemos ver cuántas columnas tiene para poder realizar la inyección de forma correcta.

Una vez tenemos esa información podremos construir una consulta como la siguiente:

...id=1+and+1=0+union+select+1,2



Cuando ya sabemos esta información, cogemos un campo que sea vulnerable, en este caso el 2 por ejemplo. Y en vez de intentar encontrar las tablas o las columnas vamos a leer un fichero del sistema, para ello tendríamos que realizar lo siguiente:

http://localhost/sqli_1.php?id=1+and+1=0+union+select+1,load_file(0x433a5c7072756562612e747874)

El numero que vemos dentro de la función load_file es la dirección del archivo, es decir, en este caso yo estoy leyendo el archivo C:\prueba.txt. Y ese número es la conversión de "C:\prueba.txt" a hexadecimal. Para realizar este proceso podemos utilizar el navegador mantra o alguna herramienta como http://www.seguridadwireless.net/php/conversor-universal-wireless.php.

Una vez tenemos el archivo en hexadecimal lo metemos en dentro de load_file y veremos cómo nos muestra el contenido del archivo por pantalla.

En este caso el contenido como hemos dicho del archivo C:\prueba.txt.



Un ejemplo realmente útil seria cuando el servidor que aloja la web utiliza linux y sin problema podríamos leer el archivo de contraseñas (/etc/passwd) u otros archivos de configuración. Como se puede ver en la siguiente imagen, donde estamos leyendo el archivo /etc/passwd de bnv.gob.ve.



Además de esto, otra gran utilidad seria leer un archivo en php que sepamos que se comunica con la base de datos para obtener el usuario y contraseña que hace consultas a dicha base de datos, asi como mas informacion util. En la siguiente imagen se ve que hemos llamado al mismo archivo que tiene la vulnerabilidad SQLi ya que logicamente se comunica con la base de datos.



Como podemos ver en la anterior imagen hemos obtenido lo que buscábamos xD!

Espero que os haya gustado y en breves tendréis más técnicas avanzadas sobre inyecciones SQL.

Un saludo!
Hykeos.

No hay comentarios:

Publicar un comentario