Befehlsinjektion
Ein Semikolon in einem Formularfeld und der Server führt Ihren Befehl aus.
Was ist Befehlsinjektion?
Durch die Befehlsinjektion wird eine Webanfrage in eine Codeausführung unter der eigenen Identität des Servers umgewandelt. Die Anwendung fügt Benutzereingaben in eine Befehlszeichenfolge ein und übergibt sie an eine Shell, die jedes Sonderzeichen als Syntax liest. Sie fügen ein Semikolon zum Hostfeld eines Netzwerkdiagnosetools hinzu, führen einen zweiten Befehl aus und lesen die Umgebungsdatei mit dem Datenbankkennwort zurück. Dann ersetzen Sie die verkettete Zeichenfolge durch execFile , sodass der Host ein einzelnes Argument bleibt, und sehen, warum das Filtern gefährlicher Zeichen immer fehlschlägt.
Was Sie lernen in Befehlsinjektion
- Das Shell-Out-Muster erkennen: Jede Benutzereingabe, die in eine Befehlszeichenfolge eingefügt und an eine Shell (exec, system, sh -c) übergeben wird, ist ein Kandidat für Command Injection
- Erkennen Sie, wie ein Shell-Trennzeichen wie ein Semikolon einen Befehl in zwei umwandelt, wenn die Eingabe nicht von der Shell ferngehalten wird
- Die Behebung mit einer Argumentliste anwenden: execFile oder spawn mit einem Argumentarray verwenden, damit das Programm direkt ausgeführt wird und Shell-Zeichen in der Eingabe Literalzeichen bleiben
- Verstehen Sie, warum das Filtern von Zeichen wie ; und | fehlschlägt (andere Trennzeichen, Kodierungen und Ersetzungen umgehen es)
- Den Schadensradius durch minimale Berechtigungen reduzieren und Secrets nicht in Dateien ablegen, die ein Worker lesen kann
Befehlsinjektion — Trainingsschritte
-
Das Diagnosetool
Trelvane betreibt eine Hosting-Plattform und bietet ein öffentliches Looking Glass: Geben Sie einen Host ein, und die Edge-Server von Trelvane pingen ihn für Sie an und geben die Rohausgabe zurück. Praktisch für Kunden, die prüfen möchten, ob ein Server erreichbar ist. Bob öffnet es, um zu sehen, wie es funktioniert, bevor er es selbst ausprobiert.
-
Es führt einen echten Befehl aus
Eine Zeile auf dieser Seite ist der einzige Grund, warum Bob interessiert ist.
-
Die Funktion verwenden
Beobachten Sie, wie sich das Werkzeug normal verhält. Pingen Sie einen gewöhnlichen Host an, damit der Browser die von der Seite gesendete Anfrage erfasst.
-
Die Anfrage finden
Die Anfrage wurde gesendet und der Browser hat sie aufgezeichnet. Öffnen Sie den Netzwerkbereich und prüfen Sie, wohin die Seite sie gesendet hat und wie der Host übermittelt wird.
-
Einen zweiten Befehl einschleusen
Bob verwendet das Formular nicht wieder. Er bearbeitet die aufgezeichnete Anfrage im Netzwerkbereich und ersetzt den host -Wert durch eine Loopback-Adresse, ein Semikolon und zwei eigene Befehle. Erstellt der Server seinen Ping-Befehl durch Einfügen dieses Werts, beendet das Semikolon den Ping und führt direkt danach Bobs Befehle aus. Er hängt id an, um zu sehen, unter welchem Benutzerkonto der Server läuft, sowie ein cat der Umgebungsdatei des Workers, in der Hosting-Agenten ihr Datenbankpasswort und ihre Cloud-Schlüssel speichern.
-
Die Schlüssel sind weg
Der Ping wurde ausgeführt und dann erscheinen Zeilen, die der Ping nie erzeugt.
-
Wissenscheck
Sie haben gerade beobachtet, wie ein Ping-Tool die Befehle des Angreifers ausführte und die Secrets des Servers offenlegte. Prägen Sie sich ein, warum das möglich war.
-
Die Warnung
Sie verantworten Trelvanes Looking-Glass-Service. Über Nacht hat das Monitoring festgestellt, dass der Diagnose-Worker etwas tat, was ein Ping-Tool niemals tun sollte: Shell-Befehle ausführen und seine eigene Secrets-Datei lesen. Security Operations hat Ihnen die Details per E-Mail geschickt.
-
Den Handler öffnen
Der Ping-Endpunkt wird von ping.js bedient. Öffnen Sie die Datei und prüfen Sie, wie der Befehl ausgeführt wird.
-
Die Schwachstelle erkennen
Der Handler fügt den Hostwert in eine Befehlszeichenfolge ein und übergibt die gesamte Zeichenfolge zur Ausführung an eine Shell.
Abdeckung der Sicherheits-Frameworks
OWASP Top 10
- A05:2025 Injection
- A03:2021 Injection
CWE
- CWE-78 Improper Neutralization of Special Elements used in an OS Command
CIS Controls
- CIS 16 Application Software Security
NIST CSF
- PR.AT-02 Individuals in specialized roles are provided with awareness and training so that they possess the knowledge and skills to perform relevant tasks with cybersecurity risks in mind
- PR.PS Platform Security