SCW-Symbole
Held-Hintergrund ohne Trennlinie
Blog

コーダーズ・コンカー・コンカー・セキュリティ:シェア&ラーニング・シリーズ-OS コマンド・インジェクション

ヤープ・キャラン・シン
Veröffentlicht am 07. Feb. 2019
Zuletzt aktualisiert am 10. März 2026

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

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

       Wie sie funktionieren

       Warum sie so gefährlich sind

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

Wie verwenden Angreifer OS Command Injection?

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

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

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

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

exec("cat " + Dateiname)

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

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

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

$ ./cat MeetingNotes.txt && ls

Und holen Sie sich stattdessen das hier:

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

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

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

Warum sind OS Command Injection Attacken so gefährlich?

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

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

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

Ein Sicherheits-OK gegen OS-Befehlsinjektionen erhalten

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

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

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

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

Weitere Informationen über OS Command Injection Attacken

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

リソースを表示
リソースを表示

OS コマンドインジェクション攻撃は、初級レベルの熟練度の低いハッカーが実行する可能性があり、セキュリティチームが経験する最も一般的な弱点の 1 つとなっています。ありがたいことに、攻撃を阻止するための非常に効果的な方法は数多くあります。

もっと興味がありますか?

Jaap Karan Singhは、セキュア・コーディング・エバンジェリストであり、チーフ・シンであり、セキュア・コード・ウォリアーの共同創設者です。

mehr erfahren

Secure Code Warrior schützt Ihren Code während des gesamten Softwareentwicklungszyklus und hilft Ihnen dabei, eine Kultur zu schaffen, in der Cybersicherheit oberste Priorität hat. Ganz gleich, ob Sie Anwendungs-Sicherheitsmanager, Entwickler, CISO oder Sicherheitsbeauftragter sind – wir helfen Ihnen dabei, die mit unsicherem Code verbundenen Risiken zu minimieren.

デモを予約
シェア:
LinkedIn-MarkenSozialx Logo
Autor
ヤープ・キャラン・シン
Veröffentlicht am 07. Feb. 2019

Jaap Karan Singhは、セキュア・コーディング・エバンジェリストであり、チーフ・シンであり、セキュア・コード・ウォリアーの共同創設者です。

シェア:
LinkedIn-MarkenSozialx Logo

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

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

       Wie sie funktionieren

       Warum sie so gefährlich sind

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

Wie verwenden Angreifer OS Command Injection?

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

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

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

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

exec("cat " + Dateiname)

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

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

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

$ ./cat MeetingNotes.txt && ls

Und holen Sie sich stattdessen das hier:

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

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

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

Warum sind OS Command Injection Attacken so gefährlich?

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

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

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

Ein Sicherheits-OK gegen OS-Befehlsinjektionen erhalten

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

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

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

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

Weitere Informationen über OS Command Injection Attacken

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

リソースを表示
リソースを表示

Um den Bericht herunterzuladen, füllen Sie bitte das folgende Formular aus.

Wir bitten um Ihre Erlaubnis, Ihnen Informationen zu unseren Produkten und/oder zu Themen rund um sicheres Programmieren zuzusenden. Wir behandeln Ihre personenbezogenen Daten stets mit größter Sorgfalt und verkaufen sie niemals zu Marketingzwecken an andere Unternehmen weiter.

送信
scw Erfolgssymbol
scw-Fehlersymbol
Um das Formular zu senden, aktivieren Sie bitte das „Analytics“-Cookie. Nach Abschluss der Einstellungen können Sie es wieder deaktivieren.

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

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

       Wie sie funktionieren

       Warum sie so gefährlich sind

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

Wie verwenden Angreifer OS Command Injection?

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

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

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

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

exec("cat " + Dateiname)

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

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

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

$ ./cat MeetingNotes.txt && ls

Und holen Sie sich stattdessen das hier:

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

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

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

Warum sind OS Command Injection Attacken so gefährlich?

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

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

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

Ein Sicherheits-OK gegen OS-Befehlsinjektionen erhalten

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

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

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

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

Weitere Informationen über OS Command Injection Attacken

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

Online-Seminar ansehen
Beginnen wir
mehr erfahren

Klicken Sie auf den folgenden Link, um die PDF-Datei dieser Ressource herunterzuladen.

Secure Code Warrior schützt Ihren Code während des gesamten Softwareentwicklungszyklus und hilft Ihnen dabei, eine Kultur zu schaffen, in der Cybersicherheit oberste Priorität hat. Ganz gleich, ob Sie Anwendungs-Sicherheitsmanager, Entwickler, CISO oder Sicherheitsbeauftragter sind – wir helfen Ihnen dabei, die mit unsicherem Code verbundenen Risiken zu minimieren.

Bericht anzeigenデモを予約
PDF herunterladen
リソースを表示
シェア:
LinkedIn-MarkenSozialx Logo
もっと興味がありますか?

シェア:
LinkedIn-MarkenSozialx Logo
Autor
ヤープ・キャラン・シン
Veröffentlicht am 07. Feb. 2019

Jaap Karan Singhは、セキュア・コーディング・エバンジェリストであり、チーフ・シンであり、セキュア・コード・ウォリアーの共同創設者です。

シェア:
LinkedIn-MarkenSozialx Logo

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

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

       Wie sie funktionieren

       Warum sie so gefährlich sind

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

Wie verwenden Angreifer OS Command Injection?

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

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

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

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

exec("cat " + Dateiname)

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

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

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

$ ./cat MeetingNotes.txt && ls

Und holen Sie sich stattdessen das hier:

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

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

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

Warum sind OS Command Injection Attacken so gefährlich?

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

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

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

Ein Sicherheits-OK gegen OS-Befehlsinjektionen erhalten

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

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

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

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

Weitere Informationen über OS Command Injection Attacken

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

目次

PDF herunterladen
リソースを表示
もっと興味がありますか?

Jaap Karan Singhは、セキュア・コーディング・エバンジェリストであり、チーフ・シンであり、セキュア・コード・ウォリアーの共同創設者です。

mehr erfahren

Secure Code Warrior schützt Ihren Code während des gesamten Softwareentwicklungszyklus und hilft Ihnen dabei, eine Kultur zu schaffen, in der Cybersicherheit oberste Priorität hat. Ganz gleich, ob Sie Anwendungs-Sicherheitsmanager, Entwickler, CISO oder Sicherheitsbeauftragter sind – wir helfen Ihnen dabei, die mit unsicherem Code verbundenen Risiken zu minimieren.

デモを予約[ダウンロード]
シェア:
LinkedIn-MarkenSozialx Logo
リソースハブ

Ressourcen für den Einstieg

Weitere Beiträge
リソースハブ

Ressourcen für den Einstieg

Weitere Beiträge