Perché l'utente Mysql dovrebbe avere i privilegi?

-2

Perché l'utente mysql dovrebbe avere un privilegio di database mysql se è molto pericoloso.
se il mio codice è vulnerabile a SQL Injection e l'utente ha i privilegi l'attaccante può caricare direttamente la sua backdoor usando la funzione INTO OUTFILE , quindi come funzionano i privilegi di mysql?

    
posta Sec Researcher 09.10.2016 - 16:51
fonte

2 risposte

0

Fondamentalmente, la maggior parte del software in questi giorni avrà un modo per conservare i dati.

Normalmente la persistenza implica l'uso di un sistema di database come MySql.

La semplice risposta alla tua domanda è che non puoi evitarlo. Ma puoi fare cose per mitigare e indebolire i possibili impatti di un attacco.

In primo luogo, considera tutti gli input dell'utente come ostili. Sanificare e pulire prima dell'uso. Secondo, agisci sul principio del minimo privilegio. Ciò significa che se hai una query di ricerca che deve solo selezionare da una tabella di ricerca indicizzata. Consenti solo all'utente di selezionare le autorizzazioni su quella particolare tabella. Non concedere tutte le autorizzazioni su tutte le tabelle perché se viene rilevata una vulnerabilità di iniezione ... Mappa SQL tosse . Poi all'improvviso possono fare praticamente quello che vogliono e annusare tutti i tuoi tavoli ed estrarre molti dati sensibili.

    
risposta data 09.10.2016 - 17:31
fonte
0

Anche se hai un difetto di iniezione SQL nel tuo codice e i privilegi dell'utente db autorizzano SELECT INTO (e cosa ti impedisce di rimuovere quel privilegio?) questo non significa che l'utente possa caricare una back door. Per installare correttamente una backdoor, il demone mysqld avrebbe bisogno di molto altro, come i privilegi di scrittura in una delle directory utilizzate dal server web per l'esecuzione di file php, per esempio. O 2 o più flussi aggiuntivi come l'inclusione di file locali. Se il tuo server web è configurato correttamente, questo non sarà il caso. Il solo caricamento di un file non aiuta un utente malintenzionato se non è in grado di eseguirlo.
Ma in generale, naturalmente, l'utente che si connette al DB per leggere e aggiornare i dati dovrebbe avere permessi minimi, come tutti gli utenti non dovrebbero avere più permessi di quanti ne abbiano bisogno per svolgere il proprio lavoro.
Quindi il riassunto è che l'iniezione SQL e il permesso di SELECT INTO da soli non bastano a compromettere una scatola. D'altra parte, le autorizzazioni minime per tutti sono sempre una buona cosa.

    
risposta data 09.10.2016 - 18:10
fonte

Leggi altre domande sui tag