web-dev-qa-db-fra.com

Quel est le risque de copier et coller des commandes Linux à partir d'un site Web? Comment certaines commandes peuvent-elles être invisibles?

Comme tous les débutants au pays de Linux, je recherche généralement des sites Web contenant des commandes Shell utiles, le marque avec ma souris, le copie (CTRL + C) et collez-le dans un terminal.

Par exemple, si j'ai besoin d'installer package_name.deb

Sudo apt-get install package_name.deb

Je vais donner mon mot de passe root et installer le package_name.deb

Lorsque je colle cette commande dans mon éditeur de texte, ce sera quelque chose comme:

Sudo apt-get install package_name.deb && apt-get install suspicious_file.deb 

Deuxième exemple, si je veux ajouter un nouveau ppa (terminal)

Sudo add-apt-repository ppa:some/ppa
Sudo apt-get update

Lorsque je modifie ma liste sources.list, je trouve quelque chose comme:

deb http://ppa.launchpad.net/some-ppa/

et

deb http://ppa.launchpad.net/a_suspicious_some-ppa/

Le problème est le deuxième ppa deb http://ppa.launchpad.net/a_suspicious_some-ppa/ est ajouté automatiquement et sans ma permission.

Comme vous pouvez le voir, il y a une partie invisible. Il n'apparaît pas sur mon terminal.

Quel est le risque de copier-coller à partir d'un site Web non fiable dans le terminal et comment réparer mon système d'exploitation?

85
GAD3R

Les sites Web peuvent être ajoutés à votre presse-papiers

Le risque est exactement ce que vous avez dit qu'il était. Il est certainement possible d'ajouter des commandes malveillantes au presse-papiers.

Vous pouvez même ajouter && rm -rf /* (s'exécute uniquement si la première commande a réussi), ou ; rm -rf /* (s'exécute même si la première commande a échoué) et brique certains périphériques UEFI .

Vous devriez également consulter le message de Michael dans ce fil pour un autre exemple .

En fin de compte, cela dépend vraiment de la créativité et de la malveillance d'un "pirate" maléfique particulier.


Mais comment pouvez-vous rendre les commandes "invisibles" dans le terminal? "

  1. Première méthode

    echo test;echo insert evil here;clear;echo installing package
    

    Ordre d'exécution :

    1. Un "test" d'écho se produit
    2. L'écho "insérer le mal ici" arrive
    3. Les actions sont "effacées"
    4. L'action prévue se produit ici, mais vous ne voyez pas le reste.

    ...

    Vous pouvez essayer de faire défiler vers le haut dans la fenêtre du terminal pour trouver le reste.

  2. Deuxième méthode

    stty -echo 
    tput smcup
    

    Cela désactivera le terminal de montrer ce que vous tapez, donc il n'apparaît pas du tout dans la fenêtre du terminal.

    Vous pouvez l'essayer comme ceci:

    stty -echo;tput smcup;echo evil commands
    expected command
    

Ce ne sont que deux exemples très approximatifs, mais montrent le potentiel de ce qui peut être fait pour masquer les commandes. Notez qu'il ne se cache probablement pas de ~/.bash_history sauf si les commandes cachées suppriment/modifient spécifiquement son contenu.

Vous devez supposer qu'il existe d'autres façons de procéder.


Atténuation

Je recommande d'utiliser un addon pour désactiver la manipulation du presse-papiers. Il existe malheureusement des moyens de contourner cela, donc je vous recommande de tout coller dans un [~ # ~] gui [~ # ~] text editor avant qu'il n'entre dans votre terminal , ou n'importe où.

Vous devez vérifier ce que vous faites. Si vous ne comprenez pas chaque commande individuelle, vous devez la rechercher sur Google. C'est une véritable haine de papier d'aluminium car le copier-coller peut forcer les commandes à s'exécuter automatiquement sur de nombreuses versions de Linux.


Réparer votre installation Linux

Vous n'avez peut-être aucune idée de la profondeur du trou du lapin. À moins que vous n'ayez le temps et l'effort de vous y consacrer, je vous suggérerais simplement de vous déplacer depuis l'orbite, sauf si vous avez des fichiers importants. Si vous avez des fichiers importants, sauvegardez simplement les fichiers non exécutables (pas de fichiers PDF, documents, etc.), puis supprimez l'orbite.

Si vous avez des PDF, vous pouvez convertir le PDF en post-script, ou copier et coller le contenu dans un fichier texte. Avec les documents, copiez et collez le texte et formatez-le plus tard.

82
Mark Buffalo

Il y a un risque. Les sites Web peuvent utiliser CSS et JavaScript pour masquer des éléments, puis lorsque vous copiez à partir de ce site Web, vous copiez réellement ce qu'ils veulent. @Gumbo a fourni l'exemple: https://thejh.net/misc/website-terminal-copy-paste .

La solution: ne copiez et ne collez pas à partir de sites Web auxquels vous ne faites pas confiance. Ou visitez-les.

39
h4ckNinja

Oui, couper et coller des commandes à partir de sites Web non fiables peut être dangereux. Le texte que vous collez contiendra toujours le texte que vous copiez, mais peut avoir plus de texte avant, entre ou après cela.

Sur la page Web, cela se fait par CSS. Rendez simplement le texte supplémentaire invisible. Il sera toujours copié.

Lorsque vous le collez dans un terminal, le texte supplémentaire sera affiché. Cependant, s'il contient une nouvelle ligne, il sera immédiatement exécuté et le dommage sera fait. En outre, il peut contenir des commandes pour effacer le texte supplémentaire.

Pour éviter le danger collez le texte dans un éditeur de texte. Regarder par-dessus. Et puis copiez-le de l'éditeur vers le terminal.

Assurez-vous simplement de bien comprendre la commande pour savoir qu'elle est sûre. L'autre autre danger de coller des commandes inconnues est que vous ne pouvez tout simplement pas comprendre ce que vous faites.

20
Stig Hemmer

Outre les excellentes réponses ci-dessus, j'ajouterais qu'en plus des fins malveillantes, il existe également des problèmes de copie et de collage à partir de sites Web ou de PDF en raison de l'encodage des caractères.

Vous pensez peut-être que vous collez un groupe de personnages, et en raison de l'encodage des caractères, collez des choses différentes et rencontrez des problèmes difficiles à localiser.

syslog ne démarre pas

Du fil, le PO pensait qu'il avait collé:

file("/var/log/Cisco/cisco.log");

Mais en réalité, il a collé quelque chose comme ça:

file(▒~@~\/var/log/Cisco/cisco.log▒~@~]); 
17
Rui F Ribeiro