
Programmierer erobern Sicherheit: Share & Learn-Serie — OS Command Injection
Ein Betriebssystem-Command-Injection-Angriff kann immer dann erfolgen, wenn eine Anwendung Benutzern erlaubt, Eingaben in eine Shell vorzunehmen, 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 übertragen, das die Anwendung hostet, und zwar mit den für die gefährdeten Anwendungen festgelegten Berechtigungsstufen.
OS-Command-Injection-Angriffe können von Anfängern und weniger erfahrenen Hackern ausgeführt werden, was sie zu einer der häufigsten Schwachstellen von Sicherheitsteams macht. Zum Glück gibt es einige sehr effektive Möglichkeiten, um zu verhindern, dass sie erfolgreich sind. In dieser Episode werden wir lernen:
So funktionieren sie
Warum sie so gefährlich sind
Wie Sie Abwehrmechanismen einrichten können, um sie zu stoppen.
Wie verwenden Angreifer OS Command Injection?
Das erste, was ein Angreifer tun muss, um einen Betriebssystem-Command-Injection-Angriff zu starten, ist, Benutzereingaben innerhalb einer Anwendung zu lokalisieren. Formulare, die Benutzer ausfüllen, sind potenziell gute Ausgangspunkte. Die cleversten Angreifer können auch Dinge wie Cookies oder sogar HTTP-Header als Ausgangspunkt verwenden, was von fast jeder Anwendung oder Website verwendet wird.
Das zweite, was sie tun müssen, ist herauszufinden, welches Betriebssystem die Anwendung hostet. Angesichts der Tatsache, dass es nur eine Handvoll Auswahlmöglichkeiten gibt, können Versuch und Irrtum in dieser Phase gut funktionieren. Die meisten Anwendungsserver werden entweder Windows-basiert sein (die Art von Windows spielt normalerweise keine Rolle), irgendeine Art von Linux-Box oder möglicherweise Unix.
An diesem Punkt ändert der Hacker die Eingabe, um einen Betriebssystembefehl in eine scheinbar harmlose Eingabe einzufügen. Dies kann das Hosting-Betriebssystem dazu verleiten, unbeabsichtigte Befehle auf jeder Berechtigungsstufe der Anwendung auszuführen.
Beispielsweise kann der folgende Befehl von gültigen Benutzern innerhalb einer Anwendung verwendet werden, um den Inhalt einer Datei anzuzeigen, 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 Exekutivausschusses anwesend. Das neue Haushaltsprojekt wurde erörtert, es wurden jedoch keine Maßnahmen ergriffen oder Abstimmungen getroffen.
Dies passiert, wenn ein Angreifer am Ende der Eingabe zusätzliche Befehle hinzufügt, z. B. den Befehl, der zum Auflisten des Inhalts eines Verzeichnisses unter Linux verwendet wird. In diesem Fall wird immer noch der ursprüngliche Befehl ausgeführt, der die Besprechungsnotizen anzeigt. Dem böswilligen Benutzer wird aber auch angezeigt, was sich sonst noch in dem Verzeichnis befindet und welche anderen Befehle er bei nachfolgenden Angriffen auf Betriebssystembefehle verwenden kann. Sie geben ein:
$. /cat MeetingNotes.txt && ls
Und hol dir stattdessen das:
Bei der Juli-Sitzung waren drei Mitglieder des Exekutivausschusses anwesend. Das neue Haushaltsprojekt wurde erörtert, es wurden jedoch keine Maßnahmen ergriffen oder Abstimmungen getroffen.
MeetingNotes.txt
JuneMeetingNotes.txt
MayMeetingNotes.txt
formatieren.c
falsch. C
kein Fehler. C
trunk.c
schreib was woher.c
Wie Sie sehen können, wurde dem Hacker in diesem Fall nicht nur der Inhalt des Verzeichnisses angezeigt, sondern auch ein Menü mit anderen Befehlen angezeigt, mit denen er "Befehle verwenden konnte, von denen sie jetzt wissen, dass sie sie auf dem Host-Betriebssystem ausführen können.
Warum sind OS Command Injection-Angriffe so gefährlich?
Es ist äußerst riskant, Benutzern zu erlauben, den Zweck der Zielanwendung zu umgehen und sie zum Ausführen von Betriebssystembefehlen zu verwenden. Ein Angreifer kann leicht verheerende Aktionen ausführen, wie zum Beispiel vertrauliche Daten stehlen oder ein ganzes Serverlaufwerk formatieren. Die Optionen, die einem Angreifer zur Verfügung stehen, werden nur durch die zulässigen Befehle innerhalb des Betriebssystems und durch seine Kreativität bei der Verwendung dieser Befehle eingeschränkt.
Betriebssystembefehle werden auf derselben Berechtigungsstufe wie die Anwendung ausgeführt. Apps, die mit Administratorrechten ausgeführt werden, bedeuten, dass Hacker, die sie kompromittieren, jeden Betriebssystembefehl ausführen können.
Die Angriffsmuster für OS Command Injection sind bekannt und dokumentiert. Eine anfällige Anwendung ist für Script-Kiddies genauso anfällig wie für professionelle Hacker. Angreifer mit sehr geringen Fähigkeiten können versuchen, Betriebssystembefehle auszuschneiden und in Anwendungen einzufügen, um zu sehen, was passiert.
Ein Sicherheits-OK gegen Betriebssystem-Befehlsinjektionen erhalten
Es gibt mehrere gute Techniken, mit denen Betriebssystembefehle verhindert werden 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 nicht verhindert, sollte es dennoch zu einer Sicherheitsverletzung kommen, 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 Methode, um Betriebssystembefehle aus Ihrer Umgebung zu eliminieren, besteht darin, dass alle Anwendungen diese API-Aufrufe anstelle der Betriebssystembefehle direkt verwenden.
Wenn dies nicht möglich ist, überprüfen 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 zulässige Befehle, sodass das Whitelisting fast immer einfacher ist. Vergessen Sie nicht, gültige POST- und GET-Parameter sowie häufig übersehene Benutzereingabevektoren wie Cookies in Ihre Whitelist aufzunehmen.
Wenn keine Programmier-API verfügbar ist und eine Whitelist nicht verwendet werden kann, verwenden Sie schließlich eine Sanitisierungsbibliothek, um alle Sonderzeichen in Benutzereingaben zu maskieren, bevor Sie sie in Betriebssystembefehlen verwenden.
Weitere Informationen zu OS Command Injection-Angriffen
Für weitere Informationen können Sie sich die OWASP ansehen schreiben Sie auf Angriffe mit Betriebssystem-Befehlsinjektion. Sie können Ihr neu gewonnenes Defensivwissen auch mit dem auf die Probe stellen kostenlose Demo der Secure Code Warrior-Plattform, die Cybersicherheitsteams zu ultimativen Cyberkriegern ausbildet. Um mehr über die Beseitigung dieser Sicherheitslücke und eine Galerie mit anderen Bedrohungen zu erfahren, besuchen Sie die Sicherer Code Warrior-Blog.


OS-Command-Injection-Angriffe können von Anfängern und weniger erfahrenen Hackern ausgeführt werden, was sie zu einer der häufigsten Schwachstellen von Sicherheitsteams macht. Zum Glück gibt es einige sehr effektive Möglichkeiten, um zu verhindern, dass sie erfolgreich sind.
Jaap Karan Singh ist Secure Coding Evangelist, Chief Singh und Mitbegründer von Secure Code Warrior.

Secure Code Warrior là pour aider votre entreprise à sécuriser le code tout au long du cycle de développement logiciel et à créer une culture où la cybersécurité est une priorité. Que vous soyez responsable de la sécurité des applications, développeur, responsable de la sécurité des systèmes d'information ou toute autre personne impliquée dans la sécurité, nous pouvons aider votre entreprise à réduire les risques liés à un code non sécurisé.
Réserver une démonstrationJaap Karan Singh ist Secure Coding Evangelist, Chief Singh und Mitbegründer von Secure Code Warrior.


Ein Betriebssystem-Command-Injection-Angriff kann immer dann erfolgen, wenn eine Anwendung Benutzern erlaubt, Eingaben in eine Shell vorzunehmen, 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 übertragen, das die Anwendung hostet, und zwar mit den für die gefährdeten Anwendungen festgelegten Berechtigungsstufen.
OS-Command-Injection-Angriffe können von Anfängern und weniger erfahrenen Hackern ausgeführt werden, was sie zu einer der häufigsten Schwachstellen von Sicherheitsteams macht. Zum Glück gibt es einige sehr effektive Möglichkeiten, um zu verhindern, dass sie erfolgreich sind. In dieser Episode werden wir lernen:
So funktionieren sie
Warum sie so gefährlich sind
Wie Sie Abwehrmechanismen einrichten können, um sie zu stoppen.
Wie verwenden Angreifer OS Command Injection?
Das erste, was ein Angreifer tun muss, um einen Betriebssystem-Command-Injection-Angriff zu starten, ist, Benutzereingaben innerhalb einer Anwendung zu lokalisieren. Formulare, die Benutzer ausfüllen, sind potenziell gute Ausgangspunkte. Die cleversten Angreifer können auch Dinge wie Cookies oder sogar HTTP-Header als Ausgangspunkt verwenden, was von fast jeder Anwendung oder Website verwendet wird.
Das zweite, was sie tun müssen, ist herauszufinden, welches Betriebssystem die Anwendung hostet. Angesichts der Tatsache, dass es nur eine Handvoll Auswahlmöglichkeiten gibt, können Versuch und Irrtum in dieser Phase gut funktionieren. Die meisten Anwendungsserver werden entweder Windows-basiert sein (die Art von Windows spielt normalerweise keine Rolle), irgendeine Art von Linux-Box oder möglicherweise Unix.
An diesem Punkt ändert der Hacker die Eingabe, um einen Betriebssystembefehl in eine scheinbar harmlose Eingabe einzufügen. Dies kann das Hosting-Betriebssystem dazu verleiten, unbeabsichtigte Befehle auf jeder Berechtigungsstufe der Anwendung auszuführen.
Beispielsweise kann der folgende Befehl von gültigen Benutzern innerhalb einer Anwendung verwendet werden, um den Inhalt einer Datei anzuzeigen, 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 Exekutivausschusses anwesend. Das neue Haushaltsprojekt wurde erörtert, es wurden jedoch keine Maßnahmen ergriffen oder Abstimmungen getroffen.
Dies passiert, wenn ein Angreifer am Ende der Eingabe zusätzliche Befehle hinzufügt, z. B. den Befehl, der zum Auflisten des Inhalts eines Verzeichnisses unter Linux verwendet wird. In diesem Fall wird immer noch der ursprüngliche Befehl ausgeführt, der die Besprechungsnotizen anzeigt. Dem böswilligen Benutzer wird aber auch angezeigt, was sich sonst noch in dem Verzeichnis befindet und welche anderen Befehle er bei nachfolgenden Angriffen auf Betriebssystembefehle verwenden kann. Sie geben ein:
$. /cat MeetingNotes.txt && ls
Und hol dir stattdessen das:
Bei der Juli-Sitzung waren drei Mitglieder des Exekutivausschusses anwesend. Das neue Haushaltsprojekt wurde erörtert, es wurden jedoch keine Maßnahmen ergriffen oder Abstimmungen getroffen.
MeetingNotes.txt
JuneMeetingNotes.txt
MayMeetingNotes.txt
formatieren.c
falsch. C
kein Fehler. C
trunk.c
schreib was woher.c
Wie Sie sehen können, wurde dem Hacker in diesem Fall nicht nur der Inhalt des Verzeichnisses angezeigt, sondern auch ein Menü mit anderen Befehlen angezeigt, mit denen er "Befehle verwenden konnte, von denen sie jetzt wissen, dass sie sie auf dem Host-Betriebssystem ausführen können.
Warum sind OS Command Injection-Angriffe so gefährlich?
Es ist äußerst riskant, Benutzern zu erlauben, den Zweck der Zielanwendung zu umgehen und sie zum Ausführen von Betriebssystembefehlen zu verwenden. Ein Angreifer kann leicht verheerende Aktionen ausführen, wie zum Beispiel vertrauliche Daten stehlen oder ein ganzes Serverlaufwerk formatieren. Die Optionen, die einem Angreifer zur Verfügung stehen, werden nur durch die zulässigen Befehle innerhalb des Betriebssystems und durch seine Kreativität bei der Verwendung dieser Befehle eingeschränkt.
Betriebssystembefehle werden auf derselben Berechtigungsstufe wie die Anwendung ausgeführt. Apps, die mit Administratorrechten ausgeführt werden, bedeuten, dass Hacker, die sie kompromittieren, jeden Betriebssystembefehl ausführen können.
Die Angriffsmuster für OS Command Injection sind bekannt und dokumentiert. Eine anfällige Anwendung ist für Script-Kiddies genauso anfällig wie für professionelle Hacker. Angreifer mit sehr geringen Fähigkeiten können versuchen, Betriebssystembefehle auszuschneiden und in Anwendungen einzufügen, um zu sehen, was passiert.
Ein Sicherheits-OK gegen Betriebssystem-Befehlsinjektionen erhalten
Es gibt mehrere gute Techniken, mit denen Betriebssystembefehle verhindert werden 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 nicht verhindert, sollte es dennoch zu einer Sicherheitsverletzung kommen, 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 Methode, um Betriebssystembefehle aus Ihrer Umgebung zu eliminieren, besteht darin, dass alle Anwendungen diese API-Aufrufe anstelle der Betriebssystembefehle direkt verwenden.
Wenn dies nicht möglich ist, überprüfen 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 zulässige Befehle, sodass das Whitelisting fast immer einfacher ist. Vergessen Sie nicht, gültige POST- und GET-Parameter sowie häufig übersehene Benutzereingabevektoren wie Cookies in Ihre Whitelist aufzunehmen.
Wenn keine Programmier-API verfügbar ist und eine Whitelist nicht verwendet werden kann, verwenden Sie schließlich eine Sanitisierungsbibliothek, um alle Sonderzeichen in Benutzereingaben zu maskieren, bevor Sie sie in Betriebssystembefehlen verwenden.
Weitere Informationen zu OS Command Injection-Angriffen
Für weitere Informationen können Sie sich die OWASP ansehen schreiben Sie auf Angriffe mit Betriebssystem-Befehlsinjektion. Sie können Ihr neu gewonnenes Defensivwissen auch mit dem auf die Probe stellen kostenlose Demo der Secure Code Warrior-Plattform, die Cybersicherheitsteams zu ultimativen Cyberkriegern ausbildet. Um mehr über die Beseitigung dieser Sicherheitslücke und eine Galerie mit anderen Bedrohungen zu erfahren, besuchen Sie die Sicherer Code Warrior-Blog.

Ein Betriebssystem-Command-Injection-Angriff kann immer dann erfolgen, wenn eine Anwendung Benutzern erlaubt, Eingaben in eine Shell vorzunehmen, 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 übertragen, das die Anwendung hostet, und zwar mit den für die gefährdeten Anwendungen festgelegten Berechtigungsstufen.
OS-Command-Injection-Angriffe können von Anfängern und weniger erfahrenen Hackern ausgeführt werden, was sie zu einer der häufigsten Schwachstellen von Sicherheitsteams macht. Zum Glück gibt es einige sehr effektive Möglichkeiten, um zu verhindern, dass sie erfolgreich sind. In dieser Episode werden wir lernen:
So funktionieren sie
Warum sie so gefährlich sind
Wie Sie Abwehrmechanismen einrichten können, um sie zu stoppen.
Wie verwenden Angreifer OS Command Injection?
Das erste, was ein Angreifer tun muss, um einen Betriebssystem-Command-Injection-Angriff zu starten, ist, Benutzereingaben innerhalb einer Anwendung zu lokalisieren. Formulare, die Benutzer ausfüllen, sind potenziell gute Ausgangspunkte. Die cleversten Angreifer können auch Dinge wie Cookies oder sogar HTTP-Header als Ausgangspunkt verwenden, was von fast jeder Anwendung oder Website verwendet wird.
Das zweite, was sie tun müssen, ist herauszufinden, welches Betriebssystem die Anwendung hostet. Angesichts der Tatsache, dass es nur eine Handvoll Auswahlmöglichkeiten gibt, können Versuch und Irrtum in dieser Phase gut funktionieren. Die meisten Anwendungsserver werden entweder Windows-basiert sein (die Art von Windows spielt normalerweise keine Rolle), irgendeine Art von Linux-Box oder möglicherweise Unix.
An diesem Punkt ändert der Hacker die Eingabe, um einen Betriebssystembefehl in eine scheinbar harmlose Eingabe einzufügen. Dies kann das Hosting-Betriebssystem dazu verleiten, unbeabsichtigte Befehle auf jeder Berechtigungsstufe der Anwendung auszuführen.
Beispielsweise kann der folgende Befehl von gültigen Benutzern innerhalb einer Anwendung verwendet werden, um den Inhalt einer Datei anzuzeigen, 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 Exekutivausschusses anwesend. Das neue Haushaltsprojekt wurde erörtert, es wurden jedoch keine Maßnahmen ergriffen oder Abstimmungen getroffen.
Dies passiert, wenn ein Angreifer am Ende der Eingabe zusätzliche Befehle hinzufügt, z. B. den Befehl, der zum Auflisten des Inhalts eines Verzeichnisses unter Linux verwendet wird. In diesem Fall wird immer noch der ursprüngliche Befehl ausgeführt, der die Besprechungsnotizen anzeigt. Dem böswilligen Benutzer wird aber auch angezeigt, was sich sonst noch in dem Verzeichnis befindet und welche anderen Befehle er bei nachfolgenden Angriffen auf Betriebssystembefehle verwenden kann. Sie geben ein:
$. /cat MeetingNotes.txt && ls
Und hol dir stattdessen das:
Bei der Juli-Sitzung waren drei Mitglieder des Exekutivausschusses anwesend. Das neue Haushaltsprojekt wurde erörtert, es wurden jedoch keine Maßnahmen ergriffen oder Abstimmungen getroffen.
MeetingNotes.txt
JuneMeetingNotes.txt
MayMeetingNotes.txt
formatieren.c
falsch. C
kein Fehler. C
trunk.c
schreib was woher.c
Wie Sie sehen können, wurde dem Hacker in diesem Fall nicht nur der Inhalt des Verzeichnisses angezeigt, sondern auch ein Menü mit anderen Befehlen angezeigt, mit denen er "Befehle verwenden konnte, von denen sie jetzt wissen, dass sie sie auf dem Host-Betriebssystem ausführen können.
Warum sind OS Command Injection-Angriffe so gefährlich?
Es ist äußerst riskant, Benutzern zu erlauben, den Zweck der Zielanwendung zu umgehen und sie zum Ausführen von Betriebssystembefehlen zu verwenden. Ein Angreifer kann leicht verheerende Aktionen ausführen, wie zum Beispiel vertrauliche Daten stehlen oder ein ganzes Serverlaufwerk formatieren. Die Optionen, die einem Angreifer zur Verfügung stehen, werden nur durch die zulässigen Befehle innerhalb des Betriebssystems und durch seine Kreativität bei der Verwendung dieser Befehle eingeschränkt.
Betriebssystembefehle werden auf derselben Berechtigungsstufe wie die Anwendung ausgeführt. Apps, die mit Administratorrechten ausgeführt werden, bedeuten, dass Hacker, die sie kompromittieren, jeden Betriebssystembefehl ausführen können.
Die Angriffsmuster für OS Command Injection sind bekannt und dokumentiert. Eine anfällige Anwendung ist für Script-Kiddies genauso anfällig wie für professionelle Hacker. Angreifer mit sehr geringen Fähigkeiten können versuchen, Betriebssystembefehle auszuschneiden und in Anwendungen einzufügen, um zu sehen, was passiert.
Ein Sicherheits-OK gegen Betriebssystem-Befehlsinjektionen erhalten
Es gibt mehrere gute Techniken, mit denen Betriebssystembefehle verhindert werden 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 nicht verhindert, sollte es dennoch zu einer Sicherheitsverletzung kommen, 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 Methode, um Betriebssystembefehle aus Ihrer Umgebung zu eliminieren, besteht darin, dass alle Anwendungen diese API-Aufrufe anstelle der Betriebssystembefehle direkt verwenden.
Wenn dies nicht möglich ist, überprüfen 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 zulässige Befehle, sodass das Whitelisting fast immer einfacher ist. Vergessen Sie nicht, gültige POST- und GET-Parameter sowie häufig übersehene Benutzereingabevektoren wie Cookies in Ihre Whitelist aufzunehmen.
Wenn keine Programmier-API verfügbar ist und eine Whitelist nicht verwendet werden kann, verwenden Sie schließlich eine Sanitisierungsbibliothek, um alle Sonderzeichen in Benutzereingaben zu maskieren, bevor Sie sie in Betriebssystembefehlen verwenden.
Weitere Informationen zu OS Command Injection-Angriffen
Für weitere Informationen können Sie sich die OWASP ansehen schreiben Sie auf Angriffe mit Betriebssystem-Befehlsinjektion. Sie können Ihr neu gewonnenes Defensivwissen auch mit dem auf die Probe stellen kostenlose Demo der Secure Code Warrior-Plattform, die Cybersicherheitsteams zu ultimativen Cyberkriegern ausbildet. Um mehr über die Beseitigung dieser Sicherheitslücke und eine Galerie mit anderen Bedrohungen zu erfahren, besuchen Sie die Sicherer Code Warrior-Blog.

Veuillez cliquer sur le lien ci-dessous et télécharger le PDF de cette ressource.
Secure Code Warrior là pour aider votre entreprise à sécuriser le code tout au long du cycle de développement logiciel et à créer une culture où la cybersécurité est une priorité. Que vous soyez responsable de la sécurité des applications, développeur, responsable de la sécurité des systèmes d'information ou toute autre personne impliquée dans la sécurité, nous pouvons aider votre entreprise à réduire les risques liés à un code non sécurisé.
Consulter le rapportRéserver une démonstrationJaap Karan Singh ist Secure Coding Evangelist, Chief Singh und Mitbegründer von Secure Code Warrior.
Ein Betriebssystem-Command-Injection-Angriff kann immer dann erfolgen, wenn eine Anwendung Benutzern erlaubt, Eingaben in eine Shell vorzunehmen, 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 übertragen, das die Anwendung hostet, und zwar mit den für die gefährdeten Anwendungen festgelegten Berechtigungsstufen.
OS-Command-Injection-Angriffe können von Anfängern und weniger erfahrenen Hackern ausgeführt werden, was sie zu einer der häufigsten Schwachstellen von Sicherheitsteams macht. Zum Glück gibt es einige sehr effektive Möglichkeiten, um zu verhindern, dass sie erfolgreich sind. In dieser Episode werden wir lernen:
So funktionieren sie
Warum sie so gefährlich sind
Wie Sie Abwehrmechanismen einrichten können, um sie zu stoppen.
Wie verwenden Angreifer OS Command Injection?
Das erste, was ein Angreifer tun muss, um einen Betriebssystem-Command-Injection-Angriff zu starten, ist, Benutzereingaben innerhalb einer Anwendung zu lokalisieren. Formulare, die Benutzer ausfüllen, sind potenziell gute Ausgangspunkte. Die cleversten Angreifer können auch Dinge wie Cookies oder sogar HTTP-Header als Ausgangspunkt verwenden, was von fast jeder Anwendung oder Website verwendet wird.
Das zweite, was sie tun müssen, ist herauszufinden, welches Betriebssystem die Anwendung hostet. Angesichts der Tatsache, dass es nur eine Handvoll Auswahlmöglichkeiten gibt, können Versuch und Irrtum in dieser Phase gut funktionieren. Die meisten Anwendungsserver werden entweder Windows-basiert sein (die Art von Windows spielt normalerweise keine Rolle), irgendeine Art von Linux-Box oder möglicherweise Unix.
An diesem Punkt ändert der Hacker die Eingabe, um einen Betriebssystembefehl in eine scheinbar harmlose Eingabe einzufügen. Dies kann das Hosting-Betriebssystem dazu verleiten, unbeabsichtigte Befehle auf jeder Berechtigungsstufe der Anwendung auszuführen.
Beispielsweise kann der folgende Befehl von gültigen Benutzern innerhalb einer Anwendung verwendet werden, um den Inhalt einer Datei anzuzeigen, 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 Exekutivausschusses anwesend. Das neue Haushaltsprojekt wurde erörtert, es wurden jedoch keine Maßnahmen ergriffen oder Abstimmungen getroffen.
Dies passiert, wenn ein Angreifer am Ende der Eingabe zusätzliche Befehle hinzufügt, z. B. den Befehl, der zum Auflisten des Inhalts eines Verzeichnisses unter Linux verwendet wird. In diesem Fall wird immer noch der ursprüngliche Befehl ausgeführt, der die Besprechungsnotizen anzeigt. Dem böswilligen Benutzer wird aber auch angezeigt, was sich sonst noch in dem Verzeichnis befindet und welche anderen Befehle er bei nachfolgenden Angriffen auf Betriebssystembefehle verwenden kann. Sie geben ein:
$. /cat MeetingNotes.txt && ls
Und hol dir stattdessen das:
Bei der Juli-Sitzung waren drei Mitglieder des Exekutivausschusses anwesend. Das neue Haushaltsprojekt wurde erörtert, es wurden jedoch keine Maßnahmen ergriffen oder Abstimmungen getroffen.
MeetingNotes.txt
JuneMeetingNotes.txt
MayMeetingNotes.txt
formatieren.c
falsch. C
kein Fehler. C
trunk.c
schreib was woher.c
Wie Sie sehen können, wurde dem Hacker in diesem Fall nicht nur der Inhalt des Verzeichnisses angezeigt, sondern auch ein Menü mit anderen Befehlen angezeigt, mit denen er "Befehle verwenden konnte, von denen sie jetzt wissen, dass sie sie auf dem Host-Betriebssystem ausführen können.
Warum sind OS Command Injection-Angriffe so gefährlich?
Es ist äußerst riskant, Benutzern zu erlauben, den Zweck der Zielanwendung zu umgehen und sie zum Ausführen von Betriebssystembefehlen zu verwenden. Ein Angreifer kann leicht verheerende Aktionen ausführen, wie zum Beispiel vertrauliche Daten stehlen oder ein ganzes Serverlaufwerk formatieren. Die Optionen, die einem Angreifer zur Verfügung stehen, werden nur durch die zulässigen Befehle innerhalb des Betriebssystems und durch seine Kreativität bei der Verwendung dieser Befehle eingeschränkt.
Betriebssystembefehle werden auf derselben Berechtigungsstufe wie die Anwendung ausgeführt. Apps, die mit Administratorrechten ausgeführt werden, bedeuten, dass Hacker, die sie kompromittieren, jeden Betriebssystembefehl ausführen können.
Die Angriffsmuster für OS Command Injection sind bekannt und dokumentiert. Eine anfällige Anwendung ist für Script-Kiddies genauso anfällig wie für professionelle Hacker. Angreifer mit sehr geringen Fähigkeiten können versuchen, Betriebssystembefehle auszuschneiden und in Anwendungen einzufügen, um zu sehen, was passiert.
Ein Sicherheits-OK gegen Betriebssystem-Befehlsinjektionen erhalten
Es gibt mehrere gute Techniken, mit denen Betriebssystembefehle verhindert werden 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 nicht verhindert, sollte es dennoch zu einer Sicherheitsverletzung kommen, 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 Methode, um Betriebssystembefehle aus Ihrer Umgebung zu eliminieren, besteht darin, dass alle Anwendungen diese API-Aufrufe anstelle der Betriebssystembefehle direkt verwenden.
Wenn dies nicht möglich ist, überprüfen 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 zulässige Befehle, sodass das Whitelisting fast immer einfacher ist. Vergessen Sie nicht, gültige POST- und GET-Parameter sowie häufig übersehene Benutzereingabevektoren wie Cookies in Ihre Whitelist aufzunehmen.
Wenn keine Programmier-API verfügbar ist und eine Whitelist nicht verwendet werden kann, verwenden Sie schließlich eine Sanitisierungsbibliothek, um alle Sonderzeichen in Benutzereingaben zu maskieren, bevor Sie sie in Betriebssystembefehlen verwenden.
Weitere Informationen zu OS Command Injection-Angriffen
Für weitere Informationen können Sie sich die OWASP ansehen schreiben Sie auf Angriffe mit Betriebssystem-Befehlsinjektion. Sie können Ihr neu gewonnenes Defensivwissen auch mit dem auf die Probe stellen kostenlose Demo der Secure Code Warrior-Plattform, die Cybersicherheitsteams zu ultimativen Cyberkriegern ausbildet. Um mehr über die Beseitigung dieser Sicherheitslücke und eine Galerie mit anderen Bedrohungen zu erfahren, besuchen Sie die Sicherer Code Warrior-Blog.
Table des matières
Jaap Karan Singh ist Secure Coding Evangelist, Chief Singh und Mitbegründer von Secure Code Warrior.

Secure Code Warrior là pour aider votre entreprise à sécuriser le code tout au long du cycle de développement logiciel et à créer une culture où la cybersécurité est une priorité. Que vous soyez responsable de la sécurité des applications, développeur, responsable de la sécurité des systèmes d'information ou toute autre personne impliquée dans la sécurité, nous pouvons aider votre entreprise à réduire les risques liés à un code non sécurisé.
Réserver une démonstrationTéléchargerRessources pour débuter
Thèmes et contenus de la formation Securecode
Nos contenus de pointe sont constamment développés afin de s'adapter à l'évolution constante du paysage du développement logiciel, en tenant compte de votre rôle. Les thèmes abordés couvrent tous les domaines, de l'IA à l'injection XQuery, et sont proposés pour une multitude de rôles, des architectes et ingénieurs aux chefs de produit et responsables assurance qualité. Nous vous invitons à découvrir un aperçu de notre catalogue de contenus classés par thème et par rôle.
La Chambre de commerce établit la norme en matière de sécurité à grande échelle axée sur les développeurs
La Chambre de commerce néerlandaise explique comment elle a intégré le codage sécurisé dans le développement quotidien grâce à des certifications basées sur les rôles, à l'évaluation comparative du Trust Score et à une culture de responsabilité partagée en matière de sécurité.
Modélisation des menaces avec l'IA : transformer chaque développeur en modélisateur de menaces
Vous repartirez mieux équipé pour aider les développeurs à combiner les idées et les techniques de modélisation des menaces avec les outils d'IA qu'ils utilisent déjà pour renforcer la sécurité, améliorer la collaboration et créer des logiciels plus résilients dès le départ.
Ressources pour débuter
Cybermon est de retour : les missions KI « Beat the Boss » sont désormais disponibles sur demande.
Cybermon 2025 Beat the Boss est désormais disponible toute l'année dans SCW. Il utilise des exigences de sécurité IA/LLM avancées pour renforcer le développement sécurisé de l'IA à grande échelle.
Explication de la loi sur la cyber-résilience : implications pour le développement de logiciels sécurisés dès la conception
Découvrez les exigences de la loi européenne sur la cyber-résilience (CRA), à qui elle s'applique et comment les équipes de développement peuvent s'y préparer en adoptant des méthodes sécurisées, en prévenant les failles de sécurité et en renforçant les compétences des développeurs.
Facteur 1 : Critères de réussite définis et mesurables
Le catalyseur n° 1 inaugure notre série en dix parties intitulée « Les catalyseurs de la réussite » et démontre comment un codage sécurisé peut être associé à des résultats commerciaux tels que la réduction des risques et la rapidité afin d'atteindre une maturité programmatique à long terme.




%20(1).avif)
.avif)
