Possibilità di SQLI nella seguente richiesta?

3

Stavo testando un'applicazione web scritta in Ruby, Rails framework, quando mi sono imbattuto nella seguente richiesta che è stata inviata. Ho modificato la richiesta e ora mi visualizza una parte della query di un SQL. Non ho familiarità con SQL in Ruby, quindi mi chiedevo se quanto segue fosse vulnerabile a SQLI.

RICHIESTA POST:

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}}

Risposta:

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

È possibile SQLI qui?

    
posta Dhayalan Pro 03.07.2016 - 06:33
fonte

1 risposta

4

Probabilmente no.

Come puoi vedere, la query utilizza istruzioni preparate:

WHERE 'promotions'.'id' = ?

Naturalmente, questa è solo una piccola parte della query, l'input dell'utente può essere inserito direttamente nella query in altre parti di esso, quindi dovresti controllare se il parametro id è vulnerabile comunque. Questo potrebbe effettivamente essere il caso, 2170 e 2313 , ad esempio, sembrano essere iniettati direttamente nella query.

Ma vedere solo parti di una query non indica che sia possibile un'iniezione SQL. Ti dice solo che qualcosa è andato storto durante l'esecuzione della query.

Ovviamente, l'invio di questo messaggio di errore all'utente è una cattiva idea di per sé. L'utente medio verrà semplicemente confuso dal messaggio e un utente malintenzionato acquisirà alcune informazioni sulla struttura della query, ad esempio che sembra utilizzare istruzioni preparate, almeno in parti, nomi di tabelle e colonne e possibilmente software utilizzato, come il tipo di DBMS, ecc.

    
risposta data 03.07.2016 - 12:20
fonte

Leggi altre domande sui tag