Witam z powrotem koledzy entuzjaści bezpieczeństwa! Dzisiaj pokażę wam jak włamać się na stronę internetową WordPressa używając Mr. Robot CTF jako przykładu. Właśnie pracowałem przez ten doskonały CTF siebie i nauczyłem się tonę w procesie. Chciałem podnieść poziom mojej gry Web Vulnerability Analysis notch i zacząłem od tego CTF.
Jeśli naprawdę chcesz nauczyć się Cybersecurity, gorąco polecam przeczytanie mojego ogromnego Getting started with Cybersecurity in 2019 beginner guide, gdzie uczę cię, jak zacząć, całkowicie za darmo! Warto również sprawdzić jest Best Hacking Books in 2019 article.
DISCLAIMER: Ten „jak zhakować stronę internetową WordPress” jest Ethical Hacking Tutorial i nastawiony na profesjonalistów bezpieczeństwa. Nie należy, powtarzam, nie należy używać tych technik bez pisemnej zgody strony otrzymującej. Jeśli użyjesz tego samouczka w niezgodnym z prawem kontekście, mogą czekać na Ciebie zarzuty prawne i/lub czas spędzony w więzieniu. Używaj tych technik tylko w zamkniętym środowisku laboratoryjnym.
CTF jest tak zwaną grą Capture the Flag, gdzie twoim celem jest zebranie pewnej liczby flag (lub kluczy, dla tej sprawy). CTF’y są używane do ćwiczenia swoich umiejętności hakerskich w bezpiecznym i legalnym środowisku. Mogę polecić Vulnhub jako źródło wyboru doskonałych CTF’s.
Ok, zaczynajmy.
- Krok 1 – Ocena, czy strona internetowa używa WordPress
- Krok 2 – Grabbing Code with Burpsuite
- Krok 3 – Znalezienie poprawnej nazwy użytkownika
- Krok 4 – Bruteforcing Usernames with Hydra
- Krok 5 – Brute Forcing the Password
- Krok 6 – Wdrażanie złośliwego kodu do WordPress
- Krok 7 – Uruchomienie Netcat listener
- Please Share!
Krok 1 – Ocena, czy strona internetowa używa WordPress
Jeśli nie wiesz, czy strona internetowa używa WordPressa, czy nie, w większości przypadków jest bardzo łatwy sposób, aby się tego dowiedzieć.
Możesz po prostu wpisać: www.addressofthewebsite.com/wp-admin
Co w większości przypadków spowoduje pojawienie się gui logowania wp-admin, chyba że administrator go wyłączył.
Innym świetnym sposobem na sprawdzenie, czy strona działa na WordPressie jest użycie wpscan. Wpscan jest preinstalowany zarówno w Kali jak i ParrotSec.
wpscan -u www.addressofyourtarget.com
W moim przypadku, skanowanie maszyny wirtualnej Mr. Robot ujawnia co następuje.
Jak widać, wyraźnie wskazuje, że strona używa WordPressa. Ponadto, przedstawia 46 zidentyfikowanych podatności. Teraz, większość hosterów i ostatnie wersje WordPressa będzie blokować skanowanie jak to domyślnie. Więc najprawdopodobniej jest to tylko będzie działać z przestarzałych wersji WordPress bez żadnej ochrony od hostera.
Ok, tak daleko tak dobrze. Teraz możemy to zweryfikować, sprawdzając, czy strona logowania istnieje, przechodząc do adresu URL witryny + /wp-admin w następujący sposób:
I na pewno maska Login się pojawia.
Krok 2 – Grabbing Code with Burpsuite
Teraz przychodzi trudna część, znalezienie nazwy użytkownika. Możesz zacząć od admina, ale WordPress zazwyczaj generuje losową nazwę użytkownika, więc może to być trudne do rozgryzienia i możesz potrzebować dalszych badań nad celem.
W przykładzie Mr. Robot, wiem, że nazwa użytkownika to Elliot (nie jest zbyt trudna do odgadnięcia). Możesz również spróbować uruchomić hydrę przeciwko kilku listom nazw użytkowników, ale najpierw musimy użyć burpsuite, aby złapać trochę kodu ze strony logowania.
Uruchom burpsuite wpisując
sudo burpsuite
Utwórz nowy projekt tymczasowy używając domyślnych ustawień Burp.
Przejdź do zakładki Target -> Scope i kliknij na Add, aby dołączyć stronę wp-login do zakresu. Wybierz Tak w wyskakującym okienku dialogowym.
Następnie przejdź do menu Preferencje w Firefoksie i przewiń w dół, aż znajdziesz Network Proxy. Kliknij na Ustawienia.
Wybierz Ręczna konfiguracja proxy i wpisz IP 127.0.0.1 i port 8080. Zaznacz „Użyj tego serwera proxy dla wszystkich protokołów”. Kliknij OK.
Powróć do Burpsuite. Otwórz zakładkę Proxy. Teraz z powrotem do strony WP-Login. Wprowadź dowolną losową nazwę użytkownika i hasło i kliknij Zaloguj się. Upewnij się, że Privacy Badger, uBlock Origins i NoScript są wyłączone dla witryny.
Po kliknięciu zaloguj się, wróć do Burpsuite i spójrz na dane wyjściowe.
log=root&pwd=1234&wp-submit=Log+In&redirect_to=http%3A%2F%2F192.168.1.109%2Fwp-admin%2F&testcookie=1
Teraz mamy coś, czym możemy nakarmić Hydrę.
Krok 3 – Znalezienie poprawnej nazwy użytkownika
Zabawmy się trochę, aby dać ci pomysł jak możesz znaleźć nazwę użytkownika dla twojego celu. VM, której używamy w tym przykładzie, jak wspomniano powyżej, jest związana z Mr. Robot. Jest więc bardzo prawdopodobne, że nazwa użytkownika zostanie znaleziona w jakiejś ciekawostce, która ma związek z Mr. Robot.
Najpierw wróć do swojego Burpsuite i zamknij go. Nie jest on nam już teraz potrzebny. Wróć też do ustawień Proxy i wyłącz je ponownie.
Teraz udam się na stronę Wikipedii Mr. Robot: https://en.wikipedia.org/wiki/Mr._Robot
I stworzę listę nazw użytkowników z tej właśnie strony, używając CeWL.
Otwórz nowe okno Terminala i wpisz
sudo cewl -w usernames.txt -d1 -m4 https://en.wikipedia.org/wiki/Mr._Robot
Rozłóżmy to na czynniki pierwsze.
- -w usernames.txt – powinno być całkiem jasne, jest to nazwa wordlisty, która zostanie utworzona
- -d1 – Określa głębokość, na jaką CeWL będzie indeksował stronę. 1 oznacza, że CeWL pozostanie dokładnie na tej stronie i nie będzie otwierał żadnych linków na niej zawartych.
- -m4 – Określa minimalną długość słowa, które zostanie umieszczone na liście
- https://en.wikipedia.org/wiki/Mr._Robot – oczywiście strona, którą będziemy indeksować.
Jak więc widzisz, możesz zastosować tę technikę do każdej docelowej, odpowiedniej strony internetowej.
Wykonanie szybkiego
ls
Pokazuje nam, że nasza nazwa użytkownika.txt został utworzony.
W niektórych przypadkach masz szczęście używając wpscan do wyliczenia nazwy użytkownika, więc zawsze spróbuj tego również:
wpscan --url http://www.targetwebsite.com --enumerate u
Teraz zamierzamy użyć Hydry do Bruteforce tej listy przeciwko stronie wp-login.
Krok 4 – Bruteforcing Usernames with Hydra
W porządku, czas podać nazwy użytkowników do naszej Hydry. Tę konkretną metodę znalazłem na jednym z wielu Walkthrough z Vulnhuba, choć nie pamiętam dokładnie, które to było, ale oddaję kredyt tam, gdzie kredyt jest należny. Otwórzmy nowe okno terminala i wpiszmy:
hydra -V -L usernames.txt -p whatever 192.168.1.109 http-post-form '/wp-login.php:log=^USER^&pwd=^PASS^&wp-submit=Log:F=Invalid username'
Let’s break this down.
- -V – Verbose
- -L – Our usernames.txt list
- -p whatever – Hasło, nie obchodzi nas to, bo chcemy poznać nazwę użytkownika
- http-post-form – Typ ataku Brute Force, który chcemy przeprowadzić
- /wp-login.php – Ścieżka do formularza logowania
- log = ^USER^&pwd=^PASS^&wp-submit=Log+In – Wartości, które zostaną wysłane do formularza, gdzie ^USER^ i ^PASS^ są symbolami zastępczymi dla naszych opcji -L i -p
- F=Invalid username – Informuje hydrę, że próba nie powiodła się, jeśli zwróci Invalid username
W porządku, uruchommy to polecenie, dobrze?
I z pewnością, dostajemy zwrot, że logowanie z nazwą użytkownika elliot się powiodło (Co nie było, to tylko potwierdziło, że formularz internetowy nie zwrócił nieprawidłowej nazwy użytkownika).
Więc nadal musimy wymyślić hasło. Ale przynajmniej mamy nazwę użytkownika.
Krok 5 – Brute Forcing the Password
Teraz moglibyśmy również użyć Hydry do Brute Force’owania hasła użytkownika, ale wolę użyć wpscan, ponieważ składnia jest łatwiejsza.
wpscan --url http://192.168.1.109/wp-login.php --passwords /usr/share/wordlists/rockyou.txt.gz --usernames elliot --wp-content-dir http://192.168.1.109/wp-login.php
rockyou.txt.gz jest tylko przykładem, zastąp go jakąkolwiek listą haseł, której chcesz użyć.
I voila, mamy nazwę użytkownika i hasło.
Krok 6 – Wdrażanie złośliwego kodu do WordPress
W porządku, teraz, gdy mamy dostęp administratora do WordPress, jest kilka sposobów, w jaki możemy się stąd wydostać. Pokażę ci jeden z łatwiejszych.
Na twoim atakującym komputerze przejdź do Places -> File System -> usr -> share -> webshells -> php i otwórz php-reverse-shell.php
Kopiuj całą jego zawartość:
Teraz w WordPress, przejdź do Wygląd -> Edytor i wybierz szablon 404.php. To tylko przykład, możesz zaimplementować kod na wiele różnych sposobów.
Teraz wklej tutaj swój kod, tak aby wyglądał mniej więcej tak:
Edytuj linie zaznaczone na żółto, tak aby IP wskazywało na Twój atakujący komputer i wybierz port.
Krok 7 – Uruchomienie Netcat listener
Teraz z powrotem na atakującym komputerze, uruchamiamy Netcat listener:
nc -lvp 443
Wtedy otworzysz stronę 404 jak po prostu wchodząc na link: www.yourtargetwebsite.com/404
I jesteśmy w środku! Nie tylko zhakowaliśmy konto administratora WordPressa, ale również uzyskaliśmy dostęp do samego serwera. Stąd musisz użyć swoich umiejętności, aby uzyskać podwyższony dostęp, ale to już nie powinno być zbyt trudne.
Jak widzisz, CTF’y są świetnym sposobem na naukę nowych rzeczy.
Do następnego razu, kontynuuj hakowanie!
*Wszystkie techniki przedstawione w tutorialach na ceos3c.com są przeznaczone wyłącznie do celów edukacyjnych.
Wszystkie techniki nauczane tutaj są przeznaczone do użycia tylko w zamkniętym środowisku laboratoryjnym lub w porozumieniu z drugą osobą.
Jeśli używasz którejkolwiek z tych technik do nielegalnych celów, Ceos3c nie może być pociągnięte do odpowiedzialności za ewentualne konsekwencje prawne.