Vítejte zpět kolegové bezpečnostní nadšenci! Dnes vám ukážu, jak hacknout webovou stránku WordPress na příkladu CTF Mr. Robot. Sám jsem právě tuto vynikající CTF zpracoval a hodně jsem se při tom naučil. Chtěl jsem svou hru na analýzu zranitelnosti webu posunout o úroveň výš a začal jsem s tímto CTF.
Pokud se opravdu chcete naučit kybernetickou bezpečnost, vřele doporučuji přečíst si mého velkého průvodce Začínáme s kybernetickou bezpečností v roce 2019 pro začátečníky, kde vás naučím, jak začít, a to zcela zdarma! Za pozornost stojí také článek Nejlepší knihy o hackingu v roce 2019.
DISCLAIMER: Tento článek „jak se nabourat do webových stránek WordPressu“ je výukový kurz etického hackingu a je zaměřen na bezpečnostní profesionály. Nepoužívejte, opakuji, nepoužívejte tyto techniky bez písemného souhlasu přijímající strany. Pokud tento návod použijete v nezákonném kontextu, mohou vás čekat zákonná obvinění a/nebo vězení. Tyto techniky používejte pouze v uzavřeném laboratorním prostředí.
CTF je takzvaná hra Capture the Flag, kde je vaším cílem nasbírat určitý počet vlajek (nebo třeba klíčů). CTF slouží k procvičování hackerských dovedností v bezpečném a legálním prostředí. Jako zdroj pro výběr vynikající CTF mohu doporučit Vulnhub.
Ok, začněme.
- Krok 1 – Vyhodnocení, zda webová stránka používá WordPress
- Krok 2 – Chytání kódu pomocí Burpsuite
- Krok 3 – Zjištění správného uživatelského jména
- Krok 4 – Bruteforcing uživatelských jmen pomocí Hydry
- Krok 5 – Hrubé vynucení hesla
- Krok 6 – Implementace škodlivého kódu do WordPressu
- Krok 7 – Spuštění posluchače Netcat
- Prosím, sdílejte!
Krok 1 – Vyhodnocení, zda webová stránka používá WordPress
Pokud nevíte, zda webová stránka používá WordPress, nebo ne, většinou existuje velmi snadný způsob, jak to zjistit.
Můžete jednoduše zadat: www.addressofthewebsite.com/wp-admin
Což ve většině případů vyvolá přihlašovací gui wp-admin, s výjimkou toho, že jej administrátor zakázal.
Dalším skvělým způsobem, jak zjistit, zda Webová stránka používá WordPress, je použití wpscan. Wpscan je předinstalován v Kali i ParrotSec.
wpscan -u www.addressofyourtarget.com
V mém případě skenování virtuálního počítače pana Robota odhalilo následující.
Jak vidíte, jasně ukazuje, že web používá WordPress. Také vám předkládá 46 identifikovaných zranitelností. Většina hostitelů a nejnovějších verzí systému WordPress nyní takovéto skenování ve výchozím nastavení blokuje. Takže s největší pravděpodobností to bude fungovat pouze se zastaralými verzemi WordPressu bez jakékoli ochrany ze strany hostitele.
Ok, zatím to vypadá dobře. Nyní to můžeme ověřit tak, že zkontrolujeme, zda přihlašovací stránka existuje, a to tak, že přejdeme na adresu URL webu + /wp-admin takto:
A jistě, maska přihlášení se objeví.
Krok 2 – Chytání kódu pomocí Burpsuite
Teď přijde ta obtížnější část, zjištění uživatelského jména. Mohli byste začít s adminem, ale WordPress obvykle generuje náhodné uživatelské jméno, takže může být obtížné ho zjistit a možná budete muset provést nějaký další průzkum cíle.
V příkladu pana Robota vím, že uživatelské jméno je Elliot (není příliš těžké ho uhodnout). Můžete také zkusit spustit hydru proti několika seznamům uživatelských jmen, ale nejprve musíme použít burpsuite, abychom získali nějaký kód z přihlašovací stránky.
Spuštění burpsuite zadáním
sudo burpsuite
Vytvořte nový dočasný projekt pomocí výchozího nastavení Burp.
Přejděte na kartu Target -> Scope a klikněte na Add, abyste do rozsahu zahrnuli stránku wp-login. Ve vyskakovacím dialogu vyberte možnost Ano.
Dále přejděte do nabídky Předvolby Firefoxu a sjeďte až dolů, dokud nenajdete položku Síťová proxy. Klikněte na Nastavení.
Zvolte možnost Ruční konfigurace proxy a zadejte IP 127.0.0.1 a port 8080. Zaškrtněte políčko „Použít tento proxy server pro všechny protokoly“. Klikněte na tlačítko OK.
Zpět na Burpsuite. Otevřete kartu Proxy server. Nyní se vraťte na stránku WP-Login. Zadejte libovolné náhodné uživatelské jméno a heslo a klikněte na tlačítko Přihlásit. Ujistěte se, že jsou pro web zakázány aplikace Privacy Badger, uBlock Origins a NoScript.
Po kliknutí na přihlášení se vraťte do Burpsuite a podívejte se na výstup.
log=root&pwd=1234&wp-submit=Log+In&redirect_to=http%3A%2F%2F192.168.1.109%2Fwp-admin%2F&testcookie=1
Teď máme něco, čím můžeme nakrmit Hydru.
Krok 3 – Zjištění správného uživatelského jména
Uděláme si malou legraci, abychom vám přiblížili, jak byste mohli zjistit uživatelské jméno vašeho cíle. Virtuální počítač, který používáme pro tento příklad, je, jak bylo uvedeno výše, s tématikou seriálu Pan Robot. Je tedy velmi pravděpodobné, že uživatelské jméno bude nalezeno v nějaké drobnosti, která souvisí s panem Robotem.
Nejprve se vraťte do Burpsuite a zavřete jej. Teď už ho nepotřebujeme. Také se vraťte do nastavení proxy serveru a opět ho zakažte.
Teď zamířím na stránku Pan Robot na Wikipedii: https://en.wikipedia.org/wiki/Mr._Robot
A přesně z této stránky vytvořím seznam uživatelských jmen pomocí CeWL.
Otevřete nové okno terminálu a napište
sudo cewl -w usernames.txt -d1 -m4 https://en.wikipedia.org/wiki/Mr._Robot
Rozložíme si to.
- -w usernames.txt – mělo by být celkem jasné, že se jedná o název seznamu slov, který bude vytvořen
- -d1 – Určuje hloubku, ve které bude CeWL procházet webové stránky. Jednička znamená, že zůstane přesně na tomto webu a nebude na něm otevírat žádné odkazy.
- -m4 – Definuje minimální délku slova, které bude zařazeno do seznamu
- https://en.wikipedia.org/wiki/Mr._Robot – zřejmě web, který budeme procházet.
Jak tedy vidíte, mohli byste tuto techniku použít na jakoukoli cílovou relevantní webovou stránku.
Provedení rychlého
ls
Ukazuje nám, že naše uživatelská jména.txt byl vytvořen.
V některých případech máte štěstí při použití wpscan k výčtu uživatelských jmen, takže to vždy zkuste také:
wpscan --url http://www.targetwebsite.com --enumerate u
Nyní použijeme Hydru k Bruteforce tohoto seznamu proti stránce wp-login.
Krok 4 – Bruteforcing uživatelských jmen pomocí Hydry
Dobře, je čas nakrmit naše uživatelská jména Hydrou. Tuto konkrétní metodu jsem našel na jednom z mnoha Walkthrough z Vulnhubu, i když si nepamatuji přesně, který to byl, ale dávám za pravdu. Otevřete nové okno terminálu a zadejte:
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'
Nechte si to rozebrat.
- -V – Verbose
- -L – Naše uživatelská jména.txt list
- -p whatever – Heslo, to nás nezajímá, protože chceme zjistit uživatelské jméno
- http-post-form – Typ útoku hrubou silou, který chceme provést
- /wp-login.php – Cesta k přihlašovacímu formuláři
- log = ^USER^&pwd=^PASS^&wp-submit=Log+In – Hodnoty, které budou odeslány do formuláře, kde ^USER^ a ^PASS^ jsou zástupné znaky pro naše volby -L a -p
- F=Invalid username – Řekne hydře, že pokus selhal, pokud vrátí Invalid username
Dobře, spustíme ten příkaz?
A jistě, vrátí se nám, že přihlášení s uživatelským jménem elliot bylo úspěšné (Což nebylo, jen se potvrdilo, že webový formulář nevrátil neplatné uživatelské jméno).
Takže ještě musíme zjistit heslo. Ale alespoň máme uživatelské jméno.
Krok 5 – Hrubé vynucení hesla
Nyní bychom mohli k hrubému vynucení hesla uživatele použít také Hydru, ale raději používám wpscan, protože syntaxe je jednodušší.
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 je jen příklad, nahraďte ho libovolným seznamem hesel, který chcete použít.
A voilá, máme uživatelské jméno a heslo.
Krok 6 – Implementace škodlivého kódu do WordPressu
Pokud jsme získali administrátorský přístup do WordPressu, můžeme postupovat několika způsoby. Ukážu vám jeden z těch jednodušších.
Na útočícím počítači přejděte do Místa -> Souborový systém -> usr -> sdílet -> webshells -> php a otevřete php-reverse-shell.php
Zkopírujte celý jeho obsah:
Nyní ve WordPressu přejděte do Vzhled -> Editor a vyberte šablonu 404.php. Toto je pouze příklad, kód můžete implementovat mnoha různými způsoby.
Nyní sem vložte svůj kód tak, aby vypadal nějak takto:
Upravte žlutě označené řádky tak, aby IP ukazovala na váš útočící počítač, a vyberte port.
Krok 7 – Spuštění posluchače Netcat
Nyní opět na útočícím počítači spustíme posluchače Netcat:
nc -lvp 443
Poté otevřete stránku 404, jako byste právě přešli na odkaz: www.yourtargetwebsite.com/404
A jsme uvnitř! Nejenže jsme hackli administrátorský účet WordPressu, ale získali jsme i přístup k samotnému serveru. Odtud je třeba využít své schopnosti k získání zvýšeného přístupu, ale to už by teď nemělo být příliš těžké.
Jak vidíte, CTF jsou skvělým způsobem, jak se naučit nové věci.
Do příště pokračujte v hackování!
*Všechny techniky uvedené v tutoriálech na ceos3c.com jsou určeny výhradně pro vzdělávací účely.
Všechny zde vyučované techniky jsou určeny pouze k použití v uzavřeném laboratorním prostředí nebo po dohodě s druhou stranou.
Pokud některou z těchto technik používáte k nezákonným účelům, společnost Ceos3c nemůže nést odpovědnost za případné zákonné následky.