Leser wie Sie helfen, MUO zu unterstützen. Wenn Sie über Links auf unserer Website einen Kauf tätigen, erhalten wir möglicherweise eine Affiliate-Provision. Weiterlesen.

Injection-Angriffe sind eine der häufigsten Methoden, mit denen Hacker Systeme angreifen, da sie es ihnen ermöglichen, viele Befehle und Codes einfach auszuführen. OS Command Injection ist ein solcher Injection-Angriff, den Sie kennen müssen. Dabei wird eine Schwachstelle ausgenutzt, die System-, Datenbank- und Webanwendungsadministratoren sehr ernst nehmen sollten.

Was ist also ein OS Command Injection-Angriff?

Definition von OS Command Injection

OS Command Injection ermöglicht es einem böswilligen Angreifer, jeden beliebigen Befehl auszuführen, indem er ein anfälliges Betriebssystem, Programm, Anwendung, Datenbank oder Plug-In ausnutzt. Es passiert, wenn Anwendungen die Parameter, die sie beim Aufrufen von Shell-Funktionen wie z. B. verwenden, nicht richtig validieren und bereinigen System() oder ausführen() um Systembefehle auszuführen.

Um die Erkennung und Ausnutzung von OS Command Injection besser zu verstehen, ist es sinnvoll, dieses Problem in drei Hauptkategorien zu untersuchen.

1. Direct-Command-Injektion

Betrachten Sie dies aus der Perspektive des Angreifers. Der Cyberangreifer entdeckt, dass eine Anwendung einen bestimmten Systembefehl ausführt; Sie geben den böswilligen Befehl als Teil der erwarteten Argumente ein. Die Anwendung führt dann den ursprünglichen Befehl aus, gefolgt von dem schädlichen.

Der Angreifer verwendet verschiedene Ansätze, um eine solche Schwachstelle zu finden. Die einfachste Methode, dem entgegenzuwirken, besteht darin, das Betriebssystem immer auf dem neuesten Stand zu halten. Sie könnten dies in Zusammenarbeit mit einem kompetenten IT-Team tun. Sie sollten alle Apps und Programme vermeiden, die Systemschwachstellen verursachen könnten, da der Angreifer Code direkt einfügen kann und der Schaden unvorhersehbar ist.

2. Indirekte Befehlsinjektion

Bei der indirekten Befehlsinjektion gibt der Angreifer keinen Code oder Befehl direkt in das System ein. Dazu verwenden sie eine anfällige Anwendung oder ein Programm im System. Die Schwachstelle schlägt eine Brücke zwischen dem Angreifer und dem Betriebssystem. Der Angreifer nutzt diese Kommunikation aus, um bösartige Codes und Befehle auf dem Ziel auszuführen.

Der Angreifer führt eine Reihe von Tests durch, um diese Schwachstelle zu identifizieren, und entdeckt, dass die Software verwendet Daten aus einer externen Quelle, z. B. einer Datei oder einer Umgebungsvariablen, um einen Systembefehl aufzurufen. Der Angreifer modifiziert dann den Inhalt der externen Quelle, sodass er nun einen böswilligen Befehl enthält. Dies wird dann neben den Anweisungen der ursprünglichen Anwendung ausgeführt.

Der Hauptunterschied zwischen direkter und indirekter Befehlsinjektion besteht darin, dass der Angreifer eine Anwendung verwendet, um mit dem Betriebssystem zu kommunizieren. Aber es gibt keinen wirklichen Unterschied zwischen dem Schaden, den die beiden Injektionsformen anrichten können, also müssen beide angegangen werden. Deshalb sollten Sie sicherstellen, dass die Programme in Ihrem Netzwerk zuverlässig und notwendig sind. Bewahren Sie keine Apps auf Ihrem Gerät auf, denen Sie nicht vertrauen.

3. Blind Command Injection

Eine andere Art der Betriebssystembefehlsinjektion ist die blinde Befehlsinjektion. Das bedeutet, dass die Anwendung keine Ausgabe des Befehls in der HTTP-Antwort zurückgibt. Der Angreifer nutzt verschiedene Techniken wie Zeitverzögerung und Ausgaberouting, um diese Schwachstelle auszunutzen.

Stellen Sie sich vor, Sie suchen nach einer Website und der Wert „/?search=id“ in der URL ändert sich bei jeder Suche. Der ID-Wert kann hier eine Benutzerseite, die Adresse eines Produktfotos oder eine beliebige Seite auf der Website sein. Der Angreifer kann unterschiedliche Ergebnisse erzielen, indem er den id-Wert ändert. Es ist schwierig, es manuell zu tun, aber es gibt Tools wie Burp Suite dafür. Später entdeckt der Angreifer eine Kuriosität auf einer Seite: Es könnte ein id-Wert zurückgegeben werden, der, obwohl er keine Ergebnisse anzeigt, die Die Antwort der Website war 200, was anzeigt, dass alles in Ordnung ist. In einem solchen Fall könnte der Angreifer eine blinde Befehlsinjektion verwenden.

Eine Technik wie eine Zeitverzögerung ist besonders nützlich. Da die Seite, die geöffnet wird, leer ist, erhalten Sie keine Antwort, aber Sie können möglicherweise trotzdem sammeln Informationen darüber, was in einer Datenbank gespeichert ist, basierend auf Zeitverzögerungen, die die Seite nur laden, wenn ein bestimmtes Zeichen vorhanden ist gegenwärtig. Dies ist zu zeitaufwändig, um ein manueller Prozess zu sein, aber viele Tools können den Angriff automatisieren.

Ein beispielhaftes Angriffsszenario

Lassen Sie uns alle oben genannten Punkte anhand eines Beispiels überprüfen. Stellen Sie sich vor, Sie haben eine Shopping-App, mit der der Benutzer sehen kann, ob Produkte auf Lager sind. Verwenden wir eine URL wie die folgende, um auf all diese Informationen zuzugreifen:

example_unsafe_store.com/stockStatus? ProduktID=245&StoreID=

Stellen Sie sich vor, die Produkt- und Geschäfts-IDs als Argumente an einen Shell-Befehl zu übergeben, z. B. „stockstat.pl 245 38“, da die Anwendung alte Datensätze abfragen müsste. Wenn der Entwickler nichts gegen Command Injections unternimmt, kann ein Angreifer eine Eingabe senden, um den gewünschten Befehl auszuführen:

& Echo this_a_harmful_command &

Wenn dieser Eintrag in den Parameter productID geht, lautet der von der Anwendung ausgeführte Befehl:

stockstat.pl & Echo this_a_harmful_command & 38

Der Echo-Befehl ist eine nützliche Methode, um Befehlseingaben zu erkennen und sicherzustellen, dass die angegebene Zeichenfolge in der Ausgabe erscheint. Das Zeichen „&“ ist ein Trennzeichen für Shell-Befehle, was also ausgeführt wird, sind drei separate Befehle, einer nach dem anderen. Als Ergebnis wird die an den Benutzer zurückgegebene Ausgabe sein:

Fehler -Produkt-ID nicht gefunden
this_a_harmful_command
38: Befehl nicht gefunden

Hier führte die Datei „stockstat.pl“ den Befehl ohne die erwarteten Argumente aus und lieferte daher eine Fehlermeldung zurück. Dann wurde der vom Angreifer eingefügte echo-Befehl ausgeführt und der Angreifer sah den von ihm eingegebenen Ausdruck auf dem Bildschirm. Das ursprüngliche Argument "38" wurde als fehlerverursachender Befehl ausgeführt.

So schützen Sie sich vor OS Command Injections

Obwohl Command Injection ein mächtiger und schädlicher Angriffsvektor ist, gibt es einige Tricks, um ihn zu vermeiden. Der Grund für OS Command Injection-Angriffe besteht darin, bestimmte Betriebssystembefehle mithilfe einer Anwendung auszuführen. Sie müssen verhindern, dass dies geschieht. Es gibt einige Probleme zu berücksichtigen:

  1. Sie müssen verhindern, dass jeder mit Zugriff auf die Anwendung Code ausführen kann.
  2. Sie sollten jeden mit Zugriff auf die Anwendung daran hindern, Anfragen an den Server mit syntaktischen Ausdrücken zu stellen.
  3. Sie müssen die Sätze verschlüsseln, die jeder mit Zugriff anfordert.

Lassen Sie uns jeden Punkt einzeln durchgehen. Eine gute Lösung für das erste Problem ist Verwenden Sie die Whitelist-Methode um zu verhindern, dass jemand, der die Anwendungsschicht erreicht, bestimmte Codes oder Anforderungen ausführt. Jeder, den Sie nicht identifizieren, kann keinen Code ausführen.

Die Lösung für die zweite besteht darin, einige in Befehlen verwendete Textausdrücke nicht zu akzeptieren. Der Benutzer kann nur Zahlenwerte eingeben. Wenden Sie dies zusammen mit der Whitelist-Methode an, und Sie haben ein viel sichereres System.

Beim dritten Punkt geht es um die Verschlüsselung von syntaktischen Parametern wie dem eingegebenen Zeichen und Leerzeichen. Daher sollten die Whitelisting-Methode, die syntaktische Überprüfung von Eingaben und die Verschlüsselung von Eingaben Sie vor der Einschleusung von Betriebssystembefehlen schützen.

Injektionsangriffe entwickeln sich jeden Tag weiter

Es gibt viele Injektionsmethoden mit unterschiedlichen Angriffstechniken, wie OS-Befehl, SQL, SSI und XPath. Es ist nicht einfach zu versuchen, jeden von ihnen zu verhindern. Denken Sie daran, dass sich all diese Angriffe jeden Tag weiterentwickeln, und nutzen Sie kleine Schwachstellen, die Entwickler übersehen haben. Deshalb ist es wichtig, dass Sie immer auf dem Laufenden bleiben und die aktuellen Entwicklungen in der Welt der Cybersicherheit aufmerksam verfolgen.