Manchmal, wenn ich versehentlich cat
eine Binärdatei habe, ist mein Terminal verstümmelt. Nichts, was ein Schneller reset
nicht reparieren kann, aber könnte ein Angreifer theoretisch keine Datei erstellen, die bei Anzeige auf einem Terminal einen beliebigen Code ausführt? Durch einen Exploit im Terminalemulator oder auf andere Weise.
terminal
cat
special-characters
Gunchars
quelle
quelle
more
) oder terminal-fähig ist (less
), um den Inhalt von Dateien zu untersuchen. Dies versetzt Ihr Terminal nicht nur nicht in einen seltsamen Zustand, sondern die gesamte Datei wird auch nicht auf einmal vorbeifliegen.stty sane
Befehl setzt ein xterm (oder ähnliches) zurück, das zB in einen anderen Zeichensatz umgeschaltet wurde.mosh
Die Dokumentation hat einige Gedanken dazu: mosh.mit.edu/#techinfoAntworten:
Ob eine solche Ausgabe ausgenutzt werden kann, hängt vom Terminalprogramm ab und was dieses Terminal tut, hängt von den gesendeten Escape-Codes ab. Ich kenne keine Terminalprogramme mit solchen ausnutzbaren Funktionen, und das einzige Problem wäre jetzt, dass ein unbekannter Pufferüberlauf oder ähnliches ausgenutzt werden könnte.
Bei einigen älteren
hardware
Terminals kann dies ein Problem sein, da Sie z. B. Funktionstasten mit solchen Escape-Sequenzen programmiert haben, indem Sie eine Befehlssequenz für diese Taste in der Hardware gespeichert haben. Sie benötigen immer noch einen physischen Tastendruck, um dies zu aktivieren.Aber es gibt immer (wie Hauke zu Recht als „geisteskrank“ bezeichnet hat) Leute, die bereit sind, eine solche Funktion hinzuzufügen, wenn dies ein Problem für sie löst, ohne die Lücke zu verstehen, die sie schaffen. Nach meiner Erfahrung mit Open-Source-Software ist dies aufgrund der vielen Augen, die auf den Code schauen, weniger wahrscheinlich als bei Closed Source. (Ich erinnere mich, dass Sie Mitte der Neunziger im Mail-Programm von Silicon Grahpics 'Irix Befehle einschließen konnten, die auf dem Empfänger-Rechner ausgeführt werden sollten, echte Pfade zu ausführbaren Dateien, ...)
quelle
write
Befehl kommenden Text zu "wiederholen" - und so Befehle / Skripte auszuführen, die dem Benutzer des Terminals gehören. Es ist angeblich der Grund, warum viele empfehlen, Nachrichtenmesg -n
für Benutzer die meiste Zeit und fürroot
immer auszuschalten . AFAIK, das wurde tatsächlich gemacht - obwohl ich nicht weiß, ob es jemals ausgenutzt wurde. So könnte vielleicht zufälliger Text aus einercat
ausführbaren Datei ausgeführt werden.Die meisten Terminalemulatoren senden eine Antwort zurück, wenn sie bestimmte Escape-Sequenzen empfangen (siehe Dokumentation der xterm-Steuersequenzen ). Sie können z. B.
\e[0c
eine Nachricht an einen VT100-ähnlichen Emulator senden, der die Geräteattribute zurücksendet\e[?1;2c
(Keith hat dies wahrscheinlich beobachtet). Diese Antworten sind jedoch keine willkürlichen Zeichenfolgen. Trotzdem2c
ist es eine schlechte Idee , eine ausführbare Datei auf Ihrem System zu haben, die fatal ist.Update: Die Risiken sind tatsächlich größer als gedacht, da der Titel eines XTM-Fensters gesetzt und der Titel über entsprechende Escape-Sequenzen zurückgesendet werden kann ( http://www.securityfocus.com/bid/6940/ ). . Im Gegensatz zum obigen Beispiel kann der Titel eine fast beliebige Zeichenfolge sein.
quelle
Dies ändert den Terminaltitel in GNOME Terminal 3.6.1, sofern er nicht durch etwas wie PS1 überschrieben wird :
Öffnen Sie jetzt ein neues GNOME-Terminal-Fenster, um die
cat
Version zu testen :Ja, hiermit wird auch der Titel des Terminals festgelegt.
Früher gab es ein Sicherheitsproblem mit einem Escape-Code, das dazu führte, dass der Titel in die Befehlszeile gedruckt wurde , sodass Sie effektiv eine Datei erstellen konnten, die bei der
cat
Ausgabe gedruckt wurde (ich bin mir nicht sicher, ob Sie dort eine neue Zeile einfügen könnten). beliebige Befehle. Autsch!quelle
Während die Verwendung
cat
möglicherweise nicht zur Ausführung von Code führt, werden Escape-Codes verarbeitet, sodass Sie leicht in die Irre geführt werden können, wenn Sie glauben, dass das Skript harmlos ist, obwohl es tatsächlich böswillig ist.Hier ist ein Beispielbefehl, den Sie ausführen können, um ein "bösartiges" Shell-Skript zu erstellen:
Wenn Sie die Datei untersuchen, scheint dies harmlos genug zu sein:
Aber sollten Sie es tatsächlich ausführen ...
Das Skript schließt rohe Escape-Codes ein, um den Cursor ein paar Zeilen nach oben zu bewegen, sodass der Rest des Skripts über dem schädlichen Code geschrieben wird und ihn verbirgt.
Nahezu jedes andere Programm enthüllt das Skript für das, was es ist. Nur Programme , die (wie nicht den Dateiinhalt verarbeiten
cat
,more
undless -r
) die irreführende Ausgabe.Beachten Sie dies
tail
und führen Siehead
auch zu derselben irreführenden Ausgabe. Die Verwendung von "less + F" ist daher sicherer als "tail -f".quelle
echo $(cat demo.sh)
,cat demo.sh | grep . --color=yes
(Anmerkung: das--color=yes
ist , was die „bösartigen“ Code hier zeigt) oder die Build-incat -v demo.sh
.cat
die Datei bei der Anzeige von Inhalten .cat
eine beliebige Datei manchmal nicht sicher ist , wie die gestellte Frage zeigt!Ich habe es definitiv erlebt,
xterm
beliebige Zeichen in sich einzufügen, als hätte ich sie getippt. Und gelegentlich hat dies anscheinend Newline-Charakter enthalten, so dass ichngwerm:0riu: command not found
als Antwort bekam. Ich sehe keinen Grund, warum jemand keine Datei erstellen konnte, die bestimmte, schädliche Befehle senden würde. Also ja, zumindest einige Terminals sind anfällig für Angriffe mit willkürlichen Auswirkungen.quelle
Nun, ein Terminal-Emulator druckt im Grunde genommen einfach die an ihn gesendeten Zeichen aus.
Alles andere als das einfache Drucken eines Zeichens auf die aktuelle Position, wie das Festlegen einer neuen Position, das Ändern der Farbe, das Ändern des Titels usw., erfolgt durch Escape-Sequenzen.
Die unterstützten Escape-Sequenzen bestehen normalerweise aus gut definierten Standards wie ANSI , die keine Möglichkeit zum Starten anderer Prozesse definieren. Obwohl es möglich wäre, eine solche Sequenz zu implementieren, ist mir kein Terminalemulator bekannt, der solche Dinge absichtlich zulässt.
Theoretisch könnte ein Fehler wie ein Pufferüberlauf verwendet werden, um eine beliebige Funktionalität auszulösen. Dies wäre aber auch in so ziemlich jeder anderen Binärdatei möglich.
quelle
Im Allgemeinen besteht kein Risiko, eine beliebige Datei zu catten. Meine übliche Methode zum Analysieren einer Datei besteht darin, Folgendes zu tun:
Mit dem obigen Befehl kann ich den Dateityp bestimmen. Mit
file
demstrings
Befehl kann ich identifizierbare Zeichenfolgen aus potenziellen Binärdateien ausgeben, deren Herkunft ich nicht sicher bin.Beispiel
Dateiausgabe String-Ausgabequelle