È possibile fare qualcosa contro un sito Web con SQL injection che restituisce 400?

2

Quindi oggi nel mio lavoro ho informato un programmatore esperto che ho trovato un'iniezione SQL sul nostro sito web. Tuttavia, quando faccio un'iniezione SQL, la pagina restituisce solo 400, quindi non posso vedere alcun errore o UNION SELECT altre informazioni ecc. Ecco perché immagino che uno sviluppatore anziano abbia detto che siamo troppo occupati per esaminare questo ora, e che ho bisogno di tornare a testare altre cose (sono un tester). Aveva ragione? Non c'è modo di sfruttare un'iniezione SQL che restituisce solo 400?

    
posta elephant9 09.11.2015 - 20:17
fonte

2 risposte

2

Supponiamo che si tratti di un attacco di SQL injection valido e che sia stato effettivamente eseguito sul database.

Il fatto che la tua query non abbia restituito alcun dato è davvero irrilevante. Se è possibile eseguire SQL arbitrario, è probabile che si scriva sul database. Questo porta a cose brutte come cambiare password, cancellare dati, eliminare tabelle, ecc. SQL Injection è molto più che semplicemente ottenere una pagina web per visualizzare dati che non ci sono.

Ora restituire un errore 400 significa davvero nulla. Potrebbe significare che l'iniezione SQL ha funzionato e il codice non sapeva cosa fare della risposta al database e ha restituito un errore 400. Oppure potrebbe significare che l'iniezione non è riuscita e non è mai arrivata al database.

Se hai il permesso di scrivere sul database durante il test, ti consiglio di provare a scrivere un valore su una tabella. Quindi vedi se la tabella è stata aggiornata. Se è così, lo sviluppatore deve fare qualcosa piuttosto che spazzarlo via in quanto si tratta di una vulnerabilità molto seria.

    
risposta data 09.11.2015 - 21:18
fonte
2

Errori come 400 (e sopra) errori vengono lanciati dal lato web-server invece che dal lato DB. Quindi la tua query attuale non viene ancora eseguita fino in fondo. Per correggerlo, è possibile aggiungere caratteri di avanzamento riga come% 0A alla fine della stringa di test di iniezione. Se sei su una piattaforma Windows potresti provare% 0D% 0A. Questi sono caratteri di avanzamento di riga HTML per facilitare l'esecuzione. Per esempio:

  • % 0D% 0Annione% 0D% 0Aseleziona
  • % 0AUnion% 0Aselect

Un'alternativa migliore è utilizzare uno strumento di test SQL come lo strumento di Acunetix o in alternativa gli strumenti elencati nel sito Web OWASP: link Questi strumenti saranno in grado di testare una gamma molto più ampia di iniezioni possibili rispetto a quelle che potresti eseguire manualmente.

Sono contento che la tua azienda abbia dei tester, ma auguro che la persona devica non abbia semplicemente ignorato l'errore.

    
risposta data 09.11.2015 - 21:06
fonte

Leggi altre domande sui tag