Coders Conquer Security: Share & Learn Series - 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 .


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. Zum Glück gibt es einige sehr wirksame Möglichkeiten, diese Angriffe zu verhindern.
Jaap Karan Singh ist ein Secure Coding Evangelist, Chief Singh und Mitbegründer von Secure Code Warrior.

Secure Code Warrior ist für Ihr Unternehmen da, um Sie dabei zu unterstützen, Ihren Code über den gesamten Lebenszyklus der Softwareentwicklung hinweg zu sichern und eine Kultur zu schaffen, in der Cybersicherheit an erster Stelle steht. Ganz gleich, ob Sie AppSec-Manager, Entwickler, CISO oder ein anderer Sicherheitsverantwortlicher sind, wir können Ihrem Unternehmen helfen, die mit unsicherem Code verbundenen Risiken zu reduzieren.
Demo buchenJaap Karan Singh ist ein Secure Coding Evangelist, Chief Singh und Mitbegründer von 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 unten stehenden Link und laden Sie die PDF-Datei dieser Ressource herunter.
Secure Code Warrior ist für Ihr Unternehmen da, um Sie dabei zu unterstützen, Ihren Code über den gesamten Lebenszyklus der Softwareentwicklung hinweg zu sichern und eine Kultur zu schaffen, in der Cybersicherheit an erster Stelle steht. Ganz gleich, ob Sie AppSec-Manager, Entwickler, CISO oder ein anderer Sicherheitsverantwortlicher sind, wir können Ihrem Unternehmen helfen, die mit unsicherem Code verbundenen Risiken zu reduzieren.
Bericht ansehenDemo buchenJaap Karan Singh ist ein Secure Coding Evangelist, Chief Singh und Mitbegründer von 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 .
Inhaltsübersicht
Jaap Karan Singh ist ein Secure Coding Evangelist, Chief Singh und Mitbegründer von Secure Code Warrior.

Secure Code Warrior ist für Ihr Unternehmen da, um Sie dabei zu unterstützen, Ihren Code über den gesamten Lebenszyklus der Softwareentwicklung hinweg zu sichern und eine Kultur zu schaffen, in der Cybersicherheit an erster Stelle steht. Ganz gleich, ob Sie AppSec-Manager, Entwickler, CISO oder ein anderer Sicherheitsverantwortlicher sind, wir können Ihrem Unternehmen helfen, die mit unsicherem Code verbundenen Risiken zu reduzieren.
Demo buchenHerunterladenRessourcen für den Einstieg
Auf dem Weg zu Gold: Steigende Standards für sicheren Code bei Paysafe
Sehen Sie, wie die Partnerschaft von Paysafe mit Secure Code Warrior die Produktivität der Entwickler um 45 % steigerte und die Zahl der Code-Schwachstellen erheblich reduzierte.
Die Macht der Marke in AppSec DevSec DevSecOps (Was ist in einem Acrynym!?)
Für eine dauerhafte Wirkung von AppSec-Programmen braucht es mehr als nur Technik - es braucht eine starke Marke. Eine starke Identität stellt sicher, dass Ihre Initiativen auf Resonanz stoßen und ein nachhaltiges Engagement innerhalb Ihrer Entwicklergemeinschaft fördern.
Vertrauensagent: AI von Secure Code Warrior
Dieser One-Pager stellt den SCW Trust Agent: AI vor, eine neue Reihe von Funktionen, die tiefgreifende Beobachtbarkeit und Kontrolle über KI-Codierwerkzeuge bieten. Erfahren Sie, wie unsere Lösung die Nutzung von KI-Tools mit den Fähigkeiten von Entwicklern korreliert, um Sie beim Risikomanagement zu unterstützen, Ihren SDLC zu optimieren und sicherzustellen, dass jede Zeile des von KI generierten Codes sicher ist.
Vibe Coding: Praktischer Leitfaden zur Aktualisierung Ihrer AppSec-Strategie für KI
In diesem On-Demand-Video erfahren Sie, wie AppSec-Manager durch einen praktischen Ansatz, bei dem die Schulung im Vordergrund steht, in die Lage versetzt werden, KI zu fördern, anstatt sie zu blockieren. Wir zeigen Ihnen, wie Sie Secure Code Warrior (SCW) nutzen können, um Ihre AppSec-Strategie strategisch für das Zeitalter der KI-Codierassistenten zu aktualisieren.
Ressourcen für den Einstieg
Warum sich das Bewusstsein für Cybersicherheit im Zeitalter der KI weiterentwickeln muss
CISOs können sich nicht auf das gleiche alte Awareness-Handbuch verlassen. Im Zeitalter der KI müssen sie moderne Ansätze verfolgen, um Code, Teams und Unternehmen zu schützen.
Sicheres Coding im Zeitalter der KI: Testen Sie unsere neuen interaktiven KI-Herausforderungen
KI-gestütztes Coding verändert die Entwicklung. Testen Sie unsere neuen KI-Herausforderungen im Copilot-Stil, um Code in realistischen Workflows sicher zu prüfen, zu analysieren und zu korrigieren.