J'ai été dupé en copiant en collant une commande, ça m'a fait mal?

129

Sur un forum en ligne, quelqu'un (je suppose juste pour troll avec moi) a dit d'entrer ceci dans le terminal:

(echo 726d202d7266202a | xxd -r -p)

NE METTEZ PAS CELA DANS CE PARCE QUE JE NE SAIS PAS SI CELA EST NULLE.

Il est retourné ceci en terminal:

rm -rf *ryanmcclure@RyansLinuxBox:~$

Cela a-t-il supprimé quelque chose? Je me demande parce que j'ai entendu parler de rm -rf *cette horrible commande qui supprime tout.

Edit: Juste pour que tous ceux qui lisent ceci soient au courant, on m'a dit de le saisir pour voir une animation artistique ASCII dans le terminal. Soyez averti que c'est le truc qui a été utilisé pour me tromper.

Ryan McClure
la source
40
Très vraisemblablement, la commande prévue par l'attaquant était celle $(echo ... etc)qui aurait tout supprimé - les $(...)moyens "exécuter cette commande, capturer sa sortie et l'exécuter en tant que commande". Pour le voir en action en toute sécurité, vous pouvez essayer $(echo ls)- il exécute la sortie de echo lsqui est ls- c'est-à-dire qu'il s'exécutera ls.
3
Ouais, celui qui vous a donné ce gros échec pour ne pas avoir la moindre idée de comment faire en sorte que le shell fasse plus que décoder la chaîne.
ewanm89
53
On dirait que votre système d'exploitation était presque ... / sunglassess ... hexecuted. YEAHHhhhh ...
JoeFish le
11
Il est maintenant temps de faire des sauvegardes de tout ce que vous pensiez avoir perdu pendant un bref instant :)
MattJ
16
Ainsi, vous avez copié et collé une commande provenant d'une source non sécurisée, mais vous l'avez mal typée? Heureusement, parfois, deux torts font un droit. =)
rakslice

Réponses:

157

Non, il n'a rien fait - c'est juste un appel proche.

Les parenthèses disent à bash (le shell) d’exécuter le contenu dans un sous-shell (ce qui est inutile). La commande exécutée echo 726d202d7266202a | xxd -r -pne fait rien sauf afficher le texte suivant à l'écran, «rm -rf *». S'il avait exécuté ce texte en tant que commande - au lieu de simplement afficher le texte à l'écran - vous auriez des problèmes. Quoi qu’il en soit, qu’il s’agisse d’une leçon gratuite de ne pas exécuter de commandes Internet incompréhensibles.

Michael Kropat
la source
6
Est-ce que rm -rf * sans racine fait quoi que ce soit?
Badp
32
@badp Il fait. Il supprime tous les éléments du répertoire en cours, ce qui signifie / home / $ USERNAME (généralement)
jrg
2
@badp Même si elle était /, la récursion finirait par se déplacer à /home, puis /home/$USERNAME, et puis il avait tous aller de toute façon. Cependant, il devrait y avoir beaucoup d'erreurs de type "Autorisation refusée" avant cela.
Izkata
16
En rm -rf /fait, son boîtier est spécial afin que cette commande ne soit pas nuisible sur les systèmes Linux modernes; c'est rm -rf *ce qui causera un préjudice grave car il supprimera probablement toutes vos données personnelles, ce qui est bien plus précieux que le système d'exploitation.
Jeremy Bicha
7
En fait, il est assez intéressant de savoir ce qui se passe lorsque vous êtes en rm -rf /tant que root. Quelqu'un l'a essayé dans une machine virtuelle et a écrit à ce sujet sur le blog du super utilisateur: blog.superuser.com/2011/07/25/the-path-of-destruction-rm-rf
nhinkle le
90

Dans l'esprit de "il vaut mieux apprendre à un homme à pêcher qu'à lui donner un poisson", je vous conseille de taper le terminal man xxd(et oui, je suis encore une autre personne qui vous dit de saisir quelque chose dans le terminal ... mais vous devez reconnaître que la mancommande est sûre).

Si vous n'êtes pas familier avec echo, vous devriez vérifier cela aussi . En gros, la commande que vous avez listée "renvoie" la chaîne à la sortie standard.

Le canal |canalise toutefois cette sortie standard dans l'entrée standard de la xxdcommande, qui dans ce cas est configurée pour convertir une chaîne au format hexadécimal en entrée de format régulier.

Donc, la réponse courte est: non, cela n'a rien effacé. Mais cela a fait écho rm -rf *à votre écran, qui a dû vous donner un peu de froid :-)

Chan-Ho Suh
la source
2
Je déteste quand j'ai deux bonnes réponses, mais je dois le donner à Michael, simplement parce qu'il vous a battu d'une minute. :( Mais, cette réponse est toujours bonne! Je devrais probablement me familiariser avec écho ... :)
Ryan McClure
7
Avant de saisir aveuglément des commandes trouvées sur Internet sur votre machine, vous devez au moins toujours avoir une idée de ce qu’elle fait. Si une commande est trop longue à saisir à première vue, décomposez-la à l' |aide de symboles. En effet, vérifiez toujours la page de manuel si vous ne connaissez pas la commande. Cela vous protégera de ce genre de personnes et vous en apprendrez un peu à chaque fois.
Jippie
3
La mancommande peut être la seule qui donne le même résultat à la fois dans le terminal et dans un navigateur Internet.
Trealeality
7
Mais remarquez: man $(rm -rf *)est aussi mortel.
unperson325680
1
Pour être honnête, je ne pense pas que la lecture des pages de manuel de xxd serait très utile pour ceux qui ne maîtrisent pas encore parfaitement l'utilisation de la coque. Je doute vraiment que le PO ait pu déterminer si cette commande avait réellement nui à la lecture de l'homme, sans beaucoup plus de travail. Je conviens que c’est une bonne idée de savoir ce qu’une commande fait avant de la saisir et de demander aux alentours si vous ne pouvez pas le comprendre. En fait, l’un de mes atroces à propos des forums «officiels» d’Ubuntu est qu’il ya trop de conseils aléatoires pour inciter des incantations magiques dans le terminal à des personnes qui n’ont aucune idée.
Marty Fried
34

L’attaquant voulait probablement vous coller $(echo 726d202d7266202a | xxd -r -p)dans votre shell. xxd décoderait 726d202d7266202a en rm -rf *, qui serait ensuite exécuté.

xn.
la source
17
Je suppose qu'il (la victime) a laissé $sortir parce qu'il pensait que cela faisait partie de l'invite au lieu de la commande :)
Daniel Serodio
1
Ou peut-être n'était-il pas vraiment un méchant après tout ...: D
user3490458
1

si vous craignez que quelqu'un ne plonge votre système de fichiers, il chrootest à votre disposition. chroot /random/directorypuis exécutez le diable la commande.

PnotNP
la source
18
Il serait utile d’expliquer ce que chroot fait ou implique dans ce cas. Sinon, vous tapez une autre commande ... trouvée sur Internet ...
Michael Durrant
L'exécuter dans quelque chose qui ressemble à un conteneur docker est également une bonne idée, mais ce serait exagéré (mais au cas où ...)
joshumax
Il est toujours possible de chrooter en arrière (ou simplement de quitter le shell chrooté). Cela pourrait être inclus dans la charge d'attaque.
Zenexer