Questi sono gli unici casi possibili per l'iniezione di DB?

1

Dopo aver letto un po 'di iniezioni DB (sia SQL, NoSQL, o di qualsiasi linguaggio di interrogazione DB qualunque), capisco che ci sono solo 3 possibili casi per questo tipo di attacco per essere efficace:

  1. Quando sul server Web non è installato alcun meccanismo Trasforma-Puro-Testo : ad esempio, si stampa un modulo HTML con PHP; Questo modulo ha un campo di input e i dati vengono caricati nel DB quando il modulo viene salvato. Il proprietario del server web ha installato un software server sperimentale che non ha un meccanismo per trasformare la query DB in puro testo e ogni volta che verrà dato come input, verrà iniettato e influenzerà la normale ecologia del DB.

  2. Quando non è installato nessun meccanismo Treat-As-Pure-Text : questo meccanismo farà sì che il webserver tratti qualsiasi tipo di input (o almeno qualsiasi query-like input), come testo puro.

  3. Quando esiste uno dei meccanismi, ma non funziona a causa di un bug.

Questi sono gli unici casi in cui potrebbe verificarsi un'iniezione DB?

    
posta JohnDoea 22.12.2016 - 21:55
fonte

1 risposta

1

Sarebbe sufficiente dire - come per entrambi nel tuo caso no. 1 & Astuccio. 2 è quello del problema della sanificazione degli input. Pre-liminari a quelli di sanificazione dell'input, c'è la convalida dell'input - questo potrebbe essere in bianco o in black list. L'approccio dell'elenco nero non è preferito.

Ora restringiamo la risposta, non è solo la conversione dei dati, l'analisi dei dati, la trasformazione dei dati o il semplice rendering dei dati da un'altra fonte, che è il punto qui; le altre fonti potrebbero essere la manipolazione dei dati in cui si confonde la logica del gestore dati .

Alcuni esempi potrebbero essere bypass di autenticazione di base, altri ancora potrebbero essere varianti di iniezioni LDAP. Le possibili cause di DB Injections nel tuo caso dovrebbero essere la mancanza di validazione dell'input, mancanza di sanificazione dell'input, mancanza di sequenze di escape, mancanza di query SQL concatenate da stringhe, mancanza di controllo degli accessi tramite policy che accedono a varie tabelle.

Ciò potrebbe accadere da diverse prospettive per ottenere un'escalation; Parliamo di alcuni:

  1. Database SQL controllati da domini interni - richiamati internamente, a causa della mancanza della configurazione della politica.
  2. Applicazioni web mirate esternamente a causa della mancanza di convalida dell'input in aggiunta alla sanificazione dell'input.
  3. Al livello del gestore del driver DB stesso, dove, da parte di un utente malintenzionato, confonde il gestore db a pensare che sia l'utente autenticato & i privilegi sono concessi.

Alcuni miti sono:

La white list sarà a prova di hacker - non sarà come lasciare che l'input fornito dall'utente finale sia elevato allo stesso livello della struttura di comando. Di conseguenza, anche se la whitelisting fa parte di un approccio di difesa approfondito alla sicurezza, non è ancora sufficiente per proteggersi dall'iniezione SQL da solo.

Stored Procedure lo renderà davvero a prova di hacker - mentre l'uso corretto delle stored procedure fornisce una protezione fantastica contro l'iniezione SQL, non c'è nulla di magico nelle stored procedure che impedisce loro dall'uso scorretto o non corretto; gli sviluppatori commettono errori di implementazione.

Convalida dell'input rigoroso, sequenze di escape e amp; Input Sanitisation sarebbe sufficiente - combinazioni di trucchi di codifica, routine di escape, omografi e caratteri Unicode e ASCII non utilizzati come mezzo per cercare di compromettere le routine di sostituzione delle stringhe semplicistiche definite dagli sviluppatori che non pensa come gli hacker falliranno, ripetutamente.

Fondamentalmente l'input dell'utente è il problema di root set & quindi il linguaggio di comando è correttamente separato dai dati o dall'input e dall'amplificatore utente; ci sarà chiaramente fare uno standard rigoroso per i database SQL per essere sicuro.

    
risposta data 22.12.2016 - 22:13
fonte

Leggi altre domande sui tag