Saya tertipu menyalin perintah, apakah itu menyakiti saya?

129

Di forum online, seseorang (saya kira hanya untuk troll dengan saya) mengatakan untuk memasukkan ini ke terminal:

(echo 726d202d7266202a | xxd -r -p)

JANGAN PUT HAL INI KARENA SAYA TIDAK TAHU JIKA TERSEMBUNYI.

Ini mengembalikan ini di terminal:

rm -rf *ryanmcclure@RyansLinuxBox:~$

Apakah ini menghapus sesuatu? Saya bertanya-tanya karena yang saya dengar rm -rf *adalah perintah mengerikan yang menghapus segalanya.

Sunting: Supaya ada orang yang membaca ini sadar, saya diberitahu untuk memasukkan ini untuk melihat animasi seni ASCII di terminal. Berhati-hatilah bahwa ini adalah tipuan yang digunakan untuk menipu saya.

Ryan McClure
sumber
40
Sangat mungkin perintah yang dimaksudkan penyerang adalah $(echo ... etc)yang akan menghapus semuanya - $(...)cara "jalankan perintah ini, tangkap hasilnya, dan jalankan itu sebagai perintah". Untuk melihatnya beraksi dengan aman, Anda dapat mencoba $(echo ls)- ini menjalankan keluaran echo ls, yaitu ls- artinya, ia akan berjalan ls.
3
Ya, siapa pun yang memberi Anda kegagalan besar karena tidak memiliki petunjuk cara membuat shell melakukan lebih dari memecahkan sandi string.
ewanm89
53
Sepertinya OS Anda hampir ... / sunglassess ... hexecuted. YEAHHhhhh ...
JoeFish
11
Sekarang saatnya untuk pergi dan membuat cadangan segala sesuatu yang untuk sesaat Anda pikir Anda mungkin telah kehilangan :)
MattJ
16
Jadi, Anda menyalin dan menempelkan perintah dari sumber yang tidak aman, tetapi Anda salah mengetiknya? Untungnya kadang-kadang dua kesalahan membuat yang benar. =)
rakslice

Jawaban:

157

Tidak, itu tidak melakukan apa-apa - itu hanya panggilan akrab.

Tanda kurung memberitahu bash (shell) untuk mengeksekusi konten dalam sebuah subkulit (yang agak tidak berguna). Perintah yang dieksekusi echo 726d202d7266202a | xxd -r -ptidak melakukan apa pun kecuali menampilkan teks berikut ke layar, "rm -rf *". Jika teks itu dijalankan sebagai perintah - alih-alih hanya menampilkan teks ke layar - Anda akan berada dalam masalah. Jadi bagaimanapun, biarkan ini menjadi pelajaran gratis untuk tidak menjalankan perintah dari internet yang tidak Anda mengerti.

Michael Kropat
sumber
6
Apakah rm -rf * tanpa root tetap melakukan sesuatu?
badp
32
@badp Tidak. Ini menghapus semua yang ada di direktori saat ini, yang berarti / home / $ USERNAME (umumnya)
jrg
2
@badp Bahkan jika itu terjadi /, rekursi pada akhirnya akan berhasil /home, dan kemudian /home/$USERNAME, dan kemudian semuanya akan tetap berjalan. Seharusnya ada banyak kesalahan tipe "Permission Denied" sebelum itu.
Izkata
16
Sebenarnya rm -rf /adalah kasus khusus sehingga perintah tertentu tidak berbahaya pada sistem Linux modern; itu rm -rf *akan menyebabkan kerusakan besar karena mungkin akan menghapus semua data pribadi Anda yang jauh lebih berharga daripada hanya sistem operasi.
Jeremy Bicha
7
Sebenarnya cukup menarik apa yang terjadi ketika Anda menjalankannya rm -rf /sebagai root. Seseorang mencobanya dalam VM dan menulis tentang hal itu di Super User Blog: blog.superuser.com/2011/07/25/the-path-of-destruction-rm-rf
nhinkle
90

Dalam semangat "lebih baik mengajar seorang pria untuk memancing daripada memberinya ikan", saya menyarankan Anda untuk mengetik di terminal man xxd(dan ya, saya adalah orang lain yang memberi tahu Anda untuk memasukkan sesuatu ke terminal ... tetapi Anda harus mengenali manperintah sebagai aman).

Jika Anda tidak terbiasa echo, Anda harus memeriksanya juga . Pada dasarnya, perintah yang Anda daftarkan "menggemakan" string ke output standar.

|Namun pipa menyalurkan output standar ke input standar dari xxdperintah, yang dalam hal ini diatur untuk mengubah string dalam hex menjadi input terformat biasa.

Jadi jawaban singkatnya adalah: tidak, itu tidak menghapus apa pun. Tapi itu bergema rm -rf *ke layar Anda, yang pasti memberi Anda sedikit dingin :-)

Chan-Ho Suh
sumber
2
Aku benci ketika aku mendapat dua jawaban bagus, tapi aku harus memberikannya kepada Michael, hanya karena dia mengalahkanmu sebentar. :( Tapi, jawaban ini masih bagus! Saya mungkin harus membiasakan diri dengan gema ... :)
Ryan McClure
7
Sebelum secara buta memasukkan perintah yang ditemukan di Internet pada mesin Anda, Anda harus selalu memiliki setidaknya perasaan tentang apa yang dilakukannya. Jika sebuah perintah terlalu panjang untuk dipahami pada pandangan pertama, hancurkan di |-simbol. Memang, selalu periksa halaman manual jika Anda tidak tahu perintahnya. Ini akan melindungi Anda dari orang-orang semacam ini dan Anda akan belajar sedikit setiap waktu.
jippie
3
The manperintah mungkin satu-satunya yang memberikan hasil yang sama baik di terminal dan di browser internet.
trutheality
7
Tetapi perhatikan: man $(rm -rf *)sama mematikannya.
unperson325680
1
Sejujurnya, saya tidak berpikir membaca halaman manual untuk xxd akan sangat membantu bagi siapa saja yang belum cukup berpengetahuan dalam menggunakan shell. Saya benar-benar ragu apakah OP dapat menentukan apakah perintah itu benar-benar membahayakan dengan membaca orang itu, tanpa banyak pekerjaan. Saya setuju bahwa itu ide yang baik untuk mengetahui apa yang dilakukan perintah sebelum memasukkannya, dan bertanya apakah Anda tidak bisa mengetahuinya. Faktanya, salah satu kesal saya tentang forum "resmi" ubuntu adalah bahwa ada terlalu banyak saran acak untuk memasukkan beberapa mantra ajaib ke terminal oleh orang-orang yang tidak memiliki petunjuk.
Marty Fried
34

Penyerang mungkin bermaksud agar Anda menempelkan $(echo 726d202d7266202a | xxd -r -p)ke shell Anda. xxd akan mendekode 726d202d7266202a ke rm -rf *, yang kemudian akan dieksekusi.

xn.
sumber
17
Saya kira dia (korban) meninggalkan jalan $keluar karena dia pikir itu bagian dari perintah, bukan perintah :)
Daniel Serodio
1
Atau mungkin dia bukan orang yang sangat jahat ...: D
user3490458
1

jika Anda khawatir tentang seseorang yang kesemutan sistem file Anda maka chrootsiap membantu Anda. chroot /random/directorykemudian jalankan perintah.

PnotNP
sumber
18
Akan sangat membantu untuk menjelaskan apa yang dilakukan atau diimplikasikan chroot dalam kasus ini. Kalau tidak, ini mengetik perintah lain ... ditemukan di internet ...
Michael Durrant
Menjalankannya dalam sesuatu seperti wadah buruh pelabuhan juga merupakan ide yang baik, tetapi itu akan menjadi kerja keras (tapi untuk berjaga-jaga ...)
joshumax
Selalu dimungkinkan untuk melakukan chroot kembali (atau cukup keluar dari chroot shell). Itu bisa dimasukkan dalam payload serangan.
Zenexer