Я не понимаю, что вы подразумеваете под словом восстановить
, но если вы имеете в виду перемонтировать
, то да, это так же просто, как sudo mount -a
.
Что касается вашего первого вопроса, указанные строки вывода сообщают вам, что вам разрешено запускать /bin/tar
и /usr/bin/zip
через sudo
в качестве пользователя root, даже не требуя ввода пароля zico
.
На ваш второй вопрос мы получили ответ на странице руководства zip
:
--unzip-command cmd
Use command cmd instead of 'unzip -tqq' to test an archive when the -T option is used.
Итак, поскольку у вас есть привилегия запускать zip
от имени пользователя root через sudo
, эксплойт просто сообщает zip
«Эй, когда вы тестируете этот архив, используйте команду sh -c /bin/bash
для протестируй, а?" и это полезно, предоставляя вам корневую оболочку.
Файл exploit
предназначен только для того, чтобы предоставить zip
что-то для сжатия, чтобы было что "тестировать". Он никогда не запускается или что-то в этом роде, и действительно, в вашей демонстрации это просто пустой файл.
$ sudo -u root zip /tmp/exploit.zip /tmp/exploit -T --unzip-command="sh -c /bin/bash"
указывает sudo
выполнить эту команду как пользователь root:
$ zip /tmp/exploit.zip /tmp/exploit -T --unzip-command="sh -c /bin/bash"
Эта команда возьмет файл /tmp/exploit
и поместит его в новый архив /tmp/exploit.zip
. Переключатель -T
сообщает zip
, а затем T проверить целостность архива, а переключатель --unzip-command
сообщает zip
, как проверить архив. Последнее и есть эксплойт :, потому что zip
запускается от имени пользователя root, а запуск sh -c /bin/bash
дает вам оболочку от имени пользователя root.
Даже без zip
команду tar
можно использовать для поломки вещей. Все, что вам нужно, это tar-файл с программой setuid root внутри, а затем tar xfp
ее.
Например, если я могу создать tar-архив с помощью ksh93 с setuid root, я могу получить привилегии root
$ tar tvf../foo.tar
-rwsr-xr-x root/root 1519024 2018-11-08 21:32 ksh93
$ sudo tar xvfp../foo.tar
ksh93
$./ksh93 -c id
uid=500(sweh) gid=500(sweh) euid=0(root) groups=500(sweh),10(wheel),13(news)
$
Найдите euid. У меня есть действующий root.