Приветствую,
! Сегодня пройдём машину средней сложности под названием
. Основной упор будет сделан в форензику (логи
) и реверс. Приятного чтения
Разведка
Начинаем со сканирования портов:
Переходим на 80-ый порт:
Чтобы попасть на домен нам требуется отредактировать файл
:
Теперь мы можем получить доступ к сайту:
На нём нам предлагают загрузить картинку для криминалистического анализа:
Пробуем загрузить текстовый файл:
Вылетает ошибка, значит на веб-сайте есть какие-то фильтры:
На данном этапе я потратил некоторое количество времени, чтобы обойти эти фильтры, но всё оказалось безуспешно. Попробуем загрузить валидный файл:
И нам вываливается ссылка на отчёт по файлу, кликаем по ней:
Оказывается, что файлы обрабатываются
версии
. Гуглим уязвимости/эксплойты:
Мы можем получить
, если будем эксплуатировать
. Возьмём какой-нибудь эксплоит (например, этот):
Тут есть полная инструкция по эксплуатации. Для начала установим
:
И запустим сам эксплоит:
У меня возникли некоторые проблемы с подключением (плохая оболочка), поэтому я взял от эксплойта только сгенерированный файл, а сам шелл получил через
:
Взятие пользователя
Проверяем какие имеются пользователи с хоум каталогом в системе:
И качаем
:
Даём ему права и запускаем:
В отчёте мы можем увидеть следующую строку:
К сожалению, тут нет ничего особенного, чтобы что-то сразу проэксплуатировать, но есть дополнительная информация - это путь
Код:
/usr/local/investigation/
.
Переходим в
Код:
/usr/local/investigation
и видим там
файл. Почитав мануалов, я пришёл к выводу, что данный файл нужно сконвертировать в
и прочитать с помощью
.
Для начала поднимем
-сервер, чтобы скачать файл:
Качаем файл на свою машину:
После этого переходим на любой онлайн сервис, где можно сконвертировать
в
:
Я лично использовал
для чтения
файла, но насколько мне известно, это как-то можно сделать и через
:
Запускаем
и нажимаем
Код:
"Открыть сохраненный журнал..."
, где указываем путь до нашего
-файла:
После этого у нас открылись все логи из файла:
Сначала я попытался пересмотреть абсолютно всё, но логов оказалось слишком много, поэтому я начал думать над тем, как оптимизировать поиск.
На сайте
- События аудита входа (Windows 10) - Windows security, мы можем посмотреть коды событий связанные с авторизацией для логов:
Чтобы сделать поиск по событию требуется нажать на кнопку
Код:
"Фильтр текущего журнала..."
:
И указать в нём код(ы):
В событии
(Сбой входа) можно найти что-то похожее на пароль (т. е. пользователь ввёл пароль вместо юзернейма):
Попробуем использовать его в качестве пароля для пользователя
(о котором мы узнали ещё в самом начале):
Пользователя взяли. Теперь переходим к руту.
Взятие рута
Используем стандартную команду
после подключения за пользователя, чтобы узнать какие команды/инструменты мы можем использовать от лица суперпользователя:
Скорее всего сейчас будет реверс
Огромное спасибо @Mogen за помощь в части с реверсом!
Переходим в
и поднимаем
-сервер
, чтобы скачать бинарник:
Открываем его в
и декомпилируем код:
1. Функция
принимает 3 параметра согласно прототипу функции:
Код:
int main (int argc, char *argv[], char *envp[])
. Для нас важны
.
2. Если количество аргументов из командной строки (
) не равно 3, то завершаем программу. Это значит, что мы должны передать аргументы в таком виде:
Код:
./binary ARG_2 ARG_3
3. Если программа запущена не от лица суперпользователя, то тоже завершаем программу.
4. В качестве второго аргумента командной строки принимается строка
, если же мы укажем что-то другое, то программа завершится.
5. Создаётся/открывается файл с названием
с правами
, т. е. мы можем в него записать бинарные данные.
6. Настраивается
для первой части аргумента (ссылки).
7. Запускается
. Если запуск неудачен, то завершаем программу.
8. С помощью функции
определяется длина строки, которая будет записана в
, указывающая на команду
для выполнения файла, заданного в
.
Пример определения длины:
Код:
data = snprintf(0LL, 0LL, "perl ./%s", ptr);
.
Выделяется память для
. С помощью функции
записывается указанная команда в
.
9. Запуск от лица суперпользователя содержимого
в функции
и удаление файла с названием
.
Резюме: мы можем указать ссылку, а затем
. Содержимое ссылки запишется в файл и запустится через интерпретатор
от лица суперпользователя.
В таком случае нам нужно скачать любой шелл на перле, например, от
. И указать в нём свой
и порт.:
Теперь опять поднимаем веб-сервер пайтона и ставим листенер, чтобы получить на него шелл:
Запускаем бинарник через
с указанием ссылки и строки
:
Получаем шелл от лица суперпользователя:
Друзья, спасибо большое, что нашли время прочитать мой райтап. Если есть какие-то ошибки, то напишите об этом в комментариях