Először feltérképezzük a rendszert a jó öreg nmap-el:
nmap -p- -Pn $IP
Eredményül megkapjuk a 22-es SSH portot, a 80-as webet és a 3306-os porton a MySQL-t. Az adatbázishoz nem lehet csatlakozni, az SSH-hoz még nincs elég információnk, marad a web.
A webes felületen először egy logó jelenik meg, majd átirányít egy bejelentkező felületre. Először végigpróbáltam a könnyű jelszó kombinációkat, hátha szerencsém lesz, de nem volt. A hibaüzenetek semmitmondóak, a forráskódban nincs használható nyom.
Kipróbáltam néhány SQL injection-t, de egyik sem vezetett sikerre, sőt észrevettem, hogy a túl sok próbálkozás után a webes felület végtelen homokórázásba kezd, tehát van valami védelem a tömeges próbálkozással szemben. Ezt erősítette meg, hogy a gobuster rendre elhasalt, ha a könyvtárakat akartam feltérképezni.
Gyakorlatilag az összes általam ismert támadási felületet védték. Vagy mégsem? Feltűnt, hogy a weboldal forráskódja elég bonyolult, sok átirányítás és beállítási lehetőség van benne. Ez valami keretrendszer lesz! Hátha annak van valami hibája.
A keretrendszerek általában feltűntetik a nevüket és a verziószámukat a forráskódban, de ebben az esetben nem találtam semmi használható nyomot. Mi lenne, ha megnézném a logót?
A logót lementette, majd egy képkereséssel megkaptam, hogy ez a MagnusBilling nevű rendszer. Egy gyors keresés az exploitot között:
searchsploit magnus
Semmi. Gyors keresés a weben, mire a Rapid7 weboldalán találtam valamit. Hoppá, a Metasploitban van hozzá exploit. Innentől gyorsan haladtam, követve a leírást a linken. Nemsokára volt konzolom.
A sudo -l szerint a fail2ban-client programot tudjuk futtatni. Mi a fene az a fail2ban? Néhány keresés után kiderült, hogy ez egy olyan program, ami IP-ket tud kitiltani különböző szabályok szerint. Például ha túl sok kérés érkezik. Ezért nem tudtam sokat próbálgatni a weboldalt, és ezért nem ment a gobuster sem.
Találtam sok leírást arról, hogy hogyan lehet root jogokra szert tenni, ha tudjuk szerkeszteni a konfigurációs állományokat. Balszerencsémre én semmit nem tudtam szerkeszteni, csak a fail2ban-client programot futtatni.
A dokumentáció alapján úgy tűnik, mindent be lehet állítani a kliens programból is. Sajnos a legtöbb tutorial arról szólt, hogyan szerkesszük a konfigurációs fájlokat, vagy hogyan tudjuk megszüntetni egy IP tiltását.
Röviden a fail2ban definiált szabályokat, és akciókat, hogy mit kell csinálni, ha egy szabályt megsértenek, majd az akción belül parancsokat, ami a tényleges feladat végrehajtása. Tehát az egyik akciót kell átdefiniálnom, hogy futtasson egy root shellt, ha túl sokszor írok be hibás jelszót a webre. Egyszerűen hangzik.
A konfigurációs fájlban két nagyobb szabály volt. Az egyik a weboldal bejelentkezéseit figyeli, a másik az ssh-ról érkező kéréseket. Az ssh-nál viszont volt egy elírás, amiből arra következtetek, hogy abban az esetben nem tud lefutni az akció.
Ha átírtam az akciót, akkor futási hibát kaptam, ha túl sokszor próbáltam belépni. Tehát valamit felüldefiniáltam, de nem kaptam meg a várt root shell-t. Gondoltam, talán rossz akcióval próbálkoztam, mert lehet akciót definiálni arra is, hogy a bannolás előtt mit futtasson. A vége az lett, hogy teljesen elrontottam a fail2ban-t. Működésképtelenné vált.
Leállítottam a virtuális gépet, és pihentettem a dolgot. Közben elkeztem túrni a netet, hátha találok valamit, hogyan lehet a kliens programmal átírni az akciókat.
Végül ezt találtam. A megoldás nem az volt, hogy átdefiniálok egy akciót, hanem új akciót adok hozzá. Erre a lehetőségre nem gondoltam. Megcsináltam a lépéseket, és már root is voltam.