En Inyecciones SQL de tipo Inbound donde tenemos un procedimiento de listado la cual nos permite volcar en pantalla la información extraída es preferible realizar la explotación manual ya que realmente usar alguna tool puede ser demasiado ruidosa y podríamos levantar algunas alertas sin embargo existen excelentes herramientas como SQLmap nos permiten realizar esta tarea de manera optima ya podemos manipularla para que realice exactamente lo que se requiere, a si que para nuestro ejemplo podríamos manejarlo así:
Nota: en este ejemplo estoy asumiendo que el lector conoce poco o nada de explotación con sqlmap así que para algunos puede ser algo lento bueno como siempre el fin es compartir con los que recién inician.
Para ejecutar Sqlmap en backtrack 5 podemos entrar al directorio /pentest/database/sqlmap para ejecutarla basta con llamar a la aplicación sqlmap.py con el interprete de Python ejemplo:
python sqlmap.py -h
con el -h nos muestra un help de sqlmap, ahora en nuestro caso para llamar a la web utilizamos el parámetro --url o simplemente -u como pasamos los parámetros por GET simplemente se especifica en la url:
python sqlmap.py --url="http://localhost/sqli.php?fileid=1"
como siempre lo digo las tools solo son un complento así que no inicien un Testeo directamente con una tool ya que para optimizar requerimos información precisa a si el proceso de Testing es mas limpio, levantamos menos sospechas y podemos cumplir nuestro objetivo entonces siempre en alguna explotación de sqli primero identificamos las siguientes parámetros:
1. La variable vulnerable
2.El payload
3. Motor de Base de datos
4. El tipo de explotación
5. Alcance de la explotación
En nuestro caso estos datos obtuvimos o suponemos que son:
1. variable GET fileid
2. payload and 1 =1
3. motor de DB mysql
4. El tipo es InBound
5. Extracción de información del information_schema
ahora como armamos nuestro escenario:
la variable vulnerable se poner con el parámetro -p
python sqlmap.py --url="http://localhost/sqli.php?fileid=1" -p "fileid"
siempre es recomendable modificar los payloads, pero para este tutorial usaremos los que vienen por defauld, para indicar el motor de DB se hace uso del parámetro --dbms
python sqlmap.py --url="http://localhost/sqli.php?fileid=1" -p "fileid" --dbms="mysql"
Para el tipo de explotación se usa el parámetro --technique
en sqlmap a la explotación tipo inbound se conoce como UNION así que la cosa quedaría:
python sqlmap.py --url="http://localhost/sqli.php?fileid=1" -p "fileid" --dbms="mysql" --technique="U"
Con eso parámetros podríamos darle al sqlmap de forma masticada la vulnerabilidad para que este lo almacene en su base de conocimientos.
En una explotación inbound o union como pudimos ver para poder volcar los datos necesitamos de mamera exacta cuando valores son llamados en la consulta en los tutoriales anteriores esto lo logramos con ORDER BY aquí en sqlmap se usa el parametro --union-cols="x-n" donde x el valor mínimo y n el máximo tal y como lo vimos con order by en caso ya identifiquemos en numero de valores para nuestro caso 3 lo podemos hacer asi
python sqlmap.py --url="http://localhost/sqli.php?fileid=1" -p "fileid" --dbms="mysql" --technique="U" --union-cols="3-3" -v 3
qui indicamos que son 3 valores que es llamado en la consulta y el -v indica el nivel de información de salida, con el comando anterior el sqlmap ya esta listo para identificar la vulnerabilidad para luego explotar.
si sqlmap encuentra que la variable fileid es vulnerable nos lanza esta alerta
luego guarda en output un archivo con datos de la vulnerabilidad para luego explotarla, ahora solo no falta volcar la información para nuestro caso seria los siguientes comandos:
python sqlmap.py --url="http://localhost/sqli.php?fileid=5" -p "fileid" --current-db
No hay comentarios:
Publicar un comentario