Wie kann ich den Kopierbefehl von der Website zum Terminal sichern?


7

Heute habe ich ein faszinierendes Beispiel für Website-Terminal-Kopieren-Einfügen gefunden . Beispielsweise müssen Sie möglicherweise das Git-Repository klonen. Auf der Webseite sieht es so aus:

git clone git://git.kernel.org/pub/scm/utils/kup/kup.git 

aber wenn Sie es Terminal kopieren, wird es:

git clone /dev/null; clear; echo -n "Hello ";whoami|tr -d '\n';echo -e '!\nThat was a bad idea. Don'"'"'t copy code from websites you don'"'"'t trust!
Here'"'"'s the first line of your /etc/passwd: ';head -n1 /etc/passwd
git clone git://git.kernel.org/pub/scm/utils/kup/kup.git

weil der Rest verborgen ist:

<p class="codeblock">
      <!-- Oh noes, you found it! -->
      git clone
      <span style="position: absolute; left: -100px; top: -100px">/dev/null; clear; echo -n "Hello ";whoami|tr -d '\n';echo -e '!\nThat was a bad idea. Don'"'"'t copy code from websites you don'"'"'t trust!<br>Here'"'"'s the first line of your /etc/passwd: ';head -n1 /etc/passwd<br>git clone </span>
      git://git.kernel.org/pub/scm/utils/kup/kup.git
    </p>

Natürlich kann es ein beliebiger Befehl sein. Meine Frage ist also, wie wir sicherstellen können, dass wir keinen schädlichen Code erhalten.

Kopieren Sie von der Website, fügen Sie sie in den Texteditor ein (der nicht druckbare Zeichen enthält), überprüfen Sie die Befehle und kopieren Sie sie auf sichere Weise in das Terminal, um diese Art von Angriffen zu vermeiden?

BEARBEITEN:

Der wahrscheinlich beste Weg ist, niemals etwas von der Website direkt in das Terminal einzufügen. Überprüfen Sie diesen Fall:

<h1>Welcome on my tutorial site</h1>

<h3>Below code learn you how to use echo command. Copy both commands and paste it to your terminal</h6>

<hr/>
<p class="codeblock" >
      <!-- Oh noes, you found it! -->
      echo Line1;
      <pre style="position: absolute; left: -100px; top: -100px">echo "Owned";</pre>
      echo Line2;
    </p>
<hr/>

LiveDemo

Wenn Sie es kopieren und in das Terminal einfügen, wird Befehl 1 und ausgeblendet sofort ausgeführt. Sie werden keine Chance bekommen, es im Terminal einzuchecken.


1
Ich weiß nicht, ob es dafür einen sicheren Weg gibt, aber man sollte immer skeptisch gegenüber externen Quellen sein.
Keltari,

2
@Keltari Natürlich sollte der Benutzer bei externen Quellen skeptisch sein. Der Punkt ist what you see is not what you get. Sie können aus dem Tutorial kopieren ls -lund es kann alles sein. Ich weiß, dass der Benutzer den Befehl oder die Git-Position erneut
eingeben

1
Nun, Sie können einen Zwischenablage-Inspektor verwenden.
4ae1e1,

1
Sie können den Befehl in einen einfachen Texteditor kopieren (am besten in einen, der nicht druckbare Zeichen anzeigt) und von dort erneut kopieren / einfügen, nachdem Sie den Text gesehen haben. Dies setzt natürlich voraus, dass der von Ihnen verwendete Texteditor keinen Mechanismus zum Ausblenden von Text hat.
Moshe Katz,

1
Ich glaube nicht, dass Sie diesen Exploit-Vektor vermeiden können, da es sich um eine Browsersache handelt und Browser Text basierend auf HTML kopieren. Ich nehme an, es könnte für Browser möglich sein, eine Art Auswahlwerkzeug zu implementieren, das die visuelle Ausgabe bearbeitet, um festzustellen, welcher Text ausgewählt wurde. Oder verbieten Sie die Auswahl von Text, der weit vom Auswahlrechteck entfernt gerendert wird. Das aktuelle Auswahlmodell lässt dies jedoch nicht zu, und es ist viel schwieriger, eine Auswahl zu erstellen, die auf einem Rechteck funktioniert (insbesondere bei der Formatierung). Ich denke, Ihr Redaktionsansatz ist so gut wie es nur geht.
Kat

Antworten:


1

Es kommt darauf an, wie paranoid du sein willst. Aber um sicherzugehen, sollten Sie zuerst sicherstellen, dass Sie den Befehl verstehen, und ihn dann selbst eingeben.

Wenn Sie der Quelle nicht vertrauen, akzeptieren Sie keine Eingaben, ohne sie zu bereinigen.


Es geht nicht darum, paranoid zu sein oder Quellen zu vertrauen. Der entscheidende Punkt ist, dass ich Befehle vor Ort validieren kann (verstehe, was es tut), aber wenn ich es kopiere, kann es alles verbergen, zum Beispiel zusätzlichen Schalter zum Befehl. Es ist leicht zu übersehen. Wie ich geschrieben habewhat you see is not what you can get
lad2025

Es geht darum, einer Quelle (nicht) zu vertrauen. Der ganze Grund, warum Sie bestätigen möchten, dass das, was Sie erhalten, tatsächlich das ist, was Sie sehen, ist der Beweis, dass Sie der Quelle oder dem Medium nicht vertrauen. Es ist bei weitem der einfachste, universellste (da es nicht auf die Verfügbarkeit von Werkzeugen ankommt) und schnellste (wenn Sie mit der Maus tippen können) Weg, um das zu erreichen, was Sie gefragt haben.
Bram
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.