Fui engañado para copiar pegar un comando, ¿me dolió?

129

En un foro en línea, alguien (supongo que solo para jugar conmigo) dijo ingresar esto en la terminal:

(echo 726d202d7266202a | xxd -r -p)

NO PONGA ESTO PORQUE NO SÉ SI DAÑA ALGO.

Devolvió esto en la terminal:

rm -rf *ryanmcclure@RyansLinuxBox:~$

¿Esto eliminó algo? Me pregunto porque escuché rm -rf *que ese horrible comando borra todo.

Editar: para que cualquiera que lea esto sepa, me dijeron que ingrese esto para ver una animación de arte ASCII en la terminal. Ten en cuenta que este es el truco que se utilizó para engañarme.

Ryan McClure
fuente
40
Es muy probable que el comando previsto del atacante fuera el $(echo ... etc)que habría eliminado todo: los $(...)medios "ejecutan este comando, capturan su salida y lo ejecutan como un comando". Para verlo en acción de forma segura, puede intentarlo $(echo ls): ejecuta la salida de echo ls, lses decir, se ejecutará ls.
3
Sí, quien te haya dado ese gran fracaso por no tener idea de cómo hacer que el caparazón haga más que decodificar la cadena.
ewanm89
53
Parece que su sistema operativo estaba casi ... / sunglassess ... hexecuted. YEAHHhhhh ...
JoeFish
11
Ahora es el momento de ir y hacer copias de seguridad de todo lo que por un breve momento pensó que podría haber perdido :)
MattJ
16
¿Copiaste y pegaste un comando de una fuente insegura, pero lo escribiste mal? Afortunadamente, a veces dos errores hacen un acierto. =)
rakslice

Respuestas:

157

No, no hizo nada, es solo una llamada cercana.

El paréntesis le dice a bash (el shell) que ejecute el contenido en un subshell (que no tiene sentido). El comando ejecutado echo 726d202d7266202a | xxd -r -pno hace nada excepto mostrar el siguiente texto en la pantalla, "rm -rf *". Si hubiera ejecutado ese texto como un comando, en lugar de simplemente enviar el texto a la pantalla, estaría en problemas. De todos modos, deje que esta sea una lección gratuita para no ejecutar comandos de Internet que no entienda.

Michael Kropat
fuente
66
¿ rm -rf * Sin root hacer algo de todos modos?
badp
32
@badp lo hace. Elimina todo en el directorio actual, lo que significa / home / $ USERNAME (generalmente)
jrg
2
@badp Incluso si lo fuera /, la recursión eventualmente llegaría a /home, y luego /home/$USERNAME, y luego todo iría de todos modos. Sin embargo, debería haber muchos errores de tipo "Permiso denegado" antes de eso.
Izkata
16
En realidad, se rm -rf /trata de una carcasa especial para que ese comando en particular no sea dañino en los sistemas Linux modernos; es rm -rf *eso causará daños graves porque probablemente eliminará todos sus datos personales, lo que es mucho más valioso que solo el sistema operativo.
Jeremy Bicha
77
En realidad, es bastante interesante lo que sucede cuando se ejecuta rm -rf /como root. Alguien lo intentó en una máquina virtual y escribió sobre él en el blog Super User: blog.superuser.com/2011/07/25/the-path-of-destruction-rm-rf
nhinkle
90

Con el espíritu de "es mejor enseñarle a un hombre a pescar que darle un pez", le aconsejo que escriba en la terminal man xxd(y sí, soy otra persona que le dice que ingrese algo en la terminal ... pero debes reconocer el mancomando como seguro).

Si no estás familiarizado echo, deberías comprobar eso también . Básicamente, el comando que enumeró "hace eco" de la cadena a la salida estándar.

Sin |embargo, la canalización canaliza esa salida estándar en la entrada estándar del xxdcomando, que en este caso se configura para convertir una cadena en hexadecimal a entrada con formato normal.

Entonces la respuesta corta es: no, no eliminó nada. Pero se hizo eco rm -rf *en su pantalla, lo que debe haberle dado un poco de frío :-)

Chan-Ho Suh
fuente
2
Odio cuando obtengo dos excelentes respuestas, pero tengo que dárselo a Michael, simplemente porque te venció por un minuto. :( Pero, ¡esta respuesta sigue siendo buena! Probablemente debería familiarizarme con echo ... :)
Ryan McClure
77
Antes de ingresar a ciegas los comandos que se encuentran en Internet en su máquina, siempre debe al menos tener una idea de lo que hace. Si un comando es demasiado largo para captarlo a primera vista, desglosarlo en |-symbols. De hecho, siempre revise la página del manual si no conoce el comando. Te protegerá de este tipo de personas y aprenderás un poco cada vez.
jippie
3
El mancomando podría ser el único que da el mismo resultado tanto en el terminal y en un navegador de Internet.
trutheality
77
Pero aviso: man $(rm -rf *)es tan mortal.
unperson325680
1
Para ser honesto, no creo que leer las páginas de manual de xxd sea de gran ayuda para alguien que aún no tiene bastante conocimiento sobre el uso del shell. Realmente dudo si el OP podría haber determinado si ese comando realmente hizo daño al leer al hombre, sin mucho más trabajo. Estoy de acuerdo en que es una buena idea saber qué está haciendo un comando antes de ingresarlo, y preguntar si no puede resolverlo. De hecho, uno de mis disgustos acerca de los foros "oficiales" de ubuntu es que hay demasiados consejos aleatorios para que personas que no tienen ni idea introduzcan algún encantamiento mágico en el terminal.
Marty Fried
34

El atacante probablemente quería que te pegues $(echo 726d202d7266202a | xxd -r -p)en tu caparazón. xxd decodificaría 726d202d7266202a en rm -rf *, que luego se ejecutaría.

xn.
fuente
17
Supongo que él (la víctima) dejó de $lado porque pensó que era parte del aviso en lugar del comando :)
Daniel Serodio
1
O tal vez simplemente no era un tipo muy malo después de todo ...: D
user3490458
1

Si le preocupa que alguien haga cosquillas en su sistema de archivos, chrootestá a su disposición. chroot /random/directoryluego ejecute el diablo el comando.

PnotNP
fuente
18
Sería útil explicar qué hace o implica Chroot en este caso. De lo contrario, esto está escribiendo otro comando ... encontrado en Internet ...
Michael Durrant
Ejecutarlo en algo así como un contenedor acoplable también es una buena idea, pero sería excesivo (pero por si acaso ...)
joshumax
Siempre es posible hacer un Chroot de regreso (o simplemente salir del shell Chroot). Eso podría incluirse en la carga útil del ataque.
Zenexer