Największym zagrożeniem jest to, że atakujący może wykorzystać lukę, taką jak; przechodzenie katalogów lub użycie wstrzykiwania SQL do wywołania funkcji load_file()
aby odczytać nazwę użytkownika/hasło w postaci zwykłego tekstu w pliku konfiguracyjnym, a następnie zalogować się za pomocą phpmyadmina lub portu tcp 3306. Jako pentester użyłem tego wzorca ataku do włamania się do systemu.
Oto świetny sposób na zablokowanie phpmyadmina:
- PhpMyAdmin nie ma silnej ochrony przed bruteforce, więc musisz użyć długiego, losowo generowanego hasła.
- NIE ZEZWALAJ NA ZDALNE LOGOWANIE ROOT! Zamiast tego phpmyadmin można skonfigurować tak, aby używał "Cookie Auth"
aby ograniczyć dostęp użytkowników do systemu. Jeśli potrzebujesz uprawnień administratora, utwórz niestandardowe konto, które może dodawać/upuszczać/tworzyć, ale nie ma
grant
lubfile_priv
. - Usuń
file_priv
uprawnienia z każdego konta.file_priv
jest jednym z najniebezpieczniejszych uprawnień w MySQL, ponieważ umożliwia atakującemu odczytywanie plików lub przesyłanie backdoora. - Umieszczaj na białej liście adresy IP, które mają dostęp do interfejsu phpmyadmin. Oto przykład reulset .htaccess:
Order deny,allow Deny from all allow from 199.166.210.1
-
Nie masz przewidywalnej lokalizacji pliku, takiej jak:
http://127.0.0.1/phpmyadmin
. Skanery luk w zabezpieczeniach, takie jak Nessus/Nikto/Acunetix/w3af, przeskanują to. -
Zapora sieciowa wyłączona z portu TCP 3306, aby osoba atakująca nie mogła uzyskać do niego dostępu.
-
Użyj protokołu HTTPS, w przeciwnym razie dane i hasła mogą zostać ujawnione osobie atakującej. Jeśli nie chcesz wydać 30 dolarów za certyfikat, użyj podpisu własnego. Zaakceptujesz go raz, a nawet jeśli został zmieniony z powodu MITM, zostaniesz o tym powiadomiony.