Welcome back fellow security enthusiasts! Ma a Mr. Robot CTF példáján keresztül mutatom meg, hogyan lehet feltörni egy WordPress webhelyet. Magam is épp most dolgoztam végig ezt a kiváló CTF-et, és rengeteget tanultam közben. Szerettem volna egy fokkal magasabb szintre emelni a webes sebezhetőségelemző játékomat, és ezzel a CTF-fel kezdtem.
Ha tényleg meg akarod tanulni a kiberbiztonságot, nagyon ajánlom, hogy olvasd el a hatalmas Getting started with Cybersecurity in 2019 beginner guide-omat, ahol megtanítom, hogyan kezdd el, teljesen ingyen! Érdemes megnézni a Best Hacking Books in 2019 cikket is.
DISCLAIMER: Ez a “how to hack a WordPress website” egy Ethical Hacking Tutorial és a biztonsági szakemberek számára készült. Ne, ismétlem, ne használja ezeket a technikákat a fogadó fél írásos beleegyezése nélkül. Ha ezt a bemutatót jogellenes kontextusban használja, törvényes vádak és / vagy börtönbüntetés várhat Önre. Csak zárt laboratóriumi környezetben használd ezeket a technikákat.
A CTF egy úgynevezett Capture the Flag játék, ahol a célod egy bizonyos számú zászló (vagy kulcs) összegyűjtése. A CTF-ek arra szolgálnak, hogy biztonságos és legális környezetben gyakorold a hackerképességeidet. A Vulnhubot tudom ajánlani, mint kiváló CTF-ekből álló forrást.
Oké, kezdjük el.
- 1. lépés – Annak értékelése, hogy egy webhely WordPress-t használ-e
- 2. lépés – Kód lecsípése a Burpsuite segítségével
- 3. lépés – A megfelelő felhasználónév megtalálása
- 4. lépés – Bruteforcing Usernames with Hydra
- 5. lépés – Brute Forcing the Password
- 6. lépés – Rosszindulatú kód implementálása a WordPressbe
- 7. lépés – Netcat listener indítása
- Kérem, ossza meg!
1. lépés – Annak értékelése, hogy egy webhely WordPress-t használ-e
Ha nem tudod, hogy egy webhely WordPress-t használ-e vagy sem, többnyire van egy nagyon egyszerű módja annak kiderítésére.
Egyszerűen beírhatod: www.addressofthewebsite.com/wp-admin
Az esetek többségében megjelenik a wp-admin login gui, kivéve, ha az admin letiltotta.
Egy másik remek módja annak ellenőrzésére, hogy egy Weboldalon WordPress fut-e, a wpscan használata. A wpscan előre telepítve van mind a Kaliban, mind a ParrotSecben.
wpscan -u www.addressofyourtarget.com
Az én esetemben a Mr. Robot VM átvizsgálása a következőket mutatja.
Mint látható, egyértelműen jelzi, hogy a webhely WordPress-t használ. Emellett 46 azonosított sebezhetőséget is bemutat. Nos, a legtöbb tárhelyszolgáltató és a WordPress legújabb verziói alapértelmezés szerint blokkolják az ilyen vizsgálatot. Tehát valószínűleg ez csak elavult WordPress verziókkal fog működni, anélkül, hogy a tárhelyszolgáltató bármilyen védelmet nyújtana.
Oké, eddig minden rendben. Most ellenőrizhetjük, hogy létezik-e a bejelentkezési oldal, ha a weboldal URL + /wp-admin címére navigálunk, így:
És valóban, a bejelentkezési maszk megjelenik.
2. lépés – Kód lecsípése a Burpsuite segítségével
Most jön a nehezebb rész, a felhasználónév kiderítése. Kezdheted az admin-nal, de a WordPress általában véletlenszerű felhasználónevet generál, így nehéz lehet kitalálni, és lehet, hogy további kutatást kell végezned a célpontról.
A Mr. Robot példában tudom, hogy a felhasználónév Elliot (nem túl nehéz kitalálni). Megpróbálhatod a hydra futtatását néhány felhasználónév-listával szemben is, de előbb a burpsuite segítségével meg kell szereznünk néhány kódot a bejelentkezési oldalról.
A burpsuite indítása a
sudo burpsuite
Elkészítünk egy új ideiglenes projektet a burp alapértelmezett beállításainak használatával.
Navigálj a Target -> Scope fülre, és kattints a Add-ra, hogy a wp-login oldalt felvehesd a scope-ba. A felugró párbeszédablakban válaszd az Igen lehetőséget.
A következő lépésben menj a Firefox Beállítások menüjébe, és görgess egészen lefelé, amíg meg nem találod a Hálózati proxy-t. Kattintson a Beállítások gombra.
Válassza a Kézi proxy-konfigurációt, és adja meg az IP 127.0.0.1 és a 8080-as portot. Jelölje be a “Use this proxy server for all protocols” (Ezt a proxykiszolgálót használja minden protokollhoz) jelölőnégyzetet. Kattintson az OK gombra.
Vissza a Burpsuite-hoz. Nyissa meg a Proxy lapot. Most vissza a WP-Login oldalra. Adj meg egy tetszőleges felhasználónevet és jelszót, majd kattints a Bejelentkezés gombra. Győződj meg róla, hogy a Privacy Badger, az uBlock Origins és a NoScript ki van kapcsolva az oldalhoz.
Miután rákattintottál a bejelentkezésre, menj vissza a Burpsuite-ra, és nézd meg a kimenetet.
log=root&pwd=1234&wp-submit=Log+In&redirect_to=http%3A%2F%2F192.168.1.109%2Fwp-admin%2F&testcookie=1
Most van valami, amit meg tudunk etetni a Hydra-val.
3. lépés – A megfelelő felhasználónév megtalálása
Legyen egy kis móka, hogy ötletet adjunk, hogyan találhatod meg a célpontod felhasználónevét. A VM, amit ehhez a példához használunk, mint már említettük, Mr. Robot témájú. Tehát nagyon valószínű, hogy a felhasználónevet valami olyan apróságban fogjuk megtalálni, aminek köze van a Mr. Robothoz.
Először is menj vissza a Burpsuite-odba, és zárd be. Most már nincs rá szükségünk. Szintén menj vissza a Proxy beállításaidhoz, és kapcsold ki újra a Proxyt.
Most a Mr. Robot Wikipedia oldalára megyek: https://en.wikipedia.org/wiki/Mr._Robot
És pontosan erről az oldalról fogok létrehozni egy felhasználónévlistát a CeWL segítségével.
Nyissunk egy új terminálablakot, és írjuk be
sudo cewl -w usernames.txt -d1 -m4 https://en.wikipedia.org/wiki/Mr._Robot
Lépjünk tovább.
- -w usernames.txt – elég egyértelműnek kell lennie, ez a létrehozandó szólista neve
- -d1 – Meghatározza, hogy a CeWL milyen mélységben fogja feltérképezni a weboldalt. Az 1 azt jelzi, hogy pontosan ezen az oldalon fog maradni, és nem nyit meg semmilyen linket rajta.
- -m4 – Meghatározza a szó minimális hosszát, ami a listába kerül
- https://en.wikipedia.org/wiki/Mr._Robot – nyilván a weboldal, amit át fogunk mászni.
Szóval, mint látjuk, ezt a technikát bármilyen célzottan releváns weboldalra alkalmazhatjuk.
Egy gyors
ls
futtatással
ls
megmutatjuk, hogy a felhasználónevünk.txt létrejött.
Egyes esetekben szerencsénk van a wpscan használatával a felhasználónevek felsorolásához, ezért mindig próbáljuk ki ezt is:
wpscan --url http://www.targetwebsite.com --enumerate u
Most a Hydra segítségével Bruteforce-ozzuk ezt a listát a wp-login oldal ellen.
4. lépés – Bruteforcing Usernames with Hydra
Rendben, ideje betáplálni a felhasználóneveket a Hydránkba. Ezt a bizonyos módszert a Vulnhub sok Walkthroughs egyikén találtam, bár nem emlékszem pontosan melyik volt, de adok hitelt, ahol hitelt érdemel. Nyissunk egy új terminálablakot, és írjuk be:
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'
Bontjuk le:
- -V – Verbose
- -L – A felhasználóneveink.txt list
- -p whatever – A jelszó, nem érdekel minket, mert a felhasználónevet akarjuk megtudni
- http-post-form – A Brute Force támadás típusa, amit szeretnénk futtatni
- /wp-login.php – A bejelentkezési űrlap elérési útvonala
- log = ^USER^&pwd=^PASS^&wp-submit=Log+In – Az űrlapra küldendő értékek, ahol ^USER^ és ^PASS^ a -L és -p opcióink helyőrzői
- F=érvénytelen felhasználónév – Megmondja a hidrának, hogy a kísérlet sikertelen, ha érvénytelen felhasználónevet ad vissza
Rendben, futtassuk le a parancsot, jó?
És valóban, azt kapjuk vissza, hogy a bejelentkezés az elliot felhasználónévvel sikeres volt (Ami nem volt az, csak megerősítette, hogy a webes űrlap nem adott vissza érvénytelen felhasználónevet).
Szóval még ki kell találnunk a jelszót. De legalább van egy felhasználónevünk.
5. lépés – Brute Forcing the Password
Most használhatnánk a Hydra-t is a felhasználó jelszavának Brute Force-jára, de én inkább a wpscan-t használom, mivel a szintaxis egyszerűbb.
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 csak egy példa, cseréld ki bármilyen jelszólistával, amit használni szeretnél.
És voilá, megvan a felhasználónév és a jelszó.
6. lépés – Rosszindulatú kód implementálása a WordPressbe
Jól van, most, hogy admin hozzáférést kaptunk a WordPresshez, többféleképpen is továbbléphetünk. Megmutatom az egyik egyszerűbbet.
A támadó számítógépeden menj a Places -> File System -> usr -> share -> webshells -> php menüpontra és nyisd meg a php-reverse-shellt.php
Másold ki az egész tartalmát:
Most a WordPressben navigálj a Megjelenés -> Szerkesztőre és válaszd ki a 404.php sablont. Ez csak egy példa, a kódot sokféleképpen megvalósíthatod.
Most illeszd be ide a kódodat, hogy valahogy így nézzen ki:
A sárgával jelölt sorokat úgy szerkeszd, hogy az IP a támadó számítógépedre mutasson, és válassz egy portot.
7. lépés – Netcat listener indítása
Most vissza a támadó számítógépen, indítunk egy Netcat listenert:
nc -lvp 443
Majd megnyitjuk a 404-es oldalt, mintha csak a következő linkre mennénk: www.yourtargetwebsite.com/404
And we are in! Nem csak a WordPress admin fiókját sikerült feltörnünk, hanem magához a szerverhez is hozzáférhettünk. Innen már csak a képességeidet kell használnod, hogy emelt szintű hozzáférést szerezz, de ez most már nem lehet túl nehéz.
Láthatod, a CTF-ek remek módja annak, hogy új dolgokat tanulj meg.
A következő alkalomig, csak így tovább a hackeléssel!
*A ceos3c.com-on található oktatóanyagokban található összes technika kizárólag oktatási célokat szolgál.
Az itt tanított technikák kizárólag zárt laboratóriumi környezetben vagy egy második féllel egyetértésben használhatók.
Ha bármelyik technikát illegális célokra használja, a Ceos3c nem vállal felelősséget az esetleges törvényes következményekért.