Root me
Основная задача - обход фильтров ограничивающих загрузку файлов на web сервер. Эскалация привилегий в Linux.
Описание задания можно найти на TryHackme
Сканирование
Проведение разведки с nmap на предмет наличия открытых портов:
sudo nmap -T4 -p- IP-ADDRESS
#После получения сведений о портах
sudo nmap -sV -sC -O -p 22,80 IP-ADDRESS
Обнаружены открытые порты 22 и 80.
Получены версии, наименование ПО работающего на открытых портах (Apache, backend на PHP)
Изучаем главную страницу web приложения, не находим ничего интересного
Проводим разведку с gobuster или feroxbuster для получения информации о имеющихся директориях и файлов php
,txt
,js
,cgi
,html
,htm
,sh
:
feroxbuster -u IP-ADDRESS -w /usr/share/wordlists/dirbuster/directory-list-2.3-small.txt -t 64 -x php,txt,js,cgi,html,htm,sh``
gobuster dir -t 64-u IP-ADDRESS -w /usr/share/wordlists/dirbuster/directory-list-2.3-small.txt -x php,txt,js,cgi,html,htm,sh``
Находим директории
/panel/
,/uploads
. Очевидно, что первая используется для загрузки файлов, вторая для доступа к ним.
RCE
- Качаем PHP-revshell
Не забывай
Не забывай поменять IP и порт. При замене не забывай про кавычки и прочие служебные символы
-
Выясняем, что установлен фильтр который не загружает файлы с расшрением
.php
Меняем расширение на различные допустимые для php, исчерпывающий список приложен здесь. -
Выясняем, что файлы с измененным расширением (
.php2
,.php3
,.php4
,.php5
и др.) загружаются, однако не запускаются некорректно. Пробуем все разршения из указанного списка. Это можно сделать как вручную, так и через модуль repeater в BurpSuite.В текущем, конкретном случае, рабочее расширение которое и загружается и выполняется без ошибок -
.phar
-
Запускаем listener
-
Запускаем загруженный файл из директории
/uploads
-
Стабилизируем оболочку, забираем первый флаг в
~/user.txt
Эскалация привилегий
-
Сверяем найденные бинарники со списком на GTFOBins, выясняем, что можно эксплуатировать бинарник Python которому выданы SUID права
-
Эскплуатируем уязвимость. Забираем root флаг в
/root/root.txt