Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
Tools/GitHubGitHub/anxs3c/twomillion-machine-writeup
Privilege EscalationAufklärungExploitationLaterale BewegungReverse EngineeringWebanwendungs-ExploitationCTFPenetrationstestsLernen & BildungLabs & Praxis
GitHubanxs3c/twomillion-machine-writeup

TwoMillion-Machine-Writeup

5vor 3 MonatenNoch nicht geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

Von der Deobfuskierung von code.js bis zu Root, CVE-2023-0386

Repository anzeigen

Über die Maschine

TwoMillion ist eine Linux-Box mit dem Schwierigkeitsgrad Easy, die zur Feier von 2 Millionen Nutzern auf HackTheBox veröffentlicht wurde. Die Box enthält eine alte Version der HackTheBox-Plattform, die den alten hackbaren Einladungscode enthält. Nach dem Hacken des Einladungscodes kann ein Konto auf der Plattform erstellt werden. Das Konto kann verwendet werden, um verschiedene API-Endpunkte zu enumerieren, von denen einer genutzt werden kann, um den Benutzer zum Administrator hochzustufen. Mit administrativem Zugriff kann der Benutzer im Admin-VPN-Generierungs-Endpunkt eine Befehlsinjektion durchführen und so eine System-Shell erlangen. Eine .env-Datei enthält Datenbank-Anmeldedaten, und aufgrund von Passwort-Wiederverwendung können sich Angreifer als Benutzer admin auf der Box anmelden. Der Systemkernel ist veraltet, und CVE-2023-0386 kann verwendet werden, um eine Root-Shell zu erlangen.

Scan-Ergebnisse

portservicedetails
22/tcpsshsyn-ack ttl 63 OpenSSH 8.9p1 Ubuntu 3ubuntu0.1 (Ubuntu Linux; protocol 2.0)
80/tcphttpsyn-ack ttl 63 nginx 2million.htb

Host-Einrichtung

Ich habe 2million.htb zu meiner /etc/hots-Datei hinzugefügt


Pfad-Erkennung

Ich habe eine Pfad-Erkennung über 2million.htb mit gobuster durchgeführt

Während der Enumeration habe ich den Endpunkt /invite entdeckt


Nach dem Navigieren zur Seite /invite


Als ich die Seite untersuchte, bemerkte ich, dass sie eine JavaScript-Datei namens inviteapi.min.js geladen hatte, die verschleierten Code enthielt:

root@kitploit:~
eval(function(p,a,c,k,e,d){e=function(c){return c.toString(36)};if(!''.replace(/^/,String)){while(c--){d[c.toString(a)]=k[c]||c.toString(a)}k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1};while(c--){if(k[c]){p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c])}}return p}('1 i(4){h 8={"4":4};$.9({a:"7",5:"6",g:8,b:\'/d/e/n\',c:1(0){3.2(0)},f:1(0){3.2(0)}})}1 j(){$.9({a:"7",5:"6",b:\'/d/e/k/l/m\',c:1(0){3.2(0)},f:1(0){3.2(0)}})}',24,24,'response|function|log|console|code|dataType|json|POST|formData|ajax|type|url|success|api/v1|invite|error|data|var|verifyInviteCode|makeInviteCode|how|to|generate|verify'.split('|'),0,{}))

Deobfuskation

Ich habe den Code mit de4js deobfuskiert, was das folgende lesbare JavaScript ergab:


root@kitploit:~
function verifyInviteCode(code) {
    var formData = {
        "code": code
    };
    $.ajax({
        type: "POST",
        dataType: "json",
        data: formData,
        url: '/api/v1/invite/verify',
        success: function (response) {
            console.log(response)
        },
        error: function (response) {
            console.log(response)
        }
    })
}

function makeInviteCode() {
    $.ajax({
        type: "POST",
        dataType: "json",
        url: '/api/v1/invite/how/to/generate',
        success: function (response) {
            console.log(response)
        },
        error: function (response) {
            console.log(response)
        }
    })
}

makeInviteCode() : erzeugt einen neuen Einladungscode
verefyInviteCode(code) : prüft, ob ein Code gültig ist

Um mehr zu verstehen, habe ich die Verifizierungsanfrage abgefangen:


Die API verwendet JSON-Antworten


Einladungscode generieren und ROT13-Entschlüsselung

Ich ging zur Browser-Konsole und führte makeInviteCode() aus


Ich bemerkte, dass die Daten mit ROT13 verschlüsselt waren


Nach der Entschlüsselung fand ich den Endpunkt /api/v1/invite/generate; anschließend generierte ich den Einladungscode


Base64-Entschlüsselung

Schlüssel
Der Schlüssel 2F4BN-YI8OH-B0SCL-L8OE6 wurde eingegeben und erfolgreich akzeptiert

Registrierung

Startseite

Zugriffsseite
Nur wenige Seiten dieser Website funktionieren richtig; die Zugriffsseite ist der Ort, an dem es interessant wird

Enumeration der API-Endpunkte
Ich habe eine VPN-Datei hochgeladen, indem ich auf den Button connection pack geklickt habe, und die GET-Anfrage abgefangen.


Anschließend habe ich eine curl-Anfrage mit den Optionen verbose und silent ausgeführt, um verfügbare API-Endpunkte zu enumerieren.



Der Server antwortete mit einer JSON-Liste der API-Endpunkte.

Der Admin hatte 3 API-Endpunkte mit den Methoden GET, POST und PUT.

Als ich versuchte, mit dem Admin-Endpunkt /api/v1/admin/vpn/generate einen Admin-Schlüssel zu generieren, wurde der Schlüssel nicht generiert, weil ich nicht der Admin war; der erste Admin-Endpunkt /api/v1/admin/auth bestätigte dies.





Vertikale Privilegieneskalation in der Webanwendung: aktuellen Standardbenutzer zum Administrator hochstufen


Nachdem ich das korrekte Format der PUT-Anfrage mit Content-Type: application/json und den erforderlichen Parametern herausgefunden hatte, habe ich meinen Benutzer erfolgreich zum Administrator hochgestuft.











OS-Befehlsinjektion

Ich habe ;whoami; in das Benutzernamen-Feld injiziert; mein Verdacht fiel auf die PHP-Funktionen exec() oder system(), die häufig in Admin-Funktionen vorkommen und oft keine ordnungsgemäße Sanitisierung aufweisen.

Zum Beispiel sah der verwundbare Code wahrscheinlich ungefähr so aus:

root@kitploit:~
$username = $json->username;

exec("/usr/bin/cat /var/www/html/VPN/user/$username.ovpn");

Dieser Endpunkt POST /api/v1/admin/vpn/generate war verwundbar, und OS-Befehlsinjektion wurde erfolgreich durchgeführt.




Initialer Zugriff: Reverse Shell per OS-Befehlsinjektion (Base64-Bypass)

Payload kodieren, um Einschränkungen zu umgehen

Da die Anwendung Einschränkungen hatte, die Sonderzeichen verhinderten, habe ich den Reverse-Shell-Payload-Befehl in Base64 kodiert, um diese Einschränkung zu umgehen.


Den kodierten Payload injizieren

Ich habe den Payload in den username-Parameter injiziert und ihn zur Dekodierung und Ausführung an base64 -d | bash weitergeleitet:


Netcat-Listener


Initialen Zugriff erlangt

Der Payload wurde erfolgreich ausgeführt und lieferte eine Reverse Shell als www-data-Benutzer.


Lateral Movement

Ich habe Lateral Movement vom www-data-Benutzer zum admin-Benutzer mit verschiedenen Techniken versucht.

Während ich das Verzeichnis /var/www/html untersuchte, entdeckte ich eine .env-Datei mit Datenbank-Anmeldedaten:


Das entdeckte Passwort wurde erfolgreich wiederverwendet, um sich über SSH und MySQL zu authentifizieren.

SSH

MySQL


OS-Privilegieneskalation

Nachdem ich als admin-Benutzer initialen Zugriff erlangt hatte, führte ich eine System-Enumeration durch, um potenzielle Privilegieneskalations-Vektoren zu identifizieren.

Ich habe alle gängigsten Privilegieneskalations-Tricks ausprobiert – SUID-Binaries, Capabilities, Sudo-Rechte, Cron-Jobs – nichts funktionierte. Also habe ich Umgebungsvariablen auf PATH-Hijacking oder sensible Variablen überprüft und eine MAIL-Variable gefunden, die auf /var/mail/admin zeigt.


Ich habe den Inhalt der E-Mail überprüft und festgestellt, dass der Admin gewarnt worden war, den Kernel gegen eine OverlayFS/FUSE-Schwachstelle zu patchen.


Kernel-Version

OS-Version

Der Kernel wurde nie aktualisiert, was bestätigt, dass der Administrator die Sicherheitswarnung ignoriert oder vergessen hatte.

Die Kernel-Enumeration ergab Version 5.15.70-051570-generic, die für CVE-2023-0386, eine lokale OverlayFS/FUSE-Privilegieneskalation, anfällig ist.

Nachdem die Schwachstelle bestätigt war, besorgte ich mir einen öffentlichen POC-Exploit.

Ich klonte den POC und übertrug ihn auf die Zielmaschine.

Anschließend führte ich ihn aus und erlangte erfolgreich Root-Zugriff.


Angriffskette



Ressourcen

CVE-2023-0386 - CVE-2023-0386 - OS-Befehlsinjektion



Haftungsausschluss: Diese Maschine wurde in einer autorisierten Penetrationstest-Umgebung gerootet.

Tool herunterladen
PhaseTechnikZielErgebnis
1. AufklärungPortscan22 (SSH), 80 (HTTP)Diensterkennung
Pfad-Erkennung/inviteEinladungsseite gefunden
JS-Deobfuskationinviteapi.min.jsAPI-Endpunkte offengelegt
2. Initialer ZugriffEinladungscode-GenerierungPOST /api/v1/invite/generateGültiger Einladungscode
RegistrierungPOST /api/v1/user/registerStandardbenutzer erstellt
3. Web-PrivilegieneskalationAPI-EnumerationGET /api/v1Admin-Endpunkte entdeckt
Vertikale EskalationPUT /api/v1/admin/settings/updateis_admin: 0 -> 1
4. SystemzugriffBefehlsinjektionPOST /api/v1/admin/vpn/generateusername=test;id;
Reverse ShellBase64-kodierter Payloadwww-data-Shell
5. Lateral MovementDatei-Erkennung/var/www/html/.envadmin:SuperDuperPass123
SSH-Wiederverwendungssh [email protected]Zugriff als admin-Benutzer
6. Root-EskalationKernel-Enumerationuname -r -> 5.15.70CVE-2023-0386 identifiziert
E-Mail-Warnung/var/mail/adminOverlayFS/FUSE bestätigt
Exploit-Ausführung./fuse && ./expRoot-Shell