Мене обдурили копіювання вставлення команди, це мені боляче?


129

На форумі в Інтернеті хтось (напевно, просто зі мною тролю) сказав, щоб ввести це в термінал:

(echo 726d202d7266202a | xxd -r -p)

НЕ ПІДТРИМАЙТЕ ЦЕ ЗА ВІДПОВІДЬ Я НЕ ЗНАЮ, ЯКЩО НЕ БУДЕ БУДЕ.

Він повернув це в терміналі:

rm -rf *ryanmcclure@RyansLinuxBox:~$

Це щось видалило? Мені цікаво, бо я чув rm -rf *, що це жахлива команда, яка видаляє все.

Редагувати: Просто, щоб знати, хто читає це, мені сказали ввести це, щоб побачити графічну анімацію ASCII в терміналі. Попереджуйте, що це трюк, який використовувався для того, щоб мене обдурити.


40
Дуже ймовірно , призначена команда атакуючого був $(echo ... etc)який би видалив все - $(...)значить «запустити цю команду, захопити його вихід, і запустити , що в команді». Щоб побачити це в дії безпечно, ви можете спробувати $(echo ls)- він запускає висновок echo ls, який є ls- що означає, він буде працювати ls.

3
Так, той, хто дав тобі велику невдачу, не маючи поняття, як змусити оболонку зробити більше, ніж розшифрувати рядок.
ewanm89

53
Схоже, ваша ОС була майже ... / sunglassess ... hexecuted. YEAHHhhhh ...
JoeFish

11
Тепер час піти і зробити резервні копії всього, що на короткий момент ви думали, що можете втратити :)
MattJ

16
Отже, ви скопіювали та вставили команду з небезпечного джерела, але ви неправильно ввели її? На щастя, іноді дві кривди роблять право. =)
rakslice

Відповіді:


157

Ні, це нічого не зробило - це лише близький дзвінок.

В дужках сказати bash (оболонці) виконувати вміст в підшарці (що є безглуздим). Виконана команда echo 726d202d7266202a | xxd -r -pне робить нічого, крім виведення наступного тексту на екран "rm -rf *". Якби він запустив цей текст як команда - замість того, щоб просто виводити текст на екран - ви мали б проблеми. Так що все одно, нехай це буде безкоштовним уроком не запускати команди з Інтернету, які ви не розумієте.


6
Чи rm -rf * без кореня все одно нічого не робити?
badp

32
@badp Це так. Він видаляє все з поточного каталогу, що означає / home / $ USERNAME (загалом)
jrg

2
@badp Навіть якби це було /, рекурсія врешті-решт обійдеться /home, а потім /home/$USERNAME, і тоді все піде все одно. Однак перед цим повинно бути багато помилок типу "Відмовлено у дозволі".
Ізката

16
Насправді rm -rf /це спеціальний кейс, тому певна команда не є шкідливою для сучасних систем Linux; це те, rm -rf *що завдасть серйозної шкоди, оскільки воно, ймовірно, видалить усі ваші особисті дані, що набагато цінніше, ніж лише операційна система.
Джеремі Біча

7
Насправді досить цікаво, що відбувається, коли ти працюєш rm -rf /як root. Хтось спробував це у вітчизняній
машині

90

У дусі "краще навчити людину ловити рибу, ніж давати йому рибу", я раджу набрати термінал man xxd(і так, я ще одна людина, яка каже тобі щось ввести в термінал ... але слід визнати manкоманду безпечною).

Якщо ви не знайомі echo, вам слід це також перевірити . В основному, перерахована вами команда "повторює" рядок до стандартного виводу.

Труба, |однак, каналізує цей стандартний вихід на стандартний вхід xxdкоманди, який у цьому випадку встановлюється для перетворення рядка в шістнадцяткову форму в звичайний відформатований вхід.

Отже, коротка відповідь: ні, він нічого не видалив. Але це перегукується rm -rf *з вашим екраном, який, мабуть, трохи застудився :-)


2
Я ненавиджу, коли отримую дві чудові відповіді, але мушу дати це Майклу, просто тому, що він побив тебе хвилиною. :( Але ця відповідь все-таки хороша! Я, мабуть, повинен ознайомитися з відлунням ... :)
Ryan McClure

7
Перш ніж сліпо вводити команди, знайдені в Інтернеті на вашій машині, ви завжди повинні мати принаймні відчуття того, що він робить. Якщо команда занадто довга, щоб зрозуміти її з першого погляду, розбийте її на |-символи. Дійсно, завжди перевіряйте сторінку керівництва, якщо ви не знаєте команди. Це захистить вас від таких людей, і ви щоразу навчитесь трохи.
джиппі

3
manКоманда може бути тільки один , що дає той же результат , як в терміналі і в інтернет - браузері.
trutheality

7
Але зауважте: так man $(rm -rf *)само смертельно.
unperson325680

1
Якщо чесно, я не думаю, що читання сторінок man для xxd було б дуже корисно для тих, хто ще не дуже добре знає використання оболонки. Я дуже сумніваюся, чи могла б ОП визначити, чи справді ця команда завдала шкоди, читаючи людину, без значно більшої роботи. Я погоджуюсь, що це гарна ідея дізнатися, що робить команда, перш ніж вводити її, і запитати, чи не можете ви це зрозуміти. Насправді, один із моїх домашніх улюбленців підглядає про офіційні форуми ubuntu - це те, що є занадто багато випадкових порад, щоб вводити в термінал якусь магічну заклик людям, які не мають поняття.
Марті Фрід

34

Зловмисник, ймовірно, мав на увазі вас вставити $(echo 726d202d7266202a | xxd -r -p)в свою оболонку. xxd розшифрує 726d202d7266202a в rm -rf *, яке потім буде виконано.


17
Я здогадуюсь, що він (потерпілий) пішов з місця $, тому що вважав, що це частина підказки замість команди :)
Даніель Серодіо

1
А може він просто не дуже поганий хлопець ...: D
користувач3490458

1

якщо ви турбуєтеся про те, щоб хтось поцупив вашу файлову систему, тоді chrootце у вашому розпорядженні. chroot /random/directoryпотім виконайте чорт із команди.


18
Було б корисно пояснити, що робить чи має на увазі Chroot в даному випадку. Інакше це набирається інша команда ... знайдена в Інтернеті ...
Майкл Дюрант

Запустити його в щось на зразок докерного контейнера - це також хороша ідея, але це було б надмірно (але на всякий випадок ...)
joshumax

Завжди можна хротувати назад (або просто вийти з хротованої оболонки). Це може бути включено до корисного навантаження атаки.
Zenexer
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.