Jak sprawdzić siłę hasła Wordpress (już zapisanego)?

10

Jestem odpowiedzialny za bezpieczeństwo wielu współdzielonych serwerów hostingowych. Większość z nich ma strony WordPress. Każdy serwer ma co najmniej 500 stron internetowych WordPress.

Według mnie problem z WordPress zaczyna się od słabego hasła. Większość haseł administratora witryny jest bardzo słaba, a korzystanie ze słabego hasła jest wykorzystywane i wykorzystywane do różnych złośliwych działań.

Teraz planuję znaleźć słabe hasło do strony WordPress i na siłę zmienić hasło administratora na inne silne hasło. Aby WordPress mógł zostać zabezpieczony, a mój serwer nie będzie miał kłopotów.

Jak poznać siłę przechowywanego hasła WordPress?

Mani
źródło

Odpowiedzi:

8

Bruteforce hashe

Możesz brutalnie forsować hash przechowywany w bazie danych.

WordPress używa phpass do mieszania. Domyślnie WordPress nie używa blowfish ani podobnych, ale tylko md5 z liczbą iteracji 8192. Jeśli chcesz znaleźć naprawdę złe hasła, brutalne wymuszanie jest z pewnością możliwe.

Uważałbym to jednak za dość duże naruszenie zaufania, jakim obdarzyli cię użytkownicy, dlatego nie zalecałbym takiego podejścia.

Analizuj hasła podczas logowania

Możesz dodać skrypt przechwytujący wszystkie żądania do skryptów logowania WordPress i rejestrować lub analizować hasła, ponieważ w tym momencie są one jawnym tekstem.

Oczywiście, łapie to słabe hasła tylko wtedy, gdy użytkownik faktycznie się zaloguje. Jeśli opuścił swoją stronę lub jest raczej nieaktywny, może minąć trochę czasu, zanim odkryjesz, że używa słabego hasła.

Uznałbym to za jeszcze większe naruszenie niż brutalne wymuszanie skrótów, a także wiąże się z nim pewne obawy związane z bezpieczeństwem (jeśli przechowujesz hasła w postaci zwykłego tekstu, to oczywiście będzie to niepokojące, ale nawet jeśli nie, możesz przypadkowo przechowywać niektóre informacje z analiza, która może pomóc atakującemu).

Wdrażaj zasady haseł (i zmuszaj użytkowników do zmiany haseł)

Możesz wdrożyć politykę haseł. Gdy użytkownik prześle nowe hasło, sprawdzisz, czy jest ono zgodne z twoją polityką, czy nie (najlepiej, dzieje się to po stronie serwera, a nie po stronie klienta przez JavaScript).

Pisanie dobrych zasad dotyczących haseł jest trudne, więc spójrz na istniejące zasady, które Ci w tym pomogą.

Oczywiście zasady nie mają wpływu na stare hasła, więc musisz zmusić użytkowników do zmiany starych haseł, aby były zgodne z zasadami

Ogranicz obrażenia

Wymuszanie silnych haseł może być z pewnością dobrym pomysłem, ale idealnie, że zaatakowana instancja WordPress nie powinna wpływać na ciebie jako webmastera.

Powinieneś chcieć ograniczyć szkody, gdy atakujący uzyska dostęp do instalacji WordPress. Idealnie byłoby, gdyby miało to wpływ tylko na jedno wystąpienie, a nie na cały serwer (więc możesz się martwić, że atakujący umieści nieprzyzwoitą treść na stronie internetowej - tak jak może to zrobić prawidłowy użytkownik - ale nie o wykonanie kodu lub inne złośliwe oprogramowanie czynność).

Jest to dość szeroki temat, ale niektóre punkty obejmują DISALLOW_FILE_EDIT:, ograniczają użycie wtyczek (ponieważ są one znacznie mniej bezpiecznie kodowane niż sam WordPress), nie zezwalają na JavaScript (np. W przypadku wielu witryn tylko superadministratorzy mają prawo publikować JavaScript, a nie administratorzy) itp.

tim
źródło
4

Nie jestem pewien, czy to w ogóle możliwe. Po wybraniu hasła jest ono zapisywane w bazie danych. W przypadku algorytmów mieszających nie ma inżynierii wstecznej.

Z mojego doświadczenia wynika, że ​​skrypt dla siły hasła znajduje się w www.example.com/wp-admin/js/password-strength-meter.js, i to jest link do niego.

Tutaj możesz zmieniać poziomy i procent haseł, dzięki czemu możesz ustawić obowiązkową siłę hasła na 100/100.

A jeśli chcesz, aby Twój klient sprawdził siłę hasła, istnieje urocza aplikacja, która może dać ci siłę hasła tutaj.

Nie można tutaj wykonać inżynierii wstecznej, a ponadto istnieje kilka wtyczek, które zmuszają użytkowników do uzyskiwania silnych haseł.

Josip Ivic
źródło
1
Wydaje się to prostą rzeczą, którą hosty i właściciele witryn mogą zrobić, aby się chronić. Bardzo dobre pytanie i odpowiedź! Nie jestem pewien, czy kiedykolwiek wcześniej o tym tutaj mówiono. Przynajmniej przez długi czas to nie było omawiane. Twoje zdrowie!!
closetnoc
1
Powyższa odpowiedź jest dobra, ale to nie rozwiązuje mojego problemu. Większość stron WordPress jest już zainstalowanych lub w ciągu jednego dnia na moim serwerze trwa 100s instalacji WP. Załóżmy, że zmieniam siłę hasła za pomocą password-strength-meter.js, nadal nie jest to dla mnie przydatne. Bcoz, pwd jest już ustawiony. Będzie to przydatne tylko dla nowego passwd, a nie dla tego, który jest już ustawiony.
Mani
1
Ale nie ma sposobu, aby znaleźć wszystkie hasła z bazy danych, ponieważ są one mieszane. Możesz to ustawić, a następnie ponownie wysłać do wszystkich użytkowników, aby zmienić swoje hasła, aby mogli mieć silne hasła. Nie widzę innego sposobu na obejście tego. Sprawdź również odpowiedzi poniżej.
Josip Ivic
2
@Jipip Ivic, jedynym sposobem jest zresetowanie pwd i poinformowanie administratora, jak powiedziałeś.
Mani
1
Dla nowych użytkowników po prostu dostosuję skrypt na wp na serwerze, więc obowiązkowe jest posiadanie silnych haseł, a dla starych użytkowników ponownie wysyłam im e-maile, aby mogli zmienić swoje hasła na silne. Jak powiedziałem, nie ma łatwego sposobu na zrobienie tego, ale jest to wykonalne. :)
Josip Ivic
3

Dobrą wiadomością jest to, że możesz zmieniać hasła użytkowników, złą wiadomością jest to, że ich nie widzisz.
Wordpress jest tak potężny, że nawet w bazie danych przechowuje hasło za pomocą jednokierunkowego szyfrowania, nie jest to tylko skrót MD5, który można przekonwertować, to nawet nie serializowane dane, dla hasła, test123które byś otrzymał $P$BjW8o9Dm1vC5bwAcP1iAdNVm0lbvn, nawet jeśli zmienisz pole hasła w bazie danych bez szyfrowania nie działałoby.

Jak zmienić hasło

Wierzę, że jesteś tego świadomy, ale zostawię to tutaj. Możesz wejść do pulpitu Wordpress z uprawnieniami administratora, przejść do użytkowników, znaleźć użytkownika, a ta część jest dla ciebie trochę zła, ponieważ musisz kliknąć na wygenerowanie nowego hasła, da ci losową zupę liter i symboli i możesz edytuj go własnym, ale nawet wtedy nie widzisz hasła.

knif3r
źródło
Zapomniałem wspomnieć, że możesz użyć wtyczki takiej jak iThemes, aby wymagać od użytkowników wprowadzania silnych haseł, a także ochrony przed brutalną siłą i innych fajnych funkcji, które mogą Cię zainteresować.
knif3r
3

Gdy hasła są mieszane, jedynym sposobem na sprawdzenie ich bezpieczeństwa jest brutalne ich wymuszenie. Zbierz listę często używanych słabych haseł i przetestuj je pod kątem skrótów przechowywanych w bazie danych.

Jeśli nie użyjesz bardzo wyczerpującej listy haseł, nie złapie ona wszystkich słabych haseł, ale odfiltruje najsłabsze z nich.

Tom van der Zanden
źródło
To rozwiązanie wymaga dużo czasu.
Josip Ivic
To się nazywa budowanie tęczowego stołu.
Ashfame
@Ashfame Nie, nie jest. Tęczowy stół to znacznie bardziej wyrafinowane podejście, które niekoniecznie jest najbardziej odpowiednie dla tego scenariusza.
Tom van der Zanden
@TomvanderZanden To może nie być odpowiednie podejście, ale jak to nie będzie tęczowy stół?
Ashfame
@Ashfame Ponieważ tabele tęczy są znacznie bardziej skomplikowane niż „sprawdzanie listy haseł w bazie danych”. Na przykład w tabelach Rainbow używane są łańcuchy skrótów i funkcje redukcji. Pamiętaj też, że zbudowanie tęczowej tabeli zajmuje więcej czasu niż samo sprawdzenie wszystkich haseł w bazie danych. Zastosowanie wstępnie obliczonej tabeli tęczy może mieć sens, ale w tej sytuacji może to być przesada.
Tom van der Zanden
1

Nie możesz wymusić zmiany hasła administratora wp, chyba że nie masz kontroli w każdej bazie danych wordpress, która jest przechowywana w phpmyadmin.

I nie, nie ma szybkiego sposobu na znalezienie tygodniowego hasła na stronie 500 wordpress. Josip wspomniał o jednym linku do siły hasła do kasy, ale ta strona nie używała szyfrowania md5 algo do siły hasła do kasy.

Zapoznaj się z tym linkiem SO ( Wordpress przy użyciu MD5 ), a zobaczysz, że wyjście jest inne niż ta aplikacja. Więc jak widzisz, p#aSS*Word14nie jest bezpieczny niż Dance With Me TonightWięc nie używaj aplikacji firm trzecich do sprawdzania hasła Wordpress, ponieważ być może używają innego algorytmu kryptograficznego do sprawdzania / zakładania siły hasła.

Powinieneś także mieć wszystkie hasła i przetestować je jeden po drugim, nie ma żadnej magicznej sztuczki, aby szybko się dowiedzieć.

Inną sprawą jest to, że jeśli jedna witryna WordPress została zhakowana, nie wpłynęło to na inną stronę wp na tym samym serwerze (z wyjątkiem ataku DOS). Widziałem, jak wiele osób zaczyna wp w hostingu współdzielonym, a ich witryna jest atakowana przez hakerów, ale ich sąsiednia strona działa dobrze, ponieważ każda wp ma własną bazę danych na phpmyadmin.

Goyllo
źródło
Didn't affect other WP site on same server:Zbieg okoliczności! Zależy od rodzaju ataku / włamania i intencji hakera / bota.
Ashfame
Mówię o bezpieczeństwie wordpress, a nie o poziomie root. Ale jestem pewien, że przede wszystkim dostawca hostingu korzystający z mechanizmu piaskownicy nie wpłynął na inne strony na tym samym serwerze.
Goyllo,
1

Jak wskazano w poprzednich odpowiedziach: nie można odczytać zapisanych haseł.

Alternatywnym rozwiązaniem może być:

  1. Zastosuj sugestię Josipa Ivica, aby wymusić silne hasła.
  2. Usuń wszystkie hasła (lub tylko hasła dla użytkowników z określonymi uprawnieniami).
  3. Na koniec poinformuj dotkniętych użytkowników, że obowiązują nowe zasady dotyczące haseł i poproś ich /wp-login.php?action=lostpasswordo zresetowanie haseł.
Syberprzestrzeń
źródło
1

Hasła WordPress są mieszane, jak każda rozsądna aplikacja, jeśli chodzi o przechowywanie haseł, ponieważ przechowywanie haseł w postaci czystego tekstu jest bardzo niepewne, ponieważ użytkownicy mogą mieć takie samo hasło do innych usług, z których korzystają (gmail?).

Nie można przekonwertować skrótu z powrotem na hasło, w przeciwnym razie równie dobrze można je zapisać jako zwykły tekst. Hasła były wcześniej mieszane, MD5ale zespół bezpieczeństwa okazał się niepewny, dlatego algorytm skrótu został zaktualizowany do phpass.

Wskazówka: WordPress nadal potrafi poprawnie go haszować, nawet jeśli zaktualizujesz MD5 (% hasło%) w kolumnie sql.

Teraz praktycznym sposobem podejścia do tego, co próbujesz zrobić dla pojedynczej witryny, jest wymuszenie zmiany haseł poprzez zmianę kolumny na coś innego i egzekwowanie wymagań dotyczących siły hasła na stronie, na której będą aktualizować swoje hasło. Ale twój przypadek użycia wymaga zrobienia tego w przypadku wielu instalacji WP, a właściciele witryn mogą nie docenić tego, że robisz to bez ich zgody. Zdecydowanie musisz więc ograniczyć zasięg swoich działań.

1) Zaktualizuj hasła tylko dla administratorów, redaktorów, ale musisz ustalić, kim są ci użytkownicy. Wyślij je e-mailem, a następnie wymuś ograniczenie hasła na stronie resetowania hasła / stronie rejestracji itp. Pamiętaj, że ktoś może mieć te formularze w innym miejscu na stronie (pomyśl też o formularzach AJAX). Utworzenie komendy WP-CLI, która pomoże ci tutaj w realizacji tego planu, zamiast ładowania środowiska WP i uruchamiania skryptów.

2) Generowanie tabeli tęczy, która składa się z zaszyfrowanego hasła dla znanego ciągu (hasła). A potem w zasadzie musisz dopasować skrót do hasła konkretnego użytkownika i ocenić siłę tego hasła. Generowanie tabeli jest tutaj najwolniejszym krokiem, ponieważ musisz zaszyfrować każde możliwe hasło, zapisać je na dysku (kilka GB w zależności od długości i kombinacji haseł, które rozliczasz), a następnie działać na podstawie wyników. 99% jest przekonanych, że jest to rozwiązanie przesadne dla twoich potrzeb.

Wskazówka: znasz te sole i tajemnice, które mamy w wp-config.phpaktach. Ich zmiana unieważnia zalogowane sesje, na wypadek, gdybyś tego kiedykolwiek potrzebował.

Popiół
źródło
1

Spróbuj użyć siły, używając ataku słownikowego

Jaki jest lepszy sposób oceny siły hasła? :-) Tak, wiem, to zajmie trochę czasu ...

W przeciwnym razie możesz po prostu założyć, że wszystkie hasła są słabe (powiedziałbym, że to będzie bardzo dokładne założenie) i samemu stworzyć hasła, przechowywać skróty w bazie danych i podawać administratorom hasło w postaci zwykłego tekstu za pomocą „bezpiecznego” kanał

W przeciwnym razie załóż, że wszystkie hasła są słabe i zmuś administratorów do ich zmiany, a następnie użyj bardzo wybrednego narzędzia do sprawdzania siły hasła w samej witrynie.

Gianluca Ghettini
źródło