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/>
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.
what you see is not what you get
. Sie können aus dem Tutorial kopierenls -l
und es kann alles sein. Ich weiß, dass der Benutzer den Befehl oder die Git-Position erneutAntworten:
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.
quelle
what you see is not what you can get