
Les codeurs conquièrent la sécurité : série Share & Learn - OS Command Injection
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 .


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.
Jaap Karan Singh est un évangéliste du codage sécurisé, Chief Singh et cofondateur de Secure Code Warrior.

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 buchenJaap Karan Singh est un évangéliste du codage sécurisé, Chief Singh et cofondateur de Secure Code Warrior.


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 .

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 .

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 buchenJaap Karan Singh est un évangéliste du codage sécurisé, Chief Singh et cofondateur de Secure Code Warrior.
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
Jaap Karan Singh est un évangéliste du codage sécurisé, Chief Singh et cofondateur de Secure Code Warrior.

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 buchenHerunterladenRessourcen, die Ihnen den Einstieg erleichtern
Themen und Inhalte der Schulung zum sicheren Code
Unsere hochmodernen Inhalte werden ständig weiterentwickelt, um mit den ständigen Veränderungen in der Softwareentwicklungslandschaft Schritt zu halten und gleichzeitig Ihre Rolle zu berücksichtigen. Die Themen reichen von KI bis hin zu XQuery-Injection und sind für eine Vielzahl von Positionen konzipiert, von Architekten über Ingenieure bis hin zu Produktmanagern und Qualitätssicherungsmitarbeitern. Verschaffen Sie sich einen Überblick über die Inhalte unseres Katalogs, sortiert nach Themen und Rollen.
Die Kamer van Koophandel setzt Maßstäbe für entwicklergesteuerte Sicherheit in großem Maßstab
Die Kamer van Koophandel berichtet, wie sie sicheres Codieren durch rollenbasierte Zertifizierungen, Trust Score-Benchmarking und eine Kultur der gemeinsamen Verantwortung für Sicherheit in die tägliche Entwicklungsarbeit integriert hat.
Bedrohungsmodellierung mit KI: So wird jeder Entwickler zum Bedrohungsmodellierer
Sie werden besser gerüstet sein, um Entwicklern dabei zu helfen, Ideen und Techniken zur Bedrohungsmodellierung mit den KI-Tools zu kombinieren, die sie bereits verwenden, um die Sicherheit zu erhöhen, die Zusammenarbeit zu verbessern und von Anfang an widerstandsfähigere Software zu entwickeln.
Ressourcen, die Ihnen den Einstieg erleichtern
Cybermon ist zurück: Die missions „Beat the Boss“ sind jetzt auf Abruf verfügbar.
Cybermon 2025 Beat the Boss ist jetzt das ganze Jahr über in SCW verfügbar. Setzen Sie fortschrittliche Sicherheitsherausforderungen im Zusammenhang mit KI und LLM ein, um die sichere Entwicklung von KI in großem Maßstab zu stärken.
Erläuterung des Gesetzes zur Cyberresilienz: Was bedeutet das für die Entwicklung sicherer Software bereits ab der Konzeption?
Entdecken Sie, was das europäische Gesetz zur Cyberresilienz (CRA) verlangt, für wen es gilt und wie sich Ingenieurteams durch Sicherheitsmaßnahmen bereits in der Entwurfsphase, durch die Vermeidung von Schwachstellen und durch die Stärkung der Fähigkeiten der Entwickler darauf vorbereiten können.
Moderator 1: Definierte und messbare Erfolgskriterien
Enabler 1 gibt den Startschuss für unsere 10-teilige Serie mit dem Titel „Enablers of Success“ und zeigt, wie sichere Codierung mit geschäftlichen Ergebnissen wie Risikominderung und Schnelligkeit kombiniert werden kann, um die langfristige Reife von Programmen sicherzustellen.




%20(1).avif)
.avif)
