SCW-Symbole
Held-Hintergrund ohne Trennlinie
Blog

Les codeurs conquièrent la sécurité : série Share & Learn - OS Command Injection

Jaap Karan Singh
Veröffentlicht am 07. Feb. 2019
Zuletzt aktualisiert am 08. März 2026

Ein Angriff durch OS-Befehlsinjektion kann immer dann erfolgen, wenn eine Anwendung es Benutzern erlaubt, Eingaben in eine Shell zu machen, aber keine Maßnahmen ergreift, um zu überprüfen, ob die Eingabezeichenfolgen gültig sind. Auf diese Weise kann ein Angreifer Befehle direkt in das Betriebssystem einspeisen, das die Anwendung hostet, und zwar auf allen Berechtigungsstufen, die für die kompromittierte Anwendung festgelegt sind.  

OS-Befehlsinjektionsangriffe können von Einsteigern und weniger erfahrenen Hackern durchgeführt werden, was sie zu einer der häufigsten Schwachstellen macht, die Sicherheitsteams erfahren. Glücklicherweise gibt es einige sehr effektive Möglichkeiten, um sie zu verhindern. In dieser Folge lernen wir es:

       Wie sie funktionieren

       Warum sie so gefährlich sind

       Wie Sie Abwehrmaßnahmen ergreifen können, um sie zu stoppen.

Wie verwenden Angreifer OS Command Injection?

Das erste, was ein Angreifer tun muss, um einen OS-Befehlsinjektionsangriff zu initiieren, ist das Auffinden von Benutzereingaben innerhalb einer Anwendung. Formulare, die Benutzer ausfüllen, sind potenziell gute Absprungpunkte. Die cleversten Angreifer können auch Dinge wie Cookies oder sogar HTTP-Header als Startpunkt verwenden, etwas, das von fast jeder Anwendung oder Website verwendet wird.

Als zweites müssen sie herausfinden, auf welchem Betriebssystem die Anwendung läuft. Da es nur eine Handvoll Auswahlmöglichkeiten gibt, kann Versuch und Irrtum in dieser Phase gut funktionieren. Die meisten Anwendungsserver werden entweder Windows-basiert sein (die Windows-Variante spielt normalerweise keine Rolle), eine Art Linux-Box oder möglicherweise Unix.

An diesem Punkt modifiziert der Hacker die Eingabe, um einen Betriebssystembefehl in eine scheinbar harmlose Eingabe zu injizieren. Dadurch kann das Host-Betriebssystem dazu gebracht werden, unbeabsichtigte Befehle auf der jeweiligen Berechtigungsebene der Anwendung auszuführen.

Der folgende Befehl kann z. B. von gültigen Benutzern innerhalb einer Anwendung verwendet werden, um den Inhalt einer Datei zu sehen, in diesem Fall die Notizen einer monatlichen Vorstandssitzung.

exec("cat " + Dateiname)

In unserem Beispiel würde dies den folgenden Befehl ausführen und die Besprechungsnotizen an den Benutzer zurückgeben.

$ ./cat MeetingNotes.txt
Bei der Juli-Sitzung waren drei Mitglieder des Vorstands anwesend. Das neue Budgetprojekt wurde diskutiert, aber es wurden keine Aktionen oder Abstimmungen durchgeführt.

Das passiert, wenn ein Angreifer zusätzliche Befehle am Ende der Eingabe hinzufügt, wie z. B. den, der zum Auflisten des Inhalts eines Verzeichnisses in Linux verwendet wird. In diesem Fall wird der ursprüngliche Befehl, die Anzeige der Besprechungsnotizen, immer noch ausgeführt. Aber dem böswilligen Benutzer wird auch angezeigt, was sich sonst noch in dem Verzeichnis befindet und welche anderen Befehle er bei nachfolgenden OS-Befehlsinjektionsangriffen verwenden kann. Sie geben ein:

$ ./cat MeetingNotes.txt && ls

Und holen Sie sich stattdessen das hier:

Bei der Juli-Sitzung waren drei Mitglieder des Vorstands anwesend. Das neue Budgetprojekt wurde diskutiert, aber es wurden keine Aktionen oder Abstimmungen durchgeführt.

MeetingNotes.txt
JuneMeetingNotes.txt
MayMeetingNotes.txt
format.c
misnull.c
notefault.c
trunc.c
writewhatwhere.c

Wie Sie sehen können, wurde dem Hacker in diesem Fall nicht nur der Inhalt des Verzeichnisses gezeigt, sondern auch ein Menü mit anderen Befehlen, die er verwenden konnte " Befehle, von denen er jetzt weiß, dass er sie auf dem Host-Betriebssystem ausführen kann.

Warum sind OS Command Injection Attacken so gefährlich?

Es ist äußerst riskant, Benutzern zu erlauben, den Zweck der anvisierten Anwendung zu umgehen und sie zur Ausführung von Betriebssystembefehlen zu verwenden. Ein Angreifer kann leicht verheerende Aktionen durchführen, wie z. B. das Stehlen vertraulicher Daten oder das Formatieren eines ganzen Serverlaufwerks. Die Möglichkeiten, die einem Angreifer zur Verfügung stehen, sind nur durch die erlaubten Befehle innerhalb des Betriebssystems und seine Kreativität bei der Verwendung derselben begrenzt.

Betriebssystembefehle werden auf der gleichen Berechtigungsebene wie die Anwendung ausgeführt. Apps, die mit administrativen Rechten laufen, bedeuten, dass Hacker, die sie kompromittieren, jeden Betriebssystembefehl ausführen können.

Die Angriffsmuster für OS Command Injection sind gut bekannt und dokumentiert. Eine anfällige Anwendung ist für Script-Kiddies genauso anfällig wie für professionelle Hacker. Angreifer mit sehr geringen Kenntnissen können versuchen, Betriebssystembefehle per Cut-and-Paste in Anwendungen einzufügen, um zu sehen, was passiert.

Ein Sicherheits-OK gegen OS-Befehlsinjektionen erhalten

Es gibt mehrere gute Techniken, die OS-Befehlsinjektionen stoppen können. Der erste Schritt besteht darin, Anwendungen mit den geringsten Rechten auszuführen, die für die Ausführung ihrer Funktion erforderlich sind. Dadurch wird ein Angriff zwar nicht verhindert, aber wenn es doch zu einer Verletzung kommt, wird der Schaden minimiert.

Die meisten Programmiersprachen und Frameworks bieten API-Aufrufe für gängige Betriebssystemmethoden wie das Auflisten von Verzeichnisinhalten, das Erstellen oder Lesen von Dateien auf der Festplatte. Eine perfekte Möglichkeit, OS-Befehlsinjektionen aus Ihrer Umgebung zu eliminieren, besteht darin, dass alle Anwendungen diese API-Aufrufe anstelle von OS-Befehlen direkt verwenden.

Wenn dies nicht möglich ist, validieren Sie Benutzereingaben, bevor Sie sie in Betriebssystembefehlen verwenden. Whitelists können verwendet werden, um sicherzustellen, dass nur ein kleiner Satz vertrauenswürdiger Werte verwendet werden kann. Es ist technisch möglich, dies auch mit einer Blacklist zu tun, aber es gibt wahrscheinlich viel weniger erlaubte Befehle, so dass eine Whitelist fast immer einfacher ist. Vergessen Sie nicht, gültige POST- und GET-Parameter in Ihre Whitelist aufzunehmen, ebenso wie oft übersehene Benutzereingabevektoren wie Cookies.

Wenn keine Programmier-API verfügbar ist und keine Whitelist verwendet werden kann, verwenden Sie eine Sanitization Library, um Sonderzeichen in Benutzereingaben zu entschlüsseln, bevor sie in Betriebssystembefehlen verwendet werden.

Weitere Informationen über OS Command Injection Attacken

Als weitere Lektüre können Sie einen Blick auf die OWASP-Schreibweise zu OS Command Injection-Angriffen werfen. Sie können Ihr neu erworbenes Verteidigungswissen auch mit der kostenlosen Demo der Plattform Secure Code Warrior testen, die Cybersecurity-Teams zu den ultimativen Cyber-Kriegern ausbildet. Um mehr über die Abwehr dieser Schwachstelle und einer Reihe anderer Bedrohungen zu erfahren, besuchen Sie den BlogSecure Code Warrior .

Ressource anzeigen
Ressource anzeigen

Les attaques par injection de commandes du système d'exploitation peuvent être effectuées par des pirates informatiques débutants et moins expérimentés, ce qui en fait l'une des faiblesses les plus courantes rencontrées par les équipes de sécurité. Heureusement, il existe de nombreux moyens très efficaces de les empêcher de réussir.

Möchten Sie mehr erfahren?

Jaap Karan Singh est un évangéliste du codage sécurisé, Chief Singh et cofondateur de Secure Code Warrior.

mehr erfahren

Secure Code Warrior Ihr Unternehmen dabei, den Code während des gesamten Softwareentwicklungszyklus zu sichern und eine Kultur zu schaffen, in der Cybersicherheit oberste Priorität hat. Ganz gleich, ob Sie für die Anwendungssicherheit verantwortlich sind, Entwickler, IT-Sicherheitsbeauftragter oder in einer anderen Funktion im Bereich Sicherheit tätig sind – wir können Ihrem Unternehmen dabei helfen, die mit unsicherem Code verbundenen Risiken zu reduzieren.

Demo buchen
Teilen auf:
LinkedIn-MarkenSozialx Logo
Autor
Jaap Karan Singh
Veröffentlicht am 07. Feb. 2019

Jaap Karan Singh est un évangéliste du codage sécurisé, Chief Singh et cofondateur de Secure Code Warrior.

Teilen auf:
LinkedIn-MarkenSozialx Logo

Ein Angriff durch OS-Befehlsinjektion kann immer dann erfolgen, wenn eine Anwendung es Benutzern erlaubt, Eingaben in eine Shell zu machen, aber keine Maßnahmen ergreift, um zu überprüfen, ob die Eingabezeichenfolgen gültig sind. Auf diese Weise kann ein Angreifer Befehle direkt in das Betriebssystem einspeisen, das die Anwendung hostet, und zwar auf allen Berechtigungsstufen, die für die kompromittierte Anwendung festgelegt sind.  

OS-Befehlsinjektionsangriffe können von Einsteigern und weniger erfahrenen Hackern durchgeführt werden, was sie zu einer der häufigsten Schwachstellen macht, die Sicherheitsteams erfahren. Glücklicherweise gibt es einige sehr effektive Möglichkeiten, um sie zu verhindern. In dieser Folge lernen wir es:

       Wie sie funktionieren

       Warum sie so gefährlich sind

       Wie Sie Abwehrmaßnahmen ergreifen können, um sie zu stoppen.

Wie verwenden Angreifer OS Command Injection?

Das erste, was ein Angreifer tun muss, um einen OS-Befehlsinjektionsangriff zu initiieren, ist das Auffinden von Benutzereingaben innerhalb einer Anwendung. Formulare, die Benutzer ausfüllen, sind potenziell gute Absprungpunkte. Die cleversten Angreifer können auch Dinge wie Cookies oder sogar HTTP-Header als Startpunkt verwenden, etwas, das von fast jeder Anwendung oder Website verwendet wird.

Als zweites müssen sie herausfinden, auf welchem Betriebssystem die Anwendung läuft. Da es nur eine Handvoll Auswahlmöglichkeiten gibt, kann Versuch und Irrtum in dieser Phase gut funktionieren. Die meisten Anwendungsserver werden entweder Windows-basiert sein (die Windows-Variante spielt normalerweise keine Rolle), eine Art Linux-Box oder möglicherweise Unix.

An diesem Punkt modifiziert der Hacker die Eingabe, um einen Betriebssystembefehl in eine scheinbar harmlose Eingabe zu injizieren. Dadurch kann das Host-Betriebssystem dazu gebracht werden, unbeabsichtigte Befehle auf der jeweiligen Berechtigungsebene der Anwendung auszuführen.

Der folgende Befehl kann z. B. von gültigen Benutzern innerhalb einer Anwendung verwendet werden, um den Inhalt einer Datei zu sehen, in diesem Fall die Notizen einer monatlichen Vorstandssitzung.

exec("cat " + Dateiname)

In unserem Beispiel würde dies den folgenden Befehl ausführen und die Besprechungsnotizen an den Benutzer zurückgeben.

$ ./cat MeetingNotes.txt
Bei der Juli-Sitzung waren drei Mitglieder des Vorstands anwesend. Das neue Budgetprojekt wurde diskutiert, aber es wurden keine Aktionen oder Abstimmungen durchgeführt.

Das passiert, wenn ein Angreifer zusätzliche Befehle am Ende der Eingabe hinzufügt, wie z. B. den, der zum Auflisten des Inhalts eines Verzeichnisses in Linux verwendet wird. In diesem Fall wird der ursprüngliche Befehl, die Anzeige der Besprechungsnotizen, immer noch ausgeführt. Aber dem böswilligen Benutzer wird auch angezeigt, was sich sonst noch in dem Verzeichnis befindet und welche anderen Befehle er bei nachfolgenden OS-Befehlsinjektionsangriffen verwenden kann. Sie geben ein:

$ ./cat MeetingNotes.txt && ls

Und holen Sie sich stattdessen das hier:

Bei der Juli-Sitzung waren drei Mitglieder des Vorstands anwesend. Das neue Budgetprojekt wurde diskutiert, aber es wurden keine Aktionen oder Abstimmungen durchgeführt.

MeetingNotes.txt
JuneMeetingNotes.txt
MayMeetingNotes.txt
format.c
misnull.c
notefault.c
trunc.c
writewhatwhere.c

Wie Sie sehen können, wurde dem Hacker in diesem Fall nicht nur der Inhalt des Verzeichnisses gezeigt, sondern auch ein Menü mit anderen Befehlen, die er verwenden konnte " Befehle, von denen er jetzt weiß, dass er sie auf dem Host-Betriebssystem ausführen kann.

Warum sind OS Command Injection Attacken so gefährlich?

Es ist äußerst riskant, Benutzern zu erlauben, den Zweck der anvisierten Anwendung zu umgehen und sie zur Ausführung von Betriebssystembefehlen zu verwenden. Ein Angreifer kann leicht verheerende Aktionen durchführen, wie z. B. das Stehlen vertraulicher Daten oder das Formatieren eines ganzen Serverlaufwerks. Die Möglichkeiten, die einem Angreifer zur Verfügung stehen, sind nur durch die erlaubten Befehle innerhalb des Betriebssystems und seine Kreativität bei der Verwendung derselben begrenzt.

Betriebssystembefehle werden auf der gleichen Berechtigungsebene wie die Anwendung ausgeführt. Apps, die mit administrativen Rechten laufen, bedeuten, dass Hacker, die sie kompromittieren, jeden Betriebssystembefehl ausführen können.

Die Angriffsmuster für OS Command Injection sind gut bekannt und dokumentiert. Eine anfällige Anwendung ist für Script-Kiddies genauso anfällig wie für professionelle Hacker. Angreifer mit sehr geringen Kenntnissen können versuchen, Betriebssystembefehle per Cut-and-Paste in Anwendungen einzufügen, um zu sehen, was passiert.

Ein Sicherheits-OK gegen OS-Befehlsinjektionen erhalten

Es gibt mehrere gute Techniken, die OS-Befehlsinjektionen stoppen können. Der erste Schritt besteht darin, Anwendungen mit den geringsten Rechten auszuführen, die für die Ausführung ihrer Funktion erforderlich sind. Dadurch wird ein Angriff zwar nicht verhindert, aber wenn es doch zu einer Verletzung kommt, wird der Schaden minimiert.

Die meisten Programmiersprachen und Frameworks bieten API-Aufrufe für gängige Betriebssystemmethoden wie das Auflisten von Verzeichnisinhalten, das Erstellen oder Lesen von Dateien auf der Festplatte. Eine perfekte Möglichkeit, OS-Befehlsinjektionen aus Ihrer Umgebung zu eliminieren, besteht darin, dass alle Anwendungen diese API-Aufrufe anstelle von OS-Befehlen direkt verwenden.

Wenn dies nicht möglich ist, validieren Sie Benutzereingaben, bevor Sie sie in Betriebssystembefehlen verwenden. Whitelists können verwendet werden, um sicherzustellen, dass nur ein kleiner Satz vertrauenswürdiger Werte verwendet werden kann. Es ist technisch möglich, dies auch mit einer Blacklist zu tun, aber es gibt wahrscheinlich viel weniger erlaubte Befehle, so dass eine Whitelist fast immer einfacher ist. Vergessen Sie nicht, gültige POST- und GET-Parameter in Ihre Whitelist aufzunehmen, ebenso wie oft übersehene Benutzereingabevektoren wie Cookies.

Wenn keine Programmier-API verfügbar ist und keine Whitelist verwendet werden kann, verwenden Sie eine Sanitization Library, um Sonderzeichen in Benutzereingaben zu entschlüsseln, bevor sie in Betriebssystembefehlen verwendet werden.

Weitere Informationen über OS Command Injection Attacken

Als weitere Lektüre können Sie einen Blick auf die OWASP-Schreibweise zu OS Command Injection-Angriffen werfen. Sie können Ihr neu erworbenes Verteidigungswissen auch mit der kostenlosen Demo der Plattform Secure Code Warrior testen, die Cybersecurity-Teams zu den ultimativen Cyber-Kriegern ausbildet. Um mehr über die Abwehr dieser Schwachstelle und einer Reihe anderer Bedrohungen zu erfahren, besuchen Sie den BlogSecure Code Warrior .

Ressource anzeigen
Ressource anzeigen

Füllen Sie das untenstehende Formular aus, um den Bericht herunterzuladen.

Wir möchten Ihre Einwilligung einholen, um Ihnen Informationen zu unseren Produkten und/oder zu Themen im Zusammenhang mit sicherer Verschlüsselung zuzusenden. Wir werden Ihre personenbezogenen Daten stets mit größter Sorgfalt behandeln und niemals zu Marketingzwecken an andere Unternehmen verkaufen.

Einreichen
scw Erfolgssymbol
scw-Fehlersymbol
Um das Formular zu senden, aktivieren Sie bitte die „Analytics“-Cookies. Sie können diese nach Abschluss des Vorgangs wieder deaktivieren.

Ein Angriff durch OS-Befehlsinjektion kann immer dann erfolgen, wenn eine Anwendung es Benutzern erlaubt, Eingaben in eine Shell zu machen, aber keine Maßnahmen ergreift, um zu überprüfen, ob die Eingabezeichenfolgen gültig sind. Auf diese Weise kann ein Angreifer Befehle direkt in das Betriebssystem einspeisen, das die Anwendung hostet, und zwar auf allen Berechtigungsstufen, die für die kompromittierte Anwendung festgelegt sind.  

OS-Befehlsinjektionsangriffe können von Einsteigern und weniger erfahrenen Hackern durchgeführt werden, was sie zu einer der häufigsten Schwachstellen macht, die Sicherheitsteams erfahren. Glücklicherweise gibt es einige sehr effektive Möglichkeiten, um sie zu verhindern. In dieser Folge lernen wir es:

       Wie sie funktionieren

       Warum sie so gefährlich sind

       Wie Sie Abwehrmaßnahmen ergreifen können, um sie zu stoppen.

Wie verwenden Angreifer OS Command Injection?

Das erste, was ein Angreifer tun muss, um einen OS-Befehlsinjektionsangriff zu initiieren, ist das Auffinden von Benutzereingaben innerhalb einer Anwendung. Formulare, die Benutzer ausfüllen, sind potenziell gute Absprungpunkte. Die cleversten Angreifer können auch Dinge wie Cookies oder sogar HTTP-Header als Startpunkt verwenden, etwas, das von fast jeder Anwendung oder Website verwendet wird.

Als zweites müssen sie herausfinden, auf welchem Betriebssystem die Anwendung läuft. Da es nur eine Handvoll Auswahlmöglichkeiten gibt, kann Versuch und Irrtum in dieser Phase gut funktionieren. Die meisten Anwendungsserver werden entweder Windows-basiert sein (die Windows-Variante spielt normalerweise keine Rolle), eine Art Linux-Box oder möglicherweise Unix.

An diesem Punkt modifiziert der Hacker die Eingabe, um einen Betriebssystembefehl in eine scheinbar harmlose Eingabe zu injizieren. Dadurch kann das Host-Betriebssystem dazu gebracht werden, unbeabsichtigte Befehle auf der jeweiligen Berechtigungsebene der Anwendung auszuführen.

Der folgende Befehl kann z. B. von gültigen Benutzern innerhalb einer Anwendung verwendet werden, um den Inhalt einer Datei zu sehen, in diesem Fall die Notizen einer monatlichen Vorstandssitzung.

exec("cat " + Dateiname)

In unserem Beispiel würde dies den folgenden Befehl ausführen und die Besprechungsnotizen an den Benutzer zurückgeben.

$ ./cat MeetingNotes.txt
Bei der Juli-Sitzung waren drei Mitglieder des Vorstands anwesend. Das neue Budgetprojekt wurde diskutiert, aber es wurden keine Aktionen oder Abstimmungen durchgeführt.

Das passiert, wenn ein Angreifer zusätzliche Befehle am Ende der Eingabe hinzufügt, wie z. B. den, der zum Auflisten des Inhalts eines Verzeichnisses in Linux verwendet wird. In diesem Fall wird der ursprüngliche Befehl, die Anzeige der Besprechungsnotizen, immer noch ausgeführt. Aber dem böswilligen Benutzer wird auch angezeigt, was sich sonst noch in dem Verzeichnis befindet und welche anderen Befehle er bei nachfolgenden OS-Befehlsinjektionsangriffen verwenden kann. Sie geben ein:

$ ./cat MeetingNotes.txt && ls

Und holen Sie sich stattdessen das hier:

Bei der Juli-Sitzung waren drei Mitglieder des Vorstands anwesend. Das neue Budgetprojekt wurde diskutiert, aber es wurden keine Aktionen oder Abstimmungen durchgeführt.

MeetingNotes.txt
JuneMeetingNotes.txt
MayMeetingNotes.txt
format.c
misnull.c
notefault.c
trunc.c
writewhatwhere.c

Wie Sie sehen können, wurde dem Hacker in diesem Fall nicht nur der Inhalt des Verzeichnisses gezeigt, sondern auch ein Menü mit anderen Befehlen, die er verwenden konnte " Befehle, von denen er jetzt weiß, dass er sie auf dem Host-Betriebssystem ausführen kann.

Warum sind OS Command Injection Attacken so gefährlich?

Es ist äußerst riskant, Benutzern zu erlauben, den Zweck der anvisierten Anwendung zu umgehen und sie zur Ausführung von Betriebssystembefehlen zu verwenden. Ein Angreifer kann leicht verheerende Aktionen durchführen, wie z. B. das Stehlen vertraulicher Daten oder das Formatieren eines ganzen Serverlaufwerks. Die Möglichkeiten, die einem Angreifer zur Verfügung stehen, sind nur durch die erlaubten Befehle innerhalb des Betriebssystems und seine Kreativität bei der Verwendung derselben begrenzt.

Betriebssystembefehle werden auf der gleichen Berechtigungsebene wie die Anwendung ausgeführt. Apps, die mit administrativen Rechten laufen, bedeuten, dass Hacker, die sie kompromittieren, jeden Betriebssystembefehl ausführen können.

Die Angriffsmuster für OS Command Injection sind gut bekannt und dokumentiert. Eine anfällige Anwendung ist für Script-Kiddies genauso anfällig wie für professionelle Hacker. Angreifer mit sehr geringen Kenntnissen können versuchen, Betriebssystembefehle per Cut-and-Paste in Anwendungen einzufügen, um zu sehen, was passiert.

Ein Sicherheits-OK gegen OS-Befehlsinjektionen erhalten

Es gibt mehrere gute Techniken, die OS-Befehlsinjektionen stoppen können. Der erste Schritt besteht darin, Anwendungen mit den geringsten Rechten auszuführen, die für die Ausführung ihrer Funktion erforderlich sind. Dadurch wird ein Angriff zwar nicht verhindert, aber wenn es doch zu einer Verletzung kommt, wird der Schaden minimiert.

Die meisten Programmiersprachen und Frameworks bieten API-Aufrufe für gängige Betriebssystemmethoden wie das Auflisten von Verzeichnisinhalten, das Erstellen oder Lesen von Dateien auf der Festplatte. Eine perfekte Möglichkeit, OS-Befehlsinjektionen aus Ihrer Umgebung zu eliminieren, besteht darin, dass alle Anwendungen diese API-Aufrufe anstelle von OS-Befehlen direkt verwenden.

Wenn dies nicht möglich ist, validieren Sie Benutzereingaben, bevor Sie sie in Betriebssystembefehlen verwenden. Whitelists können verwendet werden, um sicherzustellen, dass nur ein kleiner Satz vertrauenswürdiger Werte verwendet werden kann. Es ist technisch möglich, dies auch mit einer Blacklist zu tun, aber es gibt wahrscheinlich viel weniger erlaubte Befehle, so dass eine Whitelist fast immer einfacher ist. Vergessen Sie nicht, gültige POST- und GET-Parameter in Ihre Whitelist aufzunehmen, ebenso wie oft übersehene Benutzereingabevektoren wie Cookies.

Wenn keine Programmier-API verfügbar ist und keine Whitelist verwendet werden kann, verwenden Sie eine Sanitization Library, um Sonderzeichen in Benutzereingaben zu entschlüsseln, bevor sie in Betriebssystembefehlen verwendet werden.

Weitere Informationen über OS Command Injection Attacken

Als weitere Lektüre können Sie einen Blick auf die OWASP-Schreibweise zu OS Command Injection-Angriffen werfen. Sie können Ihr neu erworbenes Verteidigungswissen auch mit der kostenlosen Demo der Plattform Secure Code Warrior testen, die Cybersecurity-Teams zu den ultimativen Cyber-Kriegern ausbildet. Um mehr über die Abwehr dieser Schwachstelle und einer Reihe anderer Bedrohungen zu erfahren, besuchen Sie den BlogSecure Code Warrior .

Webinar anzeigen
Beginnen Sie
mehr erfahren

Klicken Sie auf den untenstehenden Link und laden Sie das PDF dieser Ressource herunter.

Secure Code Warrior Ihr Unternehmen dabei, den Code während des gesamten Softwareentwicklungszyklus zu sichern und eine Kultur zu schaffen, in der Cybersicherheit oberste Priorität hat. Ganz gleich, ob Sie für die Anwendungssicherheit verantwortlich sind, Entwickler, IT-Sicherheitsbeauftragter oder in einer anderen Funktion im Bereich Sicherheit tätig sind – wir können Ihrem Unternehmen dabei helfen, die mit unsicherem Code verbundenen Risiken zu reduzieren.

Bericht anzeigenDemo buchen
PDF herunterladen
Ressource anzeigen
Teilen auf:
LinkedIn-MarkenSozialx Logo
Möchten Sie mehr erfahren?

Teilen auf:
LinkedIn-MarkenSozialx Logo
Autor
Jaap Karan Singh
Veröffentlicht am 07. Feb. 2019

Jaap Karan Singh est un évangéliste du codage sécurisé, Chief Singh et cofondateur de Secure Code Warrior.

Teilen auf:
LinkedIn-MarkenSozialx Logo

Ein Angriff durch OS-Befehlsinjektion kann immer dann erfolgen, wenn eine Anwendung es Benutzern erlaubt, Eingaben in eine Shell zu machen, aber keine Maßnahmen ergreift, um zu überprüfen, ob die Eingabezeichenfolgen gültig sind. Auf diese Weise kann ein Angreifer Befehle direkt in das Betriebssystem einspeisen, das die Anwendung hostet, und zwar auf allen Berechtigungsstufen, die für die kompromittierte Anwendung festgelegt sind.  

OS-Befehlsinjektionsangriffe können von Einsteigern und weniger erfahrenen Hackern durchgeführt werden, was sie zu einer der häufigsten Schwachstellen macht, die Sicherheitsteams erfahren. Glücklicherweise gibt es einige sehr effektive Möglichkeiten, um sie zu verhindern. In dieser Folge lernen wir es:

       Wie sie funktionieren

       Warum sie so gefährlich sind

       Wie Sie Abwehrmaßnahmen ergreifen können, um sie zu stoppen.

Wie verwenden Angreifer OS Command Injection?

Das erste, was ein Angreifer tun muss, um einen OS-Befehlsinjektionsangriff zu initiieren, ist das Auffinden von Benutzereingaben innerhalb einer Anwendung. Formulare, die Benutzer ausfüllen, sind potenziell gute Absprungpunkte. Die cleversten Angreifer können auch Dinge wie Cookies oder sogar HTTP-Header als Startpunkt verwenden, etwas, das von fast jeder Anwendung oder Website verwendet wird.

Als zweites müssen sie herausfinden, auf welchem Betriebssystem die Anwendung läuft. Da es nur eine Handvoll Auswahlmöglichkeiten gibt, kann Versuch und Irrtum in dieser Phase gut funktionieren. Die meisten Anwendungsserver werden entweder Windows-basiert sein (die Windows-Variante spielt normalerweise keine Rolle), eine Art Linux-Box oder möglicherweise Unix.

An diesem Punkt modifiziert der Hacker die Eingabe, um einen Betriebssystembefehl in eine scheinbar harmlose Eingabe zu injizieren. Dadurch kann das Host-Betriebssystem dazu gebracht werden, unbeabsichtigte Befehle auf der jeweiligen Berechtigungsebene der Anwendung auszuführen.

Der folgende Befehl kann z. B. von gültigen Benutzern innerhalb einer Anwendung verwendet werden, um den Inhalt einer Datei zu sehen, in diesem Fall die Notizen einer monatlichen Vorstandssitzung.

exec("cat " + Dateiname)

In unserem Beispiel würde dies den folgenden Befehl ausführen und die Besprechungsnotizen an den Benutzer zurückgeben.

$ ./cat MeetingNotes.txt
Bei der Juli-Sitzung waren drei Mitglieder des Vorstands anwesend. Das neue Budgetprojekt wurde diskutiert, aber es wurden keine Aktionen oder Abstimmungen durchgeführt.

Das passiert, wenn ein Angreifer zusätzliche Befehle am Ende der Eingabe hinzufügt, wie z. B. den, der zum Auflisten des Inhalts eines Verzeichnisses in Linux verwendet wird. In diesem Fall wird der ursprüngliche Befehl, die Anzeige der Besprechungsnotizen, immer noch ausgeführt. Aber dem böswilligen Benutzer wird auch angezeigt, was sich sonst noch in dem Verzeichnis befindet und welche anderen Befehle er bei nachfolgenden OS-Befehlsinjektionsangriffen verwenden kann. Sie geben ein:

$ ./cat MeetingNotes.txt && ls

Und holen Sie sich stattdessen das hier:

Bei der Juli-Sitzung waren drei Mitglieder des Vorstands anwesend. Das neue Budgetprojekt wurde diskutiert, aber es wurden keine Aktionen oder Abstimmungen durchgeführt.

MeetingNotes.txt
JuneMeetingNotes.txt
MayMeetingNotes.txt
format.c
misnull.c
notefault.c
trunc.c
writewhatwhere.c

Wie Sie sehen können, wurde dem Hacker in diesem Fall nicht nur der Inhalt des Verzeichnisses gezeigt, sondern auch ein Menü mit anderen Befehlen, die er verwenden konnte " Befehle, von denen er jetzt weiß, dass er sie auf dem Host-Betriebssystem ausführen kann.

Warum sind OS Command Injection Attacken so gefährlich?

Es ist äußerst riskant, Benutzern zu erlauben, den Zweck der anvisierten Anwendung zu umgehen und sie zur Ausführung von Betriebssystembefehlen zu verwenden. Ein Angreifer kann leicht verheerende Aktionen durchführen, wie z. B. das Stehlen vertraulicher Daten oder das Formatieren eines ganzen Serverlaufwerks. Die Möglichkeiten, die einem Angreifer zur Verfügung stehen, sind nur durch die erlaubten Befehle innerhalb des Betriebssystems und seine Kreativität bei der Verwendung derselben begrenzt.

Betriebssystembefehle werden auf der gleichen Berechtigungsebene wie die Anwendung ausgeführt. Apps, die mit administrativen Rechten laufen, bedeuten, dass Hacker, die sie kompromittieren, jeden Betriebssystembefehl ausführen können.

Die Angriffsmuster für OS Command Injection sind gut bekannt und dokumentiert. Eine anfällige Anwendung ist für Script-Kiddies genauso anfällig wie für professionelle Hacker. Angreifer mit sehr geringen Kenntnissen können versuchen, Betriebssystembefehle per Cut-and-Paste in Anwendungen einzufügen, um zu sehen, was passiert.

Ein Sicherheits-OK gegen OS-Befehlsinjektionen erhalten

Es gibt mehrere gute Techniken, die OS-Befehlsinjektionen stoppen können. Der erste Schritt besteht darin, Anwendungen mit den geringsten Rechten auszuführen, die für die Ausführung ihrer Funktion erforderlich sind. Dadurch wird ein Angriff zwar nicht verhindert, aber wenn es doch zu einer Verletzung kommt, wird der Schaden minimiert.

Die meisten Programmiersprachen und Frameworks bieten API-Aufrufe für gängige Betriebssystemmethoden wie das Auflisten von Verzeichnisinhalten, das Erstellen oder Lesen von Dateien auf der Festplatte. Eine perfekte Möglichkeit, OS-Befehlsinjektionen aus Ihrer Umgebung zu eliminieren, besteht darin, dass alle Anwendungen diese API-Aufrufe anstelle von OS-Befehlen direkt verwenden.

Wenn dies nicht möglich ist, validieren Sie Benutzereingaben, bevor Sie sie in Betriebssystembefehlen verwenden. Whitelists können verwendet werden, um sicherzustellen, dass nur ein kleiner Satz vertrauenswürdiger Werte verwendet werden kann. Es ist technisch möglich, dies auch mit einer Blacklist zu tun, aber es gibt wahrscheinlich viel weniger erlaubte Befehle, so dass eine Whitelist fast immer einfacher ist. Vergessen Sie nicht, gültige POST- und GET-Parameter in Ihre Whitelist aufzunehmen, ebenso wie oft übersehene Benutzereingabevektoren wie Cookies.

Wenn keine Programmier-API verfügbar ist und keine Whitelist verwendet werden kann, verwenden Sie eine Sanitization Library, um Sonderzeichen in Benutzereingaben zu entschlüsseln, bevor sie in Betriebssystembefehlen verwendet werden.

Weitere Informationen über OS Command Injection Attacken

Als weitere Lektüre können Sie einen Blick auf die OWASP-Schreibweise zu OS Command Injection-Angriffen werfen. Sie können Ihr neu erworbenes Verteidigungswissen auch mit der kostenlosen Demo der Plattform Secure Code Warrior testen, die Cybersecurity-Teams zu den ultimativen Cyber-Kriegern ausbildet. Um mehr über die Abwehr dieser Schwachstelle und einer Reihe anderer Bedrohungen zu erfahren, besuchen Sie den BlogSecure Code Warrior .

Inhaltsverzeichnis

PDF herunterladen
Ressource anzeigen
Möchten Sie mehr erfahren?

Jaap Karan Singh est un évangéliste du codage sécurisé, Chief Singh et cofondateur de Secure Code Warrior.

mehr erfahren

Secure Code Warrior Ihr Unternehmen dabei, den Code während des gesamten Softwareentwicklungszyklus zu sichern und eine Kultur zu schaffen, in der Cybersicherheit oberste Priorität hat. Ganz gleich, ob Sie für die Anwendungssicherheit verantwortlich sind, Entwickler, IT-Sicherheitsbeauftragter oder in einer anderen Funktion im Bereich Sicherheit tätig sind – wir können Ihrem Unternehmen dabei helfen, die mit unsicherem Code verbundenen Risiken zu reduzieren.

Demo buchenHerunterladen
Teilen auf:
LinkedIn-MarkenSozialx Logo
Ressourcenzentrum

Ressourcen, die Ihnen den Einstieg erleichtern

Weitere Beiträge
Ressourcenzentrum

Ressourcen, die Ihnen den Einstieg erleichtern

Weitere Beiträge