Det största hotet är att en angripare kan utnyttja en sårbarhet som; kataloggenomgång, eller använda SQL Injection för att anropa load_file()
för att läsa vanlig text användarnamn/lösenord i konfigurationsfilen och sedan logga in med phpmyadmin eller över tcp port 3306. Som en pentester har jag använt detta attackmönster för att äventyra ett system.
Här är ett bra sätt att låsa phpmyadmin:
- PhpMyAdmin saknar starkt bruteforce-skydd, så du måste använda ett långt slumpmässigt genererat lösenord.
- TILÅT INTE FJÄRRROTENLOGGNINGAR! Istället kan phpmyadmin konfigureras att använda "Cookie Auth"
för att begränsa vilken användare som kan komma åt systemet. Om du behöver några root-privilegier, skapa ett anpassat konto som kan lägga till/släppa/skapa men som inte har
grant
ellerfile_priv
. - Ta bort
file_priv
behörigheter från varje konto.file_priv
är en av de farligaste privilegierna i MySQL eftersom den tillåter en angripare att läsa filer eller ladda upp en bakdörr. - Vitlista IP-adresser som har tillgång till phpmyadmin-gränssnittet. Här är ett exempel på .htaccess reulset:
Order deny,allow Deny from all allow from 199.166.210.1
-
Har inte en förutsägbar filplats som:
http://127.0.0.1/phpmyadmin
. Sårbarhetsskannrar som Nessus/Nikto/Acunetix/w3af kommer att söka efter detta. -
Brandväggen av tcp-port 3306 så att den inte kan nås av en angripare.
-
Använd HTTPS, annars kan data och lösenord läcka ut till angriparen. Om du inte vill punga ut $30 för ett certifikat, använd en självsignerad. Du kommer att acceptera det en gång, och även om det har ändrats på grund av en MITM kommer du att meddelas.