¿Posibilidad de SQLI en la siguiente solicitud?

3

Estaba probando una aplicación web que está escrita en Ruby, marco de Rails, cuando me topé con la siguiente solicitud que se envió. Modifiqué la solicitud y ahora me muestra una parte de la consulta de un SQL. No estoy familiarizado con SQL en Ruby, así que me preguntaba si lo siguiente es vulnerable a SQLI.

SOLICITUD DE POSTAL:

PUT /campaigns/**_42789_** HTTP/1.1
Host: test.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:47.0) Gecko/20100101 Firefox/47.0
Accept: application/json, text/javascript, */*; q=0.01
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
Content-Type: application/json; charset=utf-8
X-Requested-With: XMLHttpRequest
Content-Length: 31
Cookie: cokies here 
Connection: keep-alive

{"email_campaign":{"id":42789}}

RESPUESTA:

{"message":"Couldn't find Promotion with [WHERE 'promotions'.'id' = ? AND (user_id IN (2170,2313) OR master_user_id = 2313)]"}

¿Es posible SQLI aquí?

    
pregunta Dhayalan Pro 03.07.2016 - 06:33
fuente

1 respuesta

4

Probablemente no.

Como puede ver, la consulta utiliza declaraciones preparadas:

WHERE 'promotions'.'id' = ?

Por supuesto, esto es solo una pequeña parte de la consulta, la entrada del usuario puede insertarse directamente en la consulta en otras partes de la misma, por lo que debe verificar si el parámetro id es vulnerable de todos modos. Este puede ser el caso, por ejemplo, 2170 y 2313 parecen inyectarse directamente en la consulta.

Pero solo ver partes de una consulta no es una indicación de que una inyección SQL sea posible. Simplemente le dice que algo salió mal al realizar la consulta.

Por supuesto, enviar este mensaje de error al usuario es una mala idea en sí misma. El mensaje confundirá al usuario promedio, y un atacante obtiene cierta información sobre la estructura de la consulta, por ejemplo, parece que usa declaraciones preparadas, al menos en partes, nombres de tablas y columnas, y posiblemente software utilizado, como el tipo de DBMS, etc.

    
respondido por el tim 03.07.2016 - 12:20
fuente

Lea otras preguntas en las etiquetas