Хотя использование cat
может не привести к выполнению кода, escape-коды будут обработаны, так что вы легко можете быть введены в заблуждение, полагая, что скрипт безвреден, хотя на самом деле он вредоносный.
Вот пример команды, которую вы можете запустить, которая создаст «вредоносный» скрипт оболочки:
echo -e '#!/bin/sh\necho "...doing something bad here..."\nexit\n\033[A\033[Aecho "Hello dear reader, I am just a harmless script, safe to run me!"' > demo.sh
chmod a+x demo.sh
Когда вы просматриваете файл, он кажется достаточно безопасным:
$ cat demo.sh
#!/bin/sh
echo "Hello dear reader, I am just a harmless script, safe to run me!"
Но если вы на самом деле запустить его ...
$ ./demo.sh
...doing something bad here...
Сценарий работает, включая необработанные коды перехода, чтобы переместить курсор на пару строк вверх, поэтому остальная часть сценария написана поверх вредоносного кода, скрывая его.
Практически любая другая программа раскроет скрипт для того, что он есть. Только программы, которые не обрабатывают содержимое файла (например cat
, more
и less -r
), будут давать вводящий в заблуждение вывод.
Обратите внимание, что tail
и head
выдает тот же вводящий в заблуждение вывод. Поэтому использование «less + F» безопаснее, чем «tail -f».