Приветствую всех неравнодушных пацанов и девчуль, вещает Майк Вазовски.
Сегодня на обзоре 140 листовый отчет настоящего пентестера (игрушечного задрота) который проходил экзамен на международную сертификацию HTB Certified Penetration Testing Specialist (CPTS).
Целью данной статьи будет не столько показать не стандратные (а может быть и стандартные) решения или подходы, а просто эталонный пример того, как не надо тратить деньги на всякую бумажную шелуху . Просто внести ясность тем, кому возможно это будет полезным или он захочет пройти данную историю.
И так, начнем.
Введение
Этот отчет о тестировании на проникновение trilocor.local проводится в рамках экзамена на получение сертификата Certified Penetration Testing Specialist (CPTS) от Hack The Box. Отчет демонстрирует профессиональный подход к анализу уязвимостей, начиная с этапа разведки и заканчивая эскалацией привилегий и перемещением внутри сети. Каждый этап содержит четкие команды, что делает результаты воспроизводимыми и документированными.
Дисклеймер: обратился ко мне фрикадельковый чипинкос с просьбой оценить стоимость моей помощи на экзамене. Ранее, я слушал про подобного рода телодвижения, но руками не притрагивался. В процессе обсуждения гангстер сказал, мол, смотри, в прошлом году мой кент xzibit проходил данное испытание, вот отчет.
Второй дисклеймер: не договорились мы с ним от слова НИ-ху... ну вы поняли, но старина майк ведь не промах, вытянул с лоха халяву)))
Проведя анализ содержимого я решил поделиться данной информацией по следующим причинам:
- Не думаю что такое валяется где попало
- Форум duty-fre не является "Чем попало"
- Специалисты веба всегда испытывают потребность в новых идеях, схемах и фокусах, а тут - как раз расширение кругозора.
- Халява
- Еще раз, качественная халява
- Построчное и поэтапное описание вектора атаки
1. После подтверждения внешнего периметра мы приступили к активному сканированию инфраструктуры с использованием внешнего IP-адреса. В то время динамический IP-адрес, связанный с доменом trilocor.local, был указан как 10.129.x.x (периодически сообщалось о его изменениях). Сначала мы просканировали первые 1000 портов, а затем провели комплексное сканирование всех портов.
Не удалось прогрузить медиа
Не удалось прогрузить медиа
2. После перечисления сервисов мы решили расширить область поиска. Наш подход заключался в попытке передачи зоны DNS для получения дополнительной информации, что расширило нашу поверхность атаки. В результате мы получили ещё 7 виртуальных хостов. Попытка передачи зоны DNS с запросом AXFR
Не удалось прогрузить медиа
3. Все эти виртуальные хосты отвечали на один и тот же IP-адрес, что побудило нас обновить файл /etc/hosts. Эта настройка позволила нам разрешить их и получить к ним доступ через браузер. (скриншот с обновленным IP-адресом). Сохранение в /etc/hosts
Не удалось прогрузить медиа
4. После того, как мы некоторое время сканировали домен, пытаясь найти больше поддоменов и более интересные каталоги, нам удалось найти интересный каталог на dev.trilocor.local, который отвечал на запросы по адресу dev.trilocor.local/transfer.
Не удалось прогрузить медиа
5. Доступ к этому каталогу позволил нам обнаружить новый поддомен, который мы затем добавили в список хостов. securetransfer-dev.trilocor.local
Не удалось прогрузить медиа
Не удалось прогрузить медиа
6. После перехода на этот новый домен нам предложили войти в систему и зарегистрироваться. Не имея учётных записей, мы зарегистрировались и вошли в систему, после чего оказались на платформе, где могли загружать файлы.
Не удалось прогрузить медиа
7. После некоторого поиска и обнаружения там нескольких PHP-файлов мы попытались проверить их на наличие SQL-инъекций, загрузив какой-нибудь файл, а затем пропустив наш запрос через Burp Suite. В запросе на загрузку нам удалось получить имя файла в качестве параметра, который, вероятно, был уязвим для SQL-инъекций. Поэтому мы получили PHP-обратную оболочку с https://github.com/pentestmonkey/php-reverse-shell, изменили IP-адрес и порт на нашем атакующем компьютере и загрузили её.
Не удалось прогрузить медиа
8. После отправки запроса на ретранслятор Burp мы скопировали результат в локальный файл, попытались выполнить атаку с внедрением SQL-кода с помощью sqlmap и смогли получить доступ к некоторым доступным базам данных.
Не удалось прогрузить медиа
Не удалось прогрузить медиа
9. После долгих поисков и получения не очень полезной информации нам удалось найти абсолютный путь загрузки обратной оболочки, которую мы загрузили ранее и сохранили в базе данных securetrasnfer в таблице файлов. Мы выгрузили столбцы и получили абсолютные пути. Затем мы перешли по этому пути, запустили наш прослушиватель netcat и получили обратную оболочку!
Не удалось прогрузить медиа
Не удалось прогрузить медиа
10. Мы получили флаг в папке /home, обновили сеанс meterpreter, а затем начали искать полезную информацию или способы получить права суперпользователя. Не имея возможности получить права суперпользователя, мы нашли интересный файл в каталоге /apps под названием osticket_data.zip и загрузили его локально
Не удалось прогрузить медиа
Не удалось прогрузить медиа
11. Мы распаковали архив и начали искать конфиденциальные данные в zip-файле. Мы нашли новый поддомен и учётные данные пользователя-администратора (имя пользователя: administrator, хэш). Мы определили хэш, найдя в hashcat первые символы, а затем попытались взломать хэш. Из-за недостаточной сложности пароля нам удалось взломать его. Мы использовали учётные данные и прошли аутентификацию на ossticketapp.trilocor.local (хосты обновлены). Поиск учётных данных
Не удалось прогрузить медиа
Не удалось прогрузить медиа
Идентификация типа хэша
Не удалось прогрузить медиа
Взлом с помощью hashcat
Не удалось прогрузить медиа
После аутентификации мы начали поиск конфиденциальной информации и прочитали несколько сообщений в текущих открытых тикетах, а также на новой тестовой платформе (gogsusdev01.trilocor.local), которая разрабатывалась разработчиками. Мы следовали указаниям, которые были даны в деталях тикета, и выдавали себя за разработчиков.
Enumeration - значит перечисление
Не удалось прогрузить медиа
Не удалось прогрузить медиа
13. Итак, мы выполнили шаги, создали учётную запись, получили доступ и начали поиск на платформе, где нашли репозиторий с кодом
Создание аккаунта
Не удалось прогрузить медиа
Не удалось прогрузить медиа
Не удалось прогрузить медиа
Студенческая документация
Не удалось прогрузить медиа
14. Изучив репозиторий, мы заметили, что там есть инструкции по созданию учётных записей, обновлению ролей, созданию, обновлению и экспорту заявок, а также другая информация. Поэтому мы попытались следовать логической цепочке атак и сначала зарегистрировались с помощью вызовов API. Вошли в систему с помощью вызовов API, которые дали нам токен, необходимый для других операций. Попытались обновить нашу роль до роли администратора. Попытались создать заявку, содержащую вредоносный код, а затем экспортировать эту заявку с помощью расширения PHP и получить обратную оболочку.
Регистрация
Не удалось прогрузить медиа
Вход (сгенерированный токен): (токен меняется при каждом входе в систему)
Не удалось прогрузить медиа
c. Изменение нашей роли на роль администратора: (токен меняется при каждом входе в систему)
Не удалось прогрузить медиа
d. Повторите аутентификацию, чтобы получить токен администратора:
Не удалось прогрузить медиа
e. Проверка изменений:
Не удалось прогрузить медиа
f. Заметили примечание по безопасности, указывающее на возможную атаку. Затем мы создали несколько заявок, пытаясь понять, как работает цепочка.
Не удалось прогрузить медиа
Не удалось прогрузить медиа
Не удалось прогрузить медиа
Не удалось прогрузить медиа
Не удалось прогрузить медиа
Не удалось прогрузить медиа
g. Затем мы попытались создать вредоносную программу. И мы экспортировали её.
Не удалось прогрузить медиа
h. Мы посетили абсолютный путь и убедились, что у нас есть RCE, а затем проксировали запрос через burpsuite, чтобы нам было проще работать.
Медиа заблокировано
Этот домен не входит в список разрешённых для медиа.
Формат: изображения / GIFДомен:
forum.LIMB.ccРазрешённые домены
imgur.comru.imgbb.comprnt.scimgbb.comibb.coi.imgur.comi.ibb.codarklimb.vipi.pinimg.comimg3.teletype.inimg4.teletype.inteletype.inpikabu.rucs15.pikabu.ruimg2.teletype.inlh7-rt.googleusercontent.comduty-files.ccblogger.googleusercontent.com
Не удалось прогрузить медиа
15. В одном случае, когда у нас было удаленное выполнение кода, мы использовали веб-сайт с кодирующим URL-адресом https://www.w3schools.com/tags/ref_urlencode.ASP для кодирования наших команд, и мы прочитали флаг. Загрузили обратную оболочку, сделали ее исполняемой, а затем запустили обратную оболочку с помощью metasploit. URL-кодировка наших команд
Не удалось прогрузить медиа
Не удалось прогрузить медиа
Создание обратной оболочки php - БАБАХ, Ашалел даже Стетхем!!!
Не удалось прогрузить медиа
Загрузка и выполнение
Не удалось прогрузить медиа
16. После некоторого перебора мы получили некоторые учетные данные, которые на данный момент не могли использовать (api-db- admin: 4S8ITCNG3sn0). Мы попытались повысить уровень привилегий с помощью программы know linux vulnerabilities и программы metasploti, предлагающей локальные эксплойты, но безуспешно. Поэтому мы решили пойти дальше. Но мы заметили, что у этого сервера был доступ к внутренней сети через некоторое сетевое перечисление, которое мы провели. (Подсеть, предоставленная клиентами в scope). Сначала мы пытались выполнить внутреннюю сводку, и нам это удалось, но нам нужны были права суперпользователя, чтобы быть более скрытными и упростить сводку. Мы хотели использовать поворотный сервер для переноса, загрузки, выполнения и монтирования, но с помощью только стандартного пользователя мы не смогли этого сделать, поэтому продолжили.
Не удалось прогрузить медиа
17. После недолгих поисков мы наткнулись на уязвимое приложение, работающее с портом 7777. Мы зашли на страницу и, немного погуглив, также нашли подкаталог console, защищенный pin-кодом. - прям как Кунгфу Панда!
┌──(bmiadmin㉿bmi-pt)-[~/Desktop/cptsExam/tools]
└─$ nmap -sT -Pn -A 10.129.244.96 -p7777 --disable-arp-ping
Starting Nmap 7.94 ( https://nmap.org ) at 2023-12-17 17:54 EST Nmap scan report for trilocor.local (10.129.244.96) Host is up (0.041s latency).└─$ nmap -sT -Pn -A 10.129.244.96 -p7777 --disable-arp-ping
PORT STATE SERVICE VERSION
7777/tcp open http Werkzeug httpd 2.2.1 (Python 3.8.10)
|_http-server-header: Werkzeug/2.2.1 Python/3.8.10
|_http-title: Site doesn't have a title (text/html; charset=utf-8).
Service detection performed. Please report any incorrect results at https://nmap.org/submit/ . Nmap done: 1 IP address (1 host up) scanned in 17.87 seconds┌──(bmiadmin㉿bmi-pt)-[~/Desktop/cptsExam/tools] └─$
OSINT для получения общедоступной информации о приложении
Не удалось прогрузить медиа
Поиск страницы консоли через перечисление osint
Не удалось прогрузить медиа
18.После некоторого поиска в Google мы нашли множество руководств по yotube, которые освещали эту уязвимость здесь
Не удалось прогрузить медиа
и статью здесь, по которой мы подписались, чтобы получить доступ https://book.hacktricks.xyz/network-services-pentesting/pentesting-web/werkzeug#get_machine_id-code . С предыдущим доступом, который у нас был на сервере, нам удалось получить всю необходимую информацию и попытаться локально запустить публичный эксплойт PoC, чтобы сгенерировать себе пин-код доступа. Для получения требуется информация для работы скрипта dxploit.
Не удалось прогрузить медиа
Не удалось прогрузить медиа
Не удалось прогрузить медиа
19. Как только мы получили всю необходимую информацию, мы выполнили пошаговое руководство и вставили всю информацию в готовый к работе эксплойт, а затем выполнили его, чтобы получить пин.
Не удалось прогрузить медиа
Добавление необходимой информации в эксплойт - бомардир бомбит полезную нагрузку ША-ТА-ТА-ТА
Не удалось прогрузить медиа
Не удалось прогрузить медиа
Выполнение скрипта и закрепление обтана
На этом этапе объявляю конец первой части этого замечательного путешествия, так как достигнуто ограничение по загруженному контенту на одну исполняемую единицу читаемой статьи. Если данный анекдот соберет хотя-бы какую-то здравую респектуру в адрес Майка, то будет COMING SOON.
До встречи. Люблю, целую, Пух!
👍54
❤️9
😁7
😮8
😢6
💯11
LIMB