
Technische Erläuterung und Proof-of-Concept für CVE-2020-15778, eine authentifizierte Command-Injection-Schwachstelle in OpenSSH scp (<=8.3p1), die Remote-Code-Ausführung über Backtick-Payloads in Dateipfaden ermöglicht.
E-Mail-Adresse : [email protected]
LinkedIn : www.linkedin.com/in/chinmay-pandya
Produkt: Openssh
Betroffene Komponente: SCP
scp ist ein Programm zum Kopieren von Dateien zwischen Computern. Es verwendet das SSH-Protokoll. Es ist standardmäßig in den meisten Linux- und Unix-Distributionen enthalten.
Beim Kopieren von Dateien auf einen entfernten Server wird der Dateipfad am Ende des lokalen scp-Befehls angehängt. Zum Beispiel, wenn Sie den folgenden Befehl ausführen
scp SourceFile user@host:directory/TargetFile
wird ein lokaler Befehl ausgeführt
scp -t directory/TargetFile
Bei der Erstellung des lokalen scp-Befehls wird der Dateiname nicht bereinigt. Ein Angreifer kann ein Backtick-fähiges Payload als Dateinamen übergeben, und wenn der lokale scp-Befehl ausgeführt wird, führt die lokale Shell ebenfalls das Backtick-fähige Payload aus.
Führen Sie den folgenden Befehl mit scp aus
scp /sourcefile remoteserver:'`touch /tmp/exploit.sh`/targetfile'
Nach Ausführung dieses Befehls gehen Sie zum entfernten Server und Sie werden im Verzeichnis /tmp/ sehen, dass die Datei exploit.sh vorhanden ist. Das Setzen von einfachen Anführungszeichen im Dateinamen ist wichtig, um die Ausführung des Payloads auf der lokalen Shell zu verhindern, oder die Verwendung eines Escape-Zeichens wie einfache Anführungszeichen im Dateinamen kann die Ausführung des Payloads auf der lokalen Shell verhindern.
DIES IST EIN AUTHENTIFIZIERTER EXPLOIT UND ERFORDERT GÜLTIGE SSH-/SCP-ANMELDEDATEN, UM BEFEHLE AUF DEM ENTFERNTEN SERVER AUSZUFÜHREN
Der scp-Befehl ist ein historisches Protokoll (genannt rcp), das auf dieser Art der Argumentübergabe basiert und dabei auf Expansionsprobleme stößt. Es hat sich als sehr schwierig erwiesen, "Sicherheit" zum scp-Modell hinzuzufügen. Alle Versuche, anomale Argumentübertragungen zu "erkennen" und zu "verhindern", haben große Chancen, bestehende Arbeitsabläufe zu beeinträchtigen. Ja, wir erkennen an, dass die Situation beschissen ist. Aber wir wollen die einfachen Muster, für die Leute scp verwenden, nicht zerstören, bis es einen alltäglichen Ersatz gibt. Die Leute sollten stattdessen rsync oder etwas anderes verwenden, wenn sie besorgt sind.