Cosa si può fare con la password MySQL

0

Diciamo che c'è un semplice sito web ospitato sul web, basato su Flask + MySQL. La funzionalità del sito Web è sicura e non consente l'esecuzione di query arbitrarie sul database.

Tuttavia, diciamo che qualcuno ottiene l'accesso non autorizzato al nome utente e alla password del database MySQL (cioè quelli utilizzati nell'URI del database).

Queste informazioni consentiranno effettivamente a loro di fare qualcosa?

    
posta N4v 21.05.2018 - 15:44
fonte

2 risposte

1

Le credenziali del database trapelate potrebbero potenzialmente dare a un utente malintenzionato la possibilità di interagire con il database con gli stessi privilegi dell'applicazione Web (presupponendo di aver creato un account con privilegi limitati per l'applicazione Web per accedere al database con; non stai usando "root", giusto?). Ciò significa che potrebbero eventualmente scaricare tutti i dati, o manipolare e aggiungere voci a volontà.

Detto questo, l'attaccante avrebbe bisogno di un modo per connettersi effettivamente al database, per il quale ci sono diverse condizioni che devono essere soddisfatte tutte:

  1. Il servizio MySQL è in ascolto su un indirizzo pubblico (il valore predefinito è solo localhost)
  2. Il firewall dell'host (se configurato) deve consentire l'accesso in entrata alla porta MySQL
  3. L'account utente MySQL di destinazione deve essere impostato per consentire l'indirizzo IP di origine che l'utente malintenzionato utilizzerà o tutti gli indirizzi con un carattere jolly (in genere è consentito solo l'host locale, a meno che gli host remoti non abbiano bisogno anche del database)
  4. Una volta connesso, l'account utente deve disporre delle autorizzazioni per leggere, scrivere o modificare, a seconda di ciò che l'utente malintenzionato sta tentando di fare

Se vengono soddisfatte tutte e 4 le condizioni, è probabile che un utente malintenzionato esegua qualcosa , in base ai privilegi dell'account. Tuttavia, alcune di queste condizioni sono improbabili e spesso richiedono all'amministratore di fare il possibile per apportare tali modifiche, pertanto un tale compromesso è improbabile.

Inoltre, se un utente malintenzionato riesce a ottenere shell o a compromettere un altro servizio sullo stesso host, potrebbe essere in grado di ignorare 1-3 sopra e connettersi al database su localhost.

    
risposta data 21.05.2018 - 18:10
fonte
3

The website's functionality is secure and does not allow arbitrary queries to be run against the database.

However, let's say someone gains unauthorized access to the username and password of the MySQL database (i.e. those used in the database URI).

Non sei sicuro se questo è quello che stai insinuando, ma non è sufficiente che le funzionalità del sito web siano sicure - anche l'intero server che esegue il database MySQL deve essere sicuro. Il tuo sito web può essere impermeabile come preferisce, ma, per fare il caso estremo, se il database MySQL di backend è in esecuzione su un IP accessibile pubblicamente, e ascoltando le richieste a livello globale, quel nome utente e password ti permetteranno di collegarti ad esso esegui tutte le query arbitrarie che ti piacciono.

Ignorando quanto sopra, altri aspetti come la riusabilità della password e l'ipotesi che tutto sia "completamente" protetto e bloccato, allora sì, quelle credenziali non sono di alcun uso specifico. Come praticamente ogni strategia in questo settore, tenerli segreti è aggiungere un livello di sicurezza se si dovessero trovare vulnerabilità che renderebbero tali credenziali utili.

In pratica, bloccare quelle credenziali dovrebbe essere piuttosto facile. Quindi, se un attaccante ha messo le mani su di loro in primo luogo, l'implicazione è che il tuo setup è sicuramente non sicuro, e probabilmente c'è tutta una serie di altre vulnerabilità ancora da scoprire.

    
risposta data 21.05.2018 - 16:09
fonte

Leggi altre domande sui tag