Ha sikerül segítség nélkül megoldani egy CTF-et, az tök jó. Ha közben még jól is lehet szórakozni, az még jobb. A Jack-of-all-Trades pont egy ilyen feladat.
Először végigszkenneltem a portokat:
sudo nmap -sS -Pn -sV --top-ports 100 $IP
Csak két port volt nyitva. A 22-es és a 80-as, de a funkciókat felcserélték! Szóval ez egy vicces CTF lesz. Akkor nem árt még egyszer átnézni mindent, hogy az összes rejtett poént kiderüljön.
sudo nmap -sS -Pn -p- $IP
De más nem volt nyitva. A Firefoxnak elég nehéz volt elmagyarázni, hogy mi akkor is böngészni akarunk a 22-es porton, ha az problémát okoz a lelki világának. Az about:config lapot megnyitva, fel kell venni egy új bejegyzést: network.
Utána már láthatjuk az oldalt. Jackről megtudjuk, hogy játékokat készít és imádja a dínókat. A forráskódban lesz egy base64 kódolt üzenet, benne egy jelszóval. Ezt érdemes elmenteni. Meg kellene tudni, hogy mihez kaptuk ezt a jelszót! Ugyancsak a forráskódban lesz egy rejtett link is.
A linket megnyitva felhasználó név és jelszó párost kell megadni. Az előzőleg kapott jelszót és a jack nevet használva nem jutunk be, sőt még hibaüzenet sincs, úgyhogy a hydra-t nem tudjuk használni. A forráskódban itt is van rejtett szöveg. A base32 csak az első lépcsőfok, utána még hex is kell. Legalábbis a Cyberchef magic modulja ezt meg tudja állapítani. Ha jobban megnézzük a szöveget, akkor mintha egy link is lenne benne. Tehát van még egy kódolási szint. Jobb híján a rot13-t próbáltam ki, és bingó! Olvasható lett a szöveg.
A leírás szerint a belépéshez szükséges infó a főoldalon van. Segítségként belinkelték a Stegosauridák wikipédia oldalát. Ennek nyomán megpróbáltam a korábban megtalált jelszót és a stegosaur-t, mint felhasználó nevet a bejelentkezésnél. Nem engedett be. Már épp azon keztem el agyalni, hogy talán a wikipédia oldal teljes szövegéből készítek egy felhasználó név listát, amikor eszembe jutott, hogy a főoldalon is egy Stegosaurus képe van.
Aztán idővel leesett a poén is, mint stego! Szteganográfia van a Stegosaurus képben! Mondtam én, hogy vicces CTF lesz ez! A jelszó tehát a képhez kell!
steghide extract -sf stego.jpg
Majd jött az újabb poén:
Hehe. Gotcha!
You're on the right path, but wrong image!
Szóval nem is a Stego a sztego. Valamennyi képet átnézve végül megvan a felhasználónév és a jelszó is. Ha belépünk a recovery.php-n, akkor a következő üzenetet kapjuk:
GET me a 'cmd' and I'll run it for you Future-Jack.
Szóval GET-es paraméterekkel kell parancsokat kiadni. Értem! A home könyvtárban van egy érdekes fájl, potenciális jelszavakkal. Az /etc/passwd fájlból pedig tudjuk a felhasználói nevet. Oké, mégis csak használni fogjuk a hydrát.
hydra -l jack -P jacks_password_list -s 80 $IP ssh
Csak 25 jelszót kell végignézni, gyorsan bejutunk. A felhasználói zászló a szokás CTF-ekkel ellentétben nem egy txt fájl volt, hanem egy jpg kép. Ebből megtudjuk, hogy Jack pingvin-leves recepttel rendelkezik. Mivel lusta voltam, egy online OCR olvasóval szedtem ki a flag-et. Lássuk, milyen titkok derülnek ki még Jackről!
Jack nem sudo-zik, ezért elsőre suid fájlokat kerestem.
find / -perm -u=s 2>/dev/null
Meglepetésemre a strings suid bites. Hmm, mire lehet használni ezt? Valami bináris fájlban kell kutatni? Aztán megint leesett. A strings sima cat-ként működik egy ASCII fájlon. Akkor talán a root flagat is megtudjuk? Általában root.txt szokott lenni, kipróbáltam, hátha szerencsém lesz.
Bingó! Jack nem csak megeszi a pingvineket, de a bőrükből szőnyeget készít, és egy hullát is rejteget a pincében. Enyje, Jack, most lebuktál.