![]() |
https://forum.antichat.xyz/attachmen...4163585789.png
Всем привет ! Сегодня я разберу машину Jason на площадке TryHackMe. Уровень Easy, но это правильная тачка, с правильной багой, которая много чему научит. Сканирование. https://forum.antichat.xyz/attachmen...4164579220.png У нас есть два порта на которых висят ssh и веб сервер. Посетив нашу цель нас встречает сайт, с формой отправки email. Как только мы отправляем его , мы получаем ответ как на картинке. Так же мы наблюдаем что сайт построен с помощью Nodejs. https://forum.antichat.xyz/attachmen...4164849324.png Попробуем перехватить запрос в Burp и посмотреть какие ответы мы получаем: https://forum.antichat.xyz/attachmen...b7fbd08f5d.png При вводе в email мы получаем закодированный сеанс в base64. Если мы кинем это в декодер , то увидим следующее. https://forum.antichat.xyz/attachmen...4165470288.png Точка опоры. Мои запросы по типу node.js deserialization exploit , привели меня к CVE-2017-5941. Уязвимость позволяет злоумышленнику создать цепочку, используя механизм сериализации для исполнения произвольного кода при десериализации. Если приложение использует функции serialize и deserialize из node-serialize без должной проверки и фильтрации данных, злоумышленник может произвести инъекцию кода через специально подготовленные данные. Немого ликбеза: Сериализация — это процесс преобразования объекта (например, данных или структуры) в формат, который можно сохранить (например, в файл) или передать по сети. Десериализация — это обратный процесс, когда данные восстанавливаются из сохраненного или переданного формата обратно в объект. Эти процессы используются для передачи объектов между разными системами или сохранения их состояния. Вот пример node.js приложение для имитации кода: Значение cookie, полученное из запроса, было передано в unserialize() функцию, предоставляемую модулем. JavaScript: Код:
varПередача ее в unserialize() функцию приведет к выполнению кода. JavaScript: Код:
varhttps://forum.antichat.xyz/attachmen...4228975928.png И получив их на выходе : https://forum.antichat.xyz/attachmen...4229061771.png Теперь мы знаем, что можем использовать unserialize() функцию в модуле node-serialize, если в него передаются ненадежные данные. Давайте воспользуемся уязвимостью в веб-приложении, чтобы создать обратную оболочку. Создание полезной нагрузки https://forum.antichat.xyz/attachmen...4251507014.png Теперь осталось закодировать нашу нагрузку в base64: https://forum.antichat.xyz/attachmen...4248242761.png После обновляем страницу и просто меняем текущий сеанс на свой, который мы закодировали. Так же прослушиваем порт который мы указали в полезной нагрузке: https://forum.antichat.xyz/attachmen...36f9720377.png Мы получили наш первый флаг. Privilege escalation. Проверяем наши возможности: https://forum.antichat.xyz/attachmen...4248760928.png Вообщем dylan может запускать npm от sudo без ввода пароля. Обратимся к Gitfobins. Это действительно что нам нужно. https://forum.antichat.xyz/attachmen...4249173021.png Таким образом, эта команда создает временный каталог, так же она создает в нем файл package.json, а затем выполняет npm install с правами суперпользователя. При этом используется флаг --unsafe-perm, который позволяет выполнять установочные скрипты с повышенными правами. В итоге это может привести к запуску оболочки /bin/sh, от суперпользователя. https://forum.antichat.xyz/attachmen...4249569356.png Заключение: Важно тщательно проверять и фильтровать входящие данные перед их десериализацией. Небезопасная десериализация может привести к выполнению произвольного кода, а также к утечке конфиденциальной информации и другим критическим последствиям. Итоги: В целом машина мне понравилась, в жизни такое редко встретишь, но понимание как работает данная уязвимость дает только плюс в копилку для пентестера. Спасибо всем за внимание. Я надеюсь предоставленный материал был полезен и интересен для вас. Если у вас возникли вопросы или предложения не стесняйтесь делиться ими в комментариях. Ваши мысли и идеи всегда приветствуются. |
| Время: 05:30 |