OS Command Injection

Was ist OS Command Injection?

Eine OS Command Injection ist eine Web-Sicherheitsanfälligkeit, die die Ausführung nicht autorisierter Betriebssystembefehle ermöglicht. Eine OS Command Injection-Sicherheitsanfälligkeit tritt auf, wenn eine Webanwendung unsanierte, ungefilterte Systembefehle zur Ausführung sendet. Aufgrund der unzureichenden Eingabevalidierung könnte ein Angreifer eigene Befehle injizieren, die auf Shell-Ebene ausgeführt werden sollen. Der Angreifer führt Betriebssystembefehle über vom Benutzer bereitgestellte Daten wie Cookies, Formulare oder HTTP-Header ein.

Dies ist eine gefährliche Sicherheitsanfälligkeit, da die vom Angreifer bereitgestellten Betriebssystembefehle normalerweise mit den Berechtigungen der anfälligen Anwendung ausgeführt werden. Daher könnte ein Angreifer die vollständige Kontrolle über das Host-Betriebssystem sy OS Command injection erlangen, ohne die Anwendung und alle ihre Daten zu gefährden.

Im Gegensatz zu Code-Injection-Schwachstellen, die bestehen, wenn ein Angreifer ausführbare Eingaben an ein Programm senden und die Software dazu bringen kann, diese Eingaben auszuführen. Eine Command Injection-Schwachstelle nutzt die Schwächen eines ungeschützten Systems aus, das die Ausführung beliebiger Befehle ermöglicht, ohne Code injizieren zu müssen. Beide Sicherheitsanfälligkeiten ergeben sich aus einem Mangel an ordnungsgemäßer Eingabe / Ausgabe-Datenvalidierung.

Nützliche Befehle

Im Folgenden finden Sie einige nützliche Befehle, die Ihnen weitere Informationen zu dem Betriebssystem geben können, das Sie angreifen

Zweck des Befehls

Linux

Fenster

Name des aktuellen Benutzers

whoami

whoami

Betriebssystem

uname -a

ver

Netzwerkkonfiguration

ifconfig

ipconfig /alle

Netzwerkverbindungen

netstat -an

netstat -an

Laufende Prozesse

ps -ef

aufgabenliste

Möglichkeiten zum Injizieren von Betriebssystembefehlen

Um Ihre Anwendung auf eine Sicherheitsanfälligkeit bei der Befehlsinjektion zu testen, versuchen Sie, Metazeichen zu verwenden, die die Verkettung von Befehlen ermöglichen. Wenn Sie Ihren eigenen Befehl ausführen können, ist die Webanwendung anfällig. Die folgenden Befehlstrennzeichen funktionieren sowohl auf Windows- als auch auf Unix-basierten Systemen:

  • &
  • &&
  • |
  • ||

Andere Command Injection-Nutzlasten umfassen den folgenden Ping-Befehl, der eine Zeitverzögerung auslöst, mit der Sie bestätigen können, dass der Befehl basierend auf der Zeit ausgeführt wurde, die die Anwendung benötigt, um zu antworten. Der folgende Befehl benötigt 10 Sekunden, um eine Antwort zurückzugeben.

& klingeln -c 10 127.0.0.1 &

Angreifer können auch eine Sicherheitsanfälligkeit in Betriebssystembefehlen bestätigen, indem sie den Befehl nslookup für eine Domäne verwenden, die sie kontrollieren. Wenn die Suche erfolgt, wissen sie, dass ihre Befehlsinjektion erfolgreich war.

Verschiedene andere Befehle zum Testen Ihrer Anwendung:

php -v Gibt Ihnen die PHP-Version, die auf dem Webanwendungsserver ausgeführt wird.

&& cat / etc /passwddisplays alle Benutzer auf dem Backend-Linux-Server

/etc /shadowdisplays alle gehashten Passwörter, aber nur, wenn Sie mit Root-Rechten ausgeführt werden.

So verhindern Sie OS Command Injection-Angriffe

  1. Verteidigungsoption 1: Vermeiden Sie den direkten Aufruf von OS-Befehlen – Vermeiden Sie den direkten Aufruf von OS-Befehlen. Integrierte Bibliotheksfunktionen sind eine sehr gute Alternative zu Betriebssystembefehlen.
  2. Defense Option 2: Escape-Werte zu OS-Befehlen hinzugefügt, die für jedes Betriebssystem spezifisch sind – Zum beispielescapeshellcmd() in PHP.
  3. Defense Option 3: Parametrierung in Verbindung mit der Eingabevalidierung – Wenn die Benutzerangabe nicht vermieden werden kann, sollte die Parametrierung und die Eingabevalidierung verwendet werden.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.