¿Es posible hacer algo en contra de un sitio web con inyección SQL que devuelve 400?

2

Así que hoy en mi trabajo notifiqué a un programador senior que encontré una inyección SQL en nuestro sitio web. Sin embargo, cuando hago una inyección SQL, la página solo devuelve 400, así que realmente no puedo ver ningún error o UNION SELECT más información, etc. Por eso creo que un desarrollador senior acaba de decir que estamos demasiado ocupados para analizar esto. ahora, y que necesito volver a probar otras cosas (soy un probador). ¿Estaba en lo cierto? ¿No hay forma de explotar una inyección SQL que solo devuelve 400?

    
pregunta elephant9 09.11.2015 - 20:17
fuente

2 respuestas

2

Supongamos que se trata de un ataque de inyección de SQL válido, y que realmente llegó a la base de datos.

El hecho de que su consulta no haya devuelto ningún dato es realmente irrelevante. Si puede ejecutar SQL arbitrario, es probable que pueda escribir en la base de datos. Esto lleva a cosas desagradables como cambiar contraseñas, eliminar datos, eliminar tablas, etc. La inyección SQL es mucho más que simplemente obtener una página web para mostrar datos que no están allí.

Ahora, devolver un error 400 realmente no significa nada. Podría significar que su inyección SQL funcionó, y el código simplemente no sabía qué hacer con la respuesta de la base de datos y devolvió un error 400. O podría significar que la inyección falló y nunca llegó a la base de datos.

Si tiene permiso para escribir en la base de datos durante la prueba, le recomiendo que intente escribir un valor en una tabla. A continuación, ver si la tabla se actualizó. Si es así, el desarrollador debe hacer algo en lugar de dejarlo de lado, ya que es una vulnerabilidad muy seria.

    
respondido por el Steve Sether 09.11.2015 - 21:18
fuente
1

Los errores, como los errores 400 (y superiores), se lanzan desde el lado del servidor web en lugar del lado de la base de datos. Por lo tanto, su consulta actual no se ha ejecutado completamente todavía. Para corregirlo, posiblemente podría agregar caracteres de salto de línea como% 0A al final de la cadena de prueba de inyección. Si estás en una plataforma Windows, puedes probar% 0D% 0A. Estos son caracteres de salto de línea HTML para ayudar con la ejecución. E.g:

  • % 0D% 0AUnion% 0D% 0Aselect
  • % 0AUnion% 0Aselect

Una mejor alternativa es utilizar una herramienta de prueba de SQL como la herramienta de Acunetix o, alternativamente, las herramientas enumeradas en el sitio web de OWASP: enlace Estas herramientas podrán probar un rango mucho mayor de inyecciones posibles de las que podría realizar manualmente.

Me alegro de que su compañía haya probado, pero desearía que la persona de desarrollo no solo ignorara el error.

    
respondido por el Joe 09.11.2015 - 21:06
fuente

Lea otras preguntas en las etiquetas