Die größte Bedrohung besteht darin, dass ein Angreifer eine Schwachstelle ausnutzen könnte, wie z. Directory Traversal oder Verwenden von SQL Injection zum Aufrufen von load_file()
um den Benutzernamen/das Passwort im Klartext in der Konfigurationsdatei zu lesen und sich dann mit phpmyadmin oder über den TCP-Port 3306 anzumelden. Als Pentester habe ich dieses Angriffsmuster verwendet, um ein System zu kompromittieren.
Hier ist eine großartige Möglichkeit, phpmyadmin zu sperren:
- PhpMyAdmin hat keinen starken Bruteforce-Schutz, daher müssen Sie ein langes, zufällig generiertes Passwort verwenden.
- KEINE REMOTE-ROOT-ANMELDUNGEN ERLAUBEN! Stattdessen kann phpmyadmin so konfiguriert werden, dass es "Cookie Auth"
verwendet um einzuschränken, welche Benutzer auf das System zugreifen können. Wenn Sie einige Root-Rechte benötigen, erstellen Sie ein benutzerdefiniertes Konto, das hinzufügen/löschen/erstellen kann, aber nicht über
grant
verfügt oderfile_priv
. - Entfernen Sie
file_priv
Berechtigungen von jedem Konto.file_priv
ist eines der gefährlichsten Privilegien in MySQL, da es einem Angreifer ermöglicht, Dateien zu lesen oder eine Hintertür hochzuladen. - IP-Adressen auf der Whitelist, die Zugriff auf die phpmyadmin-Oberfläche haben. Hier ist ein Beispiel für ein .htaccess-Reulset:
Order deny,allow Deny from all allow from 199.166.210.1
-
Haben Sie keinen vorhersehbaren Dateispeicherort wie:
http://127.0.0.1/phpmyadmin
. Schwachstellen-Scanner wie Nessus/Nikto/Acunetix/w3af scannen danach. -
Sperren Sie den TCP-Port 3306 durch Firewall, damit ein Angreifer nicht darauf zugreifen kann.
-
Verwenden Sie HTTPS, andernfalls können Daten und Passwörter an einen Angreifer weitergegeben werden. Wenn Sie die 30 US-Dollar für ein Zertifikat nicht ausgeben möchten, verwenden Sie ein selbstsigniertes. Sie akzeptieren es einmal, und selbst wenn es aufgrund eines MITM geändert wurde, werden Sie benachrichtigt.