Welcome back fellow security enthusiasts! Idag kommer jag att visa er hur man hackar en WordPress-webbplats med Mr. Robot CTF som exempel. Jag har precis arbetat igenom denna utmärkta CTF själv och lärde mig massor i processen. Jag ville höja mitt spel med Web Vulnerability Analysis ett snäpp och började med denna CTF.
Om du verkligen vill lära dig cybersäkerhet rekommenderar jag starkt att du läser min enorma Getting started with Cybersecurity in 2019 nybörjarguide, där jag lär dig hur du ska börja, helt gratis! Även värt att kolla in är Best Hacking Books in 2019 artikeln.
DISCLAIMER: Denna ”hur man hackar en WordPress-webbplats” är en Ethical Hacking Tutorial och inriktad på säkerhetspersonal. Använd inte, jag upprepar, använd inte dessa tekniker utan skriftligt samtycke från den mottagande parten. Om du använder denna handledning i ett olagligt sammanhang kan lagliga anklagelser och/eller fängelsetid vänta på dig. Använd endast dessa tekniker i en sluten laboratoriemiljö.
En CTF är ett så kallat Capture the Flag-spel, där ditt mål är att samla ett visst antal flaggor (eller nycklar, för den delen). CTF:er används för att öva upp dina hackarfärdigheter i en säker och laglig miljö. Jag kan rekommendera Vulnhub som en resurs för ett urval av utmärkta CTF:er.
Okej, då sätter vi igång.
- Steg 1 – Utvärdera om en webbplats använder WordPress
- Steg 2 – Ta tag i koden med Burpsuite
- Steg 3 – Hitta rätt användarnamn
- Steg 4 – Bruteforcing av användarnamn med Hydra
- Steg 5 – Brute Forcing av lösenordet
- Steg 6 – Implementera skadlig kod i WordPress
- Steg 7 – Starta en Netcat-lyssnare
- Please Share!
Steg 1 – Utvärdera om en webbplats använder WordPress
Om du inte vet om en webbplats använder WordPress eller inte finns det oftast ett mycket enkelt sätt att ta reda på det.
Du kan helt enkelt skriva: www.addressofthewebsite.com/wp-admin
Som i de flesta fall kommer att ge dig en wp-admin inloggningsgui, förutom att administratören har inaktiverat den.
Ett annat bra sätt att kontrollera om en webbplats kör WordPress är att använda wpscan. Wpscan finns förinstallerat i både Kali och ParrotSec.
wpscan -u www.addressofyourtarget.com
I mitt fall avslöjar skanning av Mr. Robot VM följande.
Som du kan se visar det tydligt att webbplatsen använder WordPress. Dessutom presenteras 46 identifierade sårbarheter. De flesta värdar och de senaste versionerna av WordPress blockerar som standard en sådan här skanning. Så sannolikt kommer detta bara att fungera med föråldrade WordPress-versioner utan något skydd från en hoster.
Okej, så långt så bra. Nu kan vi verifiera det genom att kontrollera om inloggningssidan finns genom att navigera till webbplatsens URL + /wp-admin så här:
Och visst, inloggningsmasken dyker upp.
Steg 2 – Ta tag i koden med Burpsuite
Nu kommer den svåra delen, att ta reda på användarnamnet. Du kan börja med admin, men WordPress genererar vanligtvis ett slumpmässigt användarnamn, så det kan vara svårt att räkna ut och du kan behöva göra ytterligare efterforskningar om målet.
I Mr. Robot-exemplet vet jag att användarnamnet är Elliot (inte alltför svårt att gissa). Du kan också försöka köra hydra mot ett par användarnamnslistor, men först måste vi använda burpsuite för att hämta lite kod från inloggningssidan.
Starta burpsuite genom att skriva
sudo burpsuite
Skapa ett nytt temporärt projekt med hjälp av Burps standardinställningar.
Navigera till fliken Target -> Scope och klicka på Add för att inkludera wp-login-sidan i scope. Välj Ja i popup-dialogen.
Nästa steg är att gå till menyn Inställningar i Firefox och bläddra hela vägen ner tills du hittar Nätverksproxy. Klicka på Inställningar.
Välj Manuell proxikonfiguration och ange IP 127.0.0.1 och port 8080. Markera ”Använd den här proxyservern för alla protokoll”. Klicka på OK.
Tillbaka till Burpsuite. Öppna fliken Proxy. Nu tillbaka till WP-Login-sidan. Ange valfritt slumpmässigt användarnamn och lösenord och klicka på Logga in. Se till att Privacy Badger, uBlock Origins och NoScript är inaktiverade för webbplatsen.
När du klickat på inloggning går du tillbaka till Burpsuite och tittar på resultatet.
log=root&pwd=1234&wp-submit=Log+In&redirect_to=http%3A%2F%2F192.168.1.109%2Fwp-admin%2F&testcookie=1
Nu har vi något som vi kan mata till Hydra.
Steg 3 – Hitta rätt användarnamn
Låt oss ha lite roligt för att ge dig en idé om hur du kan ta reda på ett användarnamn för ditt mål. Den virtuella maskinen som vi använder för det här exemplet är, som nämnts ovan, med Mr. Robot-tema. Så det är mycket troligt att användarnamnet kommer att hittas i någon trivia som har med Mr. Robot att göra.
Först går du tillbaka till din Burpsuite och stänger den. Vi behöver den inte längre just nu. Gå också tillbaka till dina proxyinställningar och inaktivera proxyn igen.
Nu går jag till Mr Robot Wikipediasidan: https://en.wikipedia.org/wiki/Mr._Robot
Och jag kommer att skapa en användarnamnslista från just den här sidan med hjälp av CeWL.
Öppna ett nytt terminalfönster och skriv
sudo cewl -w usernames.txt -d1 -m4 https://en.wikipedia.org/wiki/Mr._Robot
Låt oss dela upp det här.
- -w usernames.txt – borde vara ganska tydligt, detta är namnet på ordlistan som kommer att skapas
- -d1 – Definierar djupet i vilket CeWL ska crawla webbplatsen. 1 anger att den kommer att stanna på just denna webbplats och inte öppna några länkar på den
- -m4 – Definierar den minsta längden på ordet som kommer att läggas in i listan
- https://en.wikipedia.org/wiki/Mr._Robot – uppenbarligen den webbplats vi ska crawla.
Så som du ser kan du tillämpa den här tekniken på vilken målrelevant webbplats som helst.
Körning av en snabb
ls
Visst oss, att våra användarnamn.txt skapades.
I vissa fall har du tur med att använda wpscan för att räkna upp användarnamnen, så prova alltid detta också:
wpscan --url http://www.targetwebsite.com --enumerate u
Nu kommer vi att använda Hydra för att Bruteforce denna lista mot wp-loginsidan.
Steg 4 – Bruteforcing av användarnamn med Hydra
Okej, dags att mata användarnamnen till vår Hydra. Jag hittade just den här metoden på en av de många Walkthroughs från Vulnhub, även om jag inte minns exakt vilken det var, men jag ger kredit där kredit är skyldig. Öppna ett nytt terminalfönster och skriv:
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'
Låt oss dela upp det här.
- -V – Verbose
- -L – Våra användarnamn.txt list
- -p whatever – Lösenordet, vi bryr oss inte, eftersom vi vill ta reda på användarnamnet
- http-post-form – Den typ av Brute Force-attack som vi vill köra
- /wp-login.php – Sökvägen till inloggningsformuläret
- log = ^USER^&pwd=^PASS^&wp-submit=Log+In – De värden som ska skickas till formuläret, där ^USER^ och ^PASS^ är platshållare för våra alternativ -L och -p
- F=Invalid username – Säger till hydra att försöket misslyckades om det returnerar Invalid username
Okej, låt oss köra kommandot, ska vi?
Och visst, vi får tillbaka att inloggningen med användarnamnet elliot lyckades (Vilket den inte gjorde, den bekräftade bara att webbformuläret inte returnerade ogiltigt användarnamn).
Så vi behöver fortfarande lista ut lösenordet. Men vi har åtminstone ett användarnamn.
Steg 5 – Brute Forcing av lösenordet
Nu skulle vi också kunna använda Hydra för att Brute Force av användarens lösenord, men jag föredrar att använda wpscan eftersom syntaxen är enklare.
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 är bara ett exempel, byt ut det mot den lösenordslista du vill använda.
Och voila, vi har användarnamnet och lösenordet.
Steg 6 – Implementera skadlig kod i WordPress
Okej, nu när vi har fått administratörsåtkomst till WordPress finns det ett par sätt vi kan gå vidare härifrån. Jag ska visa dig ett av de enklare.
På din angripande dator går du till Places -> File System -> usr -> share -> webshells -> php och öppnar php-reverse-shell.php
Kopiera allt innehåll:
Nu i WordPress, navigera till Utseende -> Redaktör och välj 404.php-mallen. Detta är bara ett exempel, du kan implementera koden på många olika sätt.
Klipp nu in din kod här så att den ser ut ungefär så här:
Redigera de gulmarkerade raderna så att IP:n pekar på din angripande dator och välj en port.
Steg 7 – Starta en Netcat-lyssnare
Nu tillbaka på den attackerande datorn startar vi en Netcat-lyssnare:
nc -lvp 443
Därefter kommer du att öppna 404-sidan som om du bara skulle gå till länken: www.yourtargetwebsite.com/404
Och vi är inne! Vi hackade inte bara WordPress Admin-kontot, vi fick även tillgång till själva servern. Härifrån måste du använda dina färdigheter för att få förhöjd åtkomst, men det borde inte vara så svårt längre nu.
Du kan se att CTF:er är ett bra sätt att lära sig nya saker.
Till nästa gång, fortsätt att hacka!
*Alla tekniker som tillhandahålls i handledningarna på ceos3c.com är endast avsedda för utbildningsändamål.
Alla tekniker som lärs ut här är endast avsedda att användas i en sluten laboratoriemiljö eller i samförstånd med en andra part.
Om du använder någon av dessa tekniker i olagliga syften kan Ceos3c inte hållas ansvarig för eventuella lagliga konsekvenser.