Befehlsinjektion

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

Befehlsinjektion — Trainingsschritte

  1. 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.

  2. Es führt einen echten Befehl aus

    Eine Zeile auf dieser Seite ist der einzige Grund, warum Bob interessiert ist.

  3. 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.

  4. 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.

  5. 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.

  6. Die Schlüssel sind weg

    Der Ping wurde ausgeführt und dann erscheinen Zeilen, die der Ping nie erzeugt.

  7. 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.

  8. 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.

  9. 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.

  10. 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