Hallo Habr! In diesem Artikel möchte ich Ihnen über meine Erfahrungen beim Bestehen des
Friendzone- Labors auf dem Hackthebox-Portal berichten. Für diejenigen, die noch nicht gehört haben, was
Hackthebox ist, ist dies ein Portal, auf dem Sie Ihre Pentest-Fähigkeiten in der Praxis testen können. Es gibt CTF-Masken und Labormaschinen selbst, deren Passage in diesem Artikel behandelt wird.
Ich werde sofort sagen, dass die Regeln des Dienstes lauten:
"Teilen Sie nicht mit anderen Mitgliedern, wie Sie jeden Computer gehackt haben. Dies beinhaltet die Generierung des Einladungscodes und alle Herausforderungen .
" Da diese Maschine jedoch nicht mehr aktiv ist und im Abschnitt "Maschinen im Ruhestand" gespeichert ist, haben nur VIP-Mitglieder Zugriff auf die Maschinen in diesem Abschnitt und auf die Beschreibungen. Dieser Artikel verstößt gegen nichts und ist völlig legal. Also fangen wir an!

Informationsbeschaffung
Beginnen wir unsere Erkundung, indem wir das Port-Scannen mit nmap starten.

Aus dem Obigen ist ersichtlich, dass die Ports 21 (ftp), 22 (ssh), 53 (Domäne), 80 (http), 139 (netbios-ssn), 443 (https) geöffnet sind. Schauen wir sie uns an.
Aufzählung 139 / tcp (netbios-ssn)
Wir werden das Dienstprogramm
enum4linux verwenden, um gemeinsam genutzte Ressourcen auf dem Host
aufzulisten . Aus der Ausgabe des Dienstprogramms geht hervor, dass die Ressourcen / general und / Development eingegeben werden dürfen

Jetzt müssen wir diese Ressourcen überprüfen.
Mit
smbclient //10.10.10.123/general finden wir die Datei
creds.txt , die einige Anmeldeinformationen enthält. Speichern Sie sie.


DNS-Aufzählung
Wir werden das Dienstprogramm
dig verwenden , mit dem die Einträge auf dem angegebenen DNS-Server auf die Domäne / Subdomäne überprüft werden können. Der Domainname friendzone.red stammt aus dem CommonName-SSL-Zertifikat (nmap-Ausgabe für 443 / tcp).

Wir gehen zum
10.10.10.123
Wir bemerken die Mailbox info@friendportal.red und verwenden dig erneut.

Fügen Sie die resultierenden Einträge zu
/ etc / hosts hinzuWir haben jetzt eine Liste von Adressen, die für die folgenden Leads überprüft werden müssen. Ich werde einen Teil der Geschichte weglassen, in dem sich die Seiten als Kaninchenlöcher herausstellten. Wir betrachten nur nützliche Ergebnisse.
Wir gehen zu
administartor1.friendzone.red und geben die Anmeldeinformationen unter //10.10.10.123/general/creds.txt ein


Besuchen Sie /dashboard.php

Sie werden aufgefordert, bestimmte Parameter einzugeben, um Bilder zu erhalten. Als Ergebnis stehen uns 2 Bilder zur Verfügung.


Durch Versuch und Irrtum verstehen wir, dass die Seite für
LFI (Local File Inclusion) anfällig ist. Und dass wir die Shell über smbclient laden und mit dieser Sicherheitsanfälligkeit darauf zugreifen können. Wir versuchen es!
Laden Sie die Shell in Developments herunter.


Wir kehren zur Seite zurück und verweisen auf die geladene Shell.

Vorher natürlich durch Ausführen von netcat, um Port 1234 abzuhören.

Wir bekommen die Shell des www-data-Benutzers.
Nachdem wir die Volunbox durchgesehen haben, finden wir die Datei mysql_data.conf, die die Anmeldeinformationen des Freundes enthält.


Versuchen wir, ein Terminal zu bekommen und uns als Freund anzumelden.

Wir gehen in das Home-Verzeichnis / home / friend und holen das Benutzer-Flag ab.
Schnapp dir root.txt
Laden Sie pspy64 in die Volunbox herunter, um laufende Prozesse zu verfolgen.
Spoiler Überschriftpspy ist ein Tool zum Verfolgen von Prozessen, ohne dass Root-Rechte erforderlich sind. Hier können Sie Befehle anzeigen, die von anderen Benutzern ausgeführt wurden, Cron-Jobs usw. wie sie fortschreiten.

Wir starten pspy64, bevor wir die "Ausführung" auf die Datei chmod + x setzen.

Wir stellen fest, dass reporter.py von einem Benutzer mit UID = 0 (d. H. Root) gestartet wird. Sehen wir uns den Inhalt der Datei reporter.py an

Fast alle Zeilen sind auskommentiert und machen keinen Sinn, außer der ersten, in die das OS-Modul importiert wird.
Bibliotheksentführung ?
Dieses os.py-Modul hatte eine Auflösung von 777, sodass wir sicher Änderungen am Benutzer Friend vornehmen konnten.
Durch Hinzufügen des Leitungssystems
("cp /root/root.txt /home/Friend/root.txt") zum Modul "os.py" und Warten auf den Start des Skripts.

Wir haben die Root-Flagge. Sieg!
