Mokando учел ошибки! Больше никакого общего домашнего каталога: несмотря на снижение удобства, Mokando перешёл на использование /tmp/collab. Он сделал этот каталог доступным для записи всем и начал вести в нём список опасных команд, чтобы не забыть!
mokando@trick:~$ mkdir /tmp/collab
mokando@trick:~$ chmod a+w /tmp/collab
mokando@trick:~$ echo "rm -rf /" > /tmp/collab/evil-commands.txt
В этом задании, когда Вы запускаете /challenge/victim, mokando добавит cat /flag в этот список команд:
hacker@trick:~$ /challenge/victim
Имя пользователя: mokando
Password: **********
mokando@trick:~$ echo "cat /flag" >> /tmp/collab/evil-commands.txt
mokando@trick:~$ exit
logout
hacker@trick:~$
Вспомните из предыдущего уровня, что, имея доступ на запись к /tmp/collab, пользователь hacker может заменить файл evil-commands.txt. Также вспомните из модуля "Базовые команды", что файлы могут ссылаться на другие файлы. Что произойдёт, если hacker заменит evil-commands.txt символической ссылкой на некий чувствительный файл, в который mokando может писать? Звучит интересно?
Вы знаете, на какой файл нужно сослаться. Проведите эту атаку и получите /flag (mokando может читать /flag).
ПОДСКАЗКА:
Вам нужно будет запустить /challenge/victim дважды: один раз, чтобы записать cat /flag туда, куда нужно, и ещё раз, чтобы это выполнить!
ДОПОЛНИТЕЛЬНАЯ ИНФОРМАЦИЯ
Опасно ли использовать /tmp???
Несмотря на показанную здесь атаку, /tmp можно использовать безопасно. Этот каталог действительно доступен для записи всем, но у него установлен особый бит прав доступа:
hacker@trick:~$ ls -ld /tmp
drwxrwxrwt 29 root root 1056768 Jun 6 14:06 /tmp
hacker@trick:~$
Этот бит t в конце. t — это sticky-бит (закрепляющий бит). Sticky-бит t означает, что каталог позволяет переименовывать или удалять файлы в нём только их владельцам. Он специально создан, чтобы предотвратить именно такую атаку!
Проблема в этом задании, конечно же, заключалась в том, что mokando не включил sticky-бит для /tmp/collab. Это закрыло бы уязвимость в данном конкретном случае:
mokando@trick:~$ chmod +t /tmp/collab
Разумеется, общие ресурсы, такие как доступные для записи всем каталоги, всё равно опасны. Позже мы рассмотрим множество способов, которыми такие ресурсы могут вызывать проблемы безопасности!