Exploitation

Bei der Server Side Template Injection hattest du bereits gesehen, dass über Python eine Shell gestartet werden kann. Dafür muss ein Python-Modul geladen werden, das auf das Betriebssystem zugreift und daher Shell-Befehle aufrufen kann. Dies ist beispielsweise mit dem Modul pty möglich. Die grundsätzliche Syntax zum Ausführen eines Shell-Befehls im Python-Debugger pdb mit dem pty-Modul ist:

!import pty; pty.spawn('<Shell-Befehl>')

Der Code besteht aus folgenden Komponenten:

  • !: Führt Python-Code in pdb aus.
  • import pty: Lädt das Python-Modul pty.
  • ;: Trennt mehrere Befehle in einer einzigen Zeile voneinander.
  • pty.spawn(): Startet den angegebenen Shell-Befehl.

Diese Information sollte reichen, damit du den Payload für eine interaktive Shell ermitteln kannst. Stelle wieder mit dem Befehl nc -lp <Port> eine Reverse Shell zum LUPFER her. Dafür musst du die Seite https://lupfer.pentest.samsmart.hosts.openinc.de/usermanagement neu laden.

Mit folgendem Befehl wendest du pdb mit Root-Rechten auf das Skript /var/www/html/lupfer/lupfer.py an

sudo /usr/bin/python3 -m pdb /var/www/html/lupfer/lupfer.py

Damit öffnet sich die Eingabeaufforderung von pdb. Mit folgender Payload erhältst du eine interaktive Shell als Benutzer root:

!import pty; pty.spawn('bash')

Die interaktive Shell wird mit dem Befehl exit beendet.