HimeraSearchDB
Carding_EbayThief
triada
CrackerTuch
d-shop
HimeraSearchDB

НОВОСТИ HackTheBox. Прохождение OpenAdmin. RCE в OpenNetAdmin и GTFOBins в nano

Bonnie
Оффлайн
Регистрация
12.04.17
Сообщения
19.095
Реакции
107
Репутация
0
gzk2x7-tes6mnlvwsothxlhevzu.png


Продолжаю публикацию решений отправленных на дорешивание машин с площадки .

В данной статье мы проэксплкатируем RCE в OpenNetAdmin, покопаемся в конфигах веб сервера, прокинем порт с помощью SSH Forwarding, крякнем пароль к ключу SSH и используем технику GTFOBins для повышения привилегий.

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

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

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

Recon


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


10.10.10.171 openadmin.htb

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


masscan -e tun0 -p1-65535,U:1-65535 10.10.10.171 --rate=500

yfkzk-5j7rt3o9lkt_wne1sbtba.png


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

nmap openadmin.htb -p22,80

q8xwbgn5b-4huefmjbg2--7cxic.png


Таким образом на сервисе работает SSH и Web-сервер Apache. Глянем, что расположено на сайте.

ci-8hs_xnre-tqsfbxvvjfhdefw.png


Встречаем главную страницу Apache. В таких случаях сайты могут быть расположены не в домашней директории сервиса. Чтобы их обнаружить, нужно перебрать директории. Для этого используем программу gobuster (якобы самый быстрый сканер). Выбираем режим сканирования директорий (dir), словарь (-w), количество потоков (-t), расширения для страниц (-x), также расширенный вывод страниц (-e) и URL (-u).

gobuster dir -w /usr/share/seclists/Discovery/Web-Content/raft-large-words.txt -t 120 -x php,html,conf,txt -e -u

geagtpclujurfby4j62in_q9qqe.png


В выводе слишком много ответ с кодом 403, чтобы их фильтровать, укажем нужные нам коды ответа (-s).

gobuster dir -w /usr/share/seclists/Discovery/Web-Content/raft-large-words.txt -t 120 -x php,html,conf,txt -e -u -s “200,204,301,302,307,401”

q4ppgaxf5uij_vymjnduahbvzlc.png


И находим несколько директорий. Теперь обойдем все, чтобы узнать, что там расположено.

yssgclqyfrxqopp6jal2mwr8ke0.png


jdi0eoix9map3hyzvj_umzomiu0.png


okgo9b-vctooa5dnjgh4g_scxeg.png


И всего на одном из этих сайтов, есть функция авторизации (Login). Но стоит попробовать это сделать, мы переходим на страницу OpenNetAdmin.

aboarjd_cmof9_yldnsw2xt_p5o.png


При этом, как можно заметить, используется версия 18.1.1.

Entry Point


Поищем эксплоиты для данной версии.

bufps8ceg9rexhfreu5-tk7rslo.png


И для данной версии есть RCE эксплоит. Код уже есть в локальной базе, давайте взглянем.

laz8rxyqtyy0r4yclmfsflf-2ei.png


Таким образом скрипт принимает один параметр — это URL. (При запуске у меня были ошибки, поэтому можно открыть файл через mcedit и по убирать ^M символы).

1njqgfuc5dmuvkzkh0b-_zvr3tk.png


USER1


Мы находимся в домашней директории.

gn-el4oiwohsio7jbydlw8uanqi.png


И нас окружает большое количество файлов.

b3huxxvykyguxabpcm711ov-x_4.png


Какой-нибудь из них может содержать учетные данные. Давайте поищем во всех файлах рекурсивно имена пользователей.

yddol2z2yphaewwl_hzptzch25e.png


И нет никаких результатов. Но будет много результатов при поиске слова “pass”.

hh0lpuehfohzs4wc6fculou-lly.png


Теперь глянем весь конфиг.

4gajd8kydvgvvnmnypn0mmt6swu.png


Это пароль для подключения к базе данных. Давайте попробуем его для пользователей. И мы успешно логинимся под пользователем jimmy.

qi1j5siegaux8jficmuxbfejhio.png


USER2


Первым делом запускаем скрипт базового перечисления .

xjocgkvsbcjfoythb4lugxfq9r4.png


Вывод нужно анализировать очень внимательно, каждую строчку!!! И единственное, за что можно зацепиться в выводе скрипта — это членство в группах.

phbhjfhzgmhow5eecq0rdmsmzla.png


Jimmy и Joanna состоят в одной группе internal. Посмотрим файлы, принадлежащие данной группе.

baqnto7k5gphw2wyzr9bwtlk3iy.png


Судя по расположению — это сайт. Анализируем файлы. Первым смотрим main.

fmd0ensf4qdhj1eef_pxxfuahrq.png


Если мы авторизованы, нам покажут закрытый SSH ключ пользователя joanna. Из index файла следует, что мы перейдем в main после успешной авторизации. Так же содержится SHA512 хеш от пароля.

j-l3ukl0nqnnlgmx3-aitsyuaam.png


Хеш легко ломается с помощью этого .

dxijyx-5mbnn3b9ap0luoxfi5zw.png


Осталось узнать, как попасть на сайт. Порты, по которым обращаться на каждый из сайтов можно найти в соответствующем файле конфигурации каждого сайта в директории /etc/apache2/sites-available для apache.

h-elb8ztmr1abcvess6m0rkjpgo.png


Как можно видеть там есть интересующий нас internal.conf. Теперь пробросим SSH порт.

6-zcdscnylp1kdepmptoek0vacy.png


Из конфига понятно, что мы можем обратиться к сайту из локальной машины на 52846 порт по домену internal.openadmin.htb. Давайте прокинем порт — то есть сделаем так, чтобы наш локальный порт 52846 переадресовывался на удаленный 52846 порт. Данная техника называется SSH Port Forwarding.

hrmnew4pe_qr4jzfdxjc-p6qci0.png


Теперь на локальной машине внесем запись в файл /etc/hosts.
127.0.0.1 internal.openadmin.htb
И обратимся через браузер по адресу :52846/index.php.

e58qdey87mqfdwsfvbnnixg6cmq.png


Авторизуемся с известными учетными данными и получаем закрытый SSH ключ.

crjz3sfkwq8fa2lqgkifvpq7qam.png


Сохраняем в файл и назначаем права.

uftfeh-mjawi_ygueqml-rh30_m.png


Но при попытке подключиться, у нас спрашивают пароль для ключа, ведь он зашифрован.

btbe2a9n8hs1w1bjtqlwlhoum20.png


Мы можем пробрутить ключ. Для этого приведем его к формату John’a, а потом отдадим на брут файл с уже преобразованным к формату ключом.

atiiblsl0xlnpj1miifly6mbbr4.png


И успешно находим пароль. Подключаемся уже с ключом и паролем.

higlwyyzhf6g4ksfl58icq_n0bc.png


ROOT


Одна из вещей которую стоит проверять это настройки sudo для выполнения команд без пароля.

zeobhyisab0psm-5o8nqyw3edni.png


Строка NOPASSWD говорит о том, что мы можем выполнить данную команду под sudo без пароля. В данном случае вызывает команда nano. Есть такая техника как GTFOBins, которая позволяет с помощью разных утилит читать, писать файлы или выполнять целые команды. Полный список утилит и их возможностей можно глянуть . Давайте глянем как получить шелл с помощью nano.

dj_tqlorzaqsofasvryhvpkkqmq.png


Выполним нашу команду с sudo.

c5c1nqjzhy95ib5qjclxbamjeh0.png


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

ueqgtm2fofsdpv0s54sp55ec7ky.png


Теперь опцию выполнения команд.

oha9bf1pissk50a8guydkfncj0k.png


И вводим последнюю строку из инструкции.

74c41cooh74kx21r-gxqjadhymo.png


И получаем шелл от имени рута.

nesaqnf-g_m2lv5o-u5ulo66lku.png


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