È vulnerabile a Sql Injection?

3

Si scopre che ho un'applicazione che quando inserisco una citazione semplice mi sembra la seguente:

httpStatus":400,"errorCode":"BAD_QUERY_PARAMETER","message":"java.lang.NumberFormatException: For input string: \"'\"","implementationDetails":"com.sun.jersey.api.ParamException$QueryParamException: java.lang.NumberFormatException: For input string: \"'\"\n\tat com.sun.jersey.server.impl.model.parameter.QueryParamInjectableProvider$QueryParamInjectable.getValue(QueryParamInjectableProvider.java:74)

La domanda che ho è; questo parametro può essere utilizzato per eseguire l'iniezione SQL? In tal caso, come posso verificare se questo è il caso?

    
posta user152754 07.07.2017 - 00:01
fonte

2 risposte

2

Certo, sembra vulnerabile. Il backend si aspetta un numero e questo ha generato l'errore. Ma il sintomo di inserire una virgoletta singola e generare un errore è un buon segnale, probabilmente è una vulnerabilità di SQL injection.

Il primo passo potrebbe essere sapere che tipo di database è. È sicuro che tu sappia che ... perché è il tuo database personale, giusto? : D

Ti consiglio di avviare alcune app come sqlmap per esplorare più in profondità la vulnerabilità.

Ad ogni modo, puoi controllare il solito. C'è un intero elenco di questo. Ne metterò tre:

' or '1'='1
a' or 1=1--
' or 0=0--

Buona fortuna.

    
risposta data 07.07.2017 - 00:43
fonte
0

NumberFormatException è in genere un'indicazione che il server esegue una convalida secondo cui un input è in realtà un numero. Fornire un preventivo in questo caso genera ovviamente una violazione di convalida dell'input e questa non è un'indicazione di una potenziale vulnerabilità SQLi. Per confermare tale vulnerabilità devi essere in grado di modificare il risultato fornendo input come

0 and 1=1 (=> lot of results because where clause always true)
0 and 1=0 (=> no results because where clause always false)

Nel tuo caso, suppongo che questi input genereranno anche una NumberFormatException. Quindi la mia ipotesi è che il tuo codice non sia iniettabile.

    
risposta data 07.07.2017 - 08:53
fonte

Leggi altre domande sui tag