Documente Academic
Documente Profesional
Documente Cultură
Introducción
Algunas veces, realizando pruebas de inyección SQL, podemos encontrarnos con que la
página web no devuelve información relevante para la consulta (inyección) más que el error
de MySQL. Es entonces cuando debemos cambiar de estrategia y optar por otras técnicas
que nos permita recabar información de la base de datos.
En este tutorial, vamos a realizar una prueba de inyección SQL con la técnica Error Based
(técnica basadas en errores) haciendo uso de la función ExtractValue de XPath, no haremos
pruebas de Inyección para XPpath en sí, sino que sólo haremos uso de la función en mención.
1. Fuzzing
Para pruebas de inyección SQL, lo primero es provocar una falla en la consulta SQL, esto se
logra alterando el parámetro en la URL. Esta primera prueba determina la técnica que
posiblemente emplearemos a lo largo de la prueba:
La aplicación web (desde ahora sólo web) no filtra las comillas simples, y como se puede ver
nos muestra un mensaje de error propio de MySQL.
2. Recopilando Información
Ahora veamos cómo se comporta la web respecto a la inyección, para ello haremos una
prueba tautológica (puede ser otra).
Consulta: ‘ or 1=1 -- x
Inyección: ‘ or (1)=(1) – x
Para obtener los campos que usa la consulta normalmente se usa la cláusula ORDER BY y un
poco de búsqueda binaria, en la prueba tomamos partimos con 10 campos, luego iremos
disminuyendo a aumentando según como se comporte la web.
Consulta: ‘ order by 10 -- x
Consulta: ‘ order by 2 –- x
La web tiene menos de 2 campos
Consulta: ‘ order by 1 –- x
Se usa la cláusula UNION SELECT, para concatenar consultas, recordemos que la web hace una
para mostrar contenido. Sí intentamos recuperar datos desde la DB con UNION SELECT vemos
lo siguiente:
Una vez más el firewall, está vez vamos a ofuscar la consulta un poco para pasar el filtro.
La idea consiste es ir viendo qué palabra clave está siendo detectado, después ofuscar dicha
palabra, en nuestra consulta usaremos una característica de MySQL para ofuscar la palabra
clave union haciéndolo ver como si fuera un comentario pero sin serlo.
Como no se tuvo éxito con UNION SELECT es hora de cambiar de técnica. A lo largo de la
prueba de Inyección SQL con ExtractValue iremos ofuscando la inyección, recordemos que
existe un firewall.
Versión
Usuario