sqlmap no puede encontrar la vulnerabilidad de inyección SQL

2

por lo que acabo de comenzar con sqlmap para aprender la vulnerabilidad de inyección de SQL en mi aplicación. Aquí seguí los pasos según algunos tutoriales.

Estos son los pasos que seguí:

  1. sqlmap.py -u "http://www.myurl.org/dis/data.php?id=3" --dbs

muestra la consola:

[11:19:45] [INFO] testing connection to the target URL
[11:19:46] [INFO] testing if the target URL is stable. This can take a couple of
seconds
[11:19:47] [INFO] target URL is stable
[11:19:47] [INFO] testing if GET parameter 'id' is dynamic
[11:19:48] [INFO] confirming that GET parameter 'id' is dynamic
[11:19:48] [WARNING] GET parameter 'id' does not appear dynamic
[11:19:49] [WARNING] heuristic (basic) test shows that GET parameter 'id' might
not be injectable
[11:19:49] [INFO] testing for SQL injection on GET parameter 'id'
[11:19:49] [INFO] testing 'AND boolean-based blind - WHERE or HAVING clause'
[11:19:56] [INFO] testing 'MySQL >= 5.0 AND error-based - WHERE or HAVING clause
'
[11:19:59] [INFO] testing 'PostgreSQL AND error-based - WHERE or HAVING clause'
[11:20:01] [INFO] testing 'Microsoft SQL Server/Sybase AND error-based - WHERE o
r HAVING clause'
[11:20:04] [INFO] testing 'Oracle AND error-based - WHERE or HAVING clause (XMLT
ype)'
[11:20:06] [INFO] testing 'MySQL inline queries'
[11:20:07] [INFO] testing 'PostgreSQL inline queries'
[11:20:07] [INFO] testing 'Microsoft SQL Server/Sybase inline queries'
[11:20:07] [INFO] testing 'Oracle inline queries'
[11:20:08] [INFO] testing 'SQLite inline queries'
[11:20:08] [INFO] testing 'MySQL > 5.0.11 stacked queries'
[11:20:11] [INFO] testing 'PostgreSQL > 8.1 stacked queries'
[11:20:13] [INFO] testing 'Microsoft SQL Server/Sybase stacked queries'
[11:20:58] [WARNING] using unescaped version of the test because of zero knowledge of the back-end DBMS. You can try to explicitly set it using option '--dbms'
[11:21:27] [WARNING] GET parameter 'id' is not injectable
[11:21:27] [CRITICAL] all tested parameters appear to be not injectable. Try to increase '--level'/'--risk' values to perform more tests. Also, you can try to rerun by providing either a valid value for option '--string' (or '--regexp')
[11:21:27] [WARNING] HTTP error codes detected during run:
500 (Internal Server Error) - 5 times

Necesito saber:

  1. ¿Por qué no puede obtener la base de datos?
  2. ¿Qué significa esto '--string' (o '--regexp')?
pregunta user2376425 16.10.2013 - 08:44
fuente

2 respuestas

3

No parece ser vulnerable, o el servidor está filtrando las entradas de una manera que no corrige la vulnerabilidad de la inyección de SQL, pero elimina el olor del mapa. Es probable que tenga que hacer algún trabajo para hacer que sqlmap identifique correctamente la inyección. Hay un artículo interesante sobre Minded Security sobre esto.

Las opciones --string y --regexp tienen que ver con la identificación de respuestas válidas del servidor que contienen datos de resultados y la extracción de esos datos. Esto se llama bisección y se describe en la documentación:

  

Para cada respuesta HTTP, al hacer una comparación entre los encabezados / cuerpo de respuesta HTTP con la solicitud original, la herramienta deduce la salida del carácter de la instrucción inyectada por carácter. Alternativamente, el usuario puede proporcionar una cadena o expresión regular para que coincida en las páginas True. El algoritmo de bisección implementado en sqlmap para realizar esta técnica es capaz de obtener cada carácter de la salida con un máximo de siete solicitudes HTTP. Cuando la salida no está dentro del conjunto de caracteres sin formato de texto claro, sqlmap adaptará el algoritmo con rangos más grandes para detectar la salida.

    
respondido por el Polynomial 16.10.2013 - 14:58
fuente
3

Intentemos agregar --level = 3 --risk = 3 a su comando sqlmap. Si aumenta el riesgo y el nivel, entonces sqlmap intenta cosas más inteligentes para encontrar y explotar. Significa que sqlmap intentará no solo el potencial visible de inyección de sql, sino también el relleno oculto ...

Nuevamente, el mismo resultado puede agregar * a su parámetro vulnerable para identificar si sqlmap está publicando en el parámetro correcto o no

    
respondido por el CorpusCallosum 16.10.2013 - 20:50
fuente

Lea otras preguntas en las etiquetas