Почему шаблон подстановки find {} уязвим для атаки путем внедрения? [дубликат]

Я бы сделал следующее:

sudo strace -pXXXX -tfo /tmp/strace.log

где XXXX - это идентификатор процесса bash. При быстрой проверке завершения имени файла в одном из моих деревьев каталогов, смонтированных по NFS, он работает без проблем:

-f

Отслеживать дочерние процессы, поскольку они созданы отслеживаемыми в настоящее время процессами в результате fork (2) системный вызов.

-t

Приставьте к каждой строке трассировки время дня.

Некоторые люди могут предпочесть -r :

-r

Печатать относительную временную метку при входе в каждый системный вызов. Это записывает разницу во времени между началом последовательных системных вызовов.

2
04.04.2019, 21:28
1 ответ

Имя каталога помещается там, где стоят фигурные скобки, и затем подчиняется оболочке; рассмотрим mkdir '$(reboot)', где findнайдет его. Затем вы заканчиваете выполнением sh:cd $(reboot)--или любой другой команды, которую вы хотели бы представить. Команда cd, вероятно, потерпит неудачу, если злоумышленник не будет чрезвычайно хитрым и повторит там имя действительного каталога, но ущерб нанесен, несмотря ни на что. Для менее -радикального тестирования от имени пользователя root попробуйте что-то вроде:

$ mkdir '$(touch.evil_file; echo directory-name)'`

Вы получите этот вывод:

something
sh: line 0: cd:./directory-name: No such file or directory

... и:

$ ls -a
. .. .evil_file  $(touch.evil_file; echo directory-name)
1
27.01.2020, 22:17

Теги

Похожие вопросы