- Регистрация
- 3 Фев 2025
- Сообщения
- 58
- Реакции
- 12
Введение
Приветствую вас, дорогие читатели! Сегодня мы погрузимся в мир веб-безопасности и рассмотрим одну из наиболее критических уязвимостей — произвольную загрузку файлов, которая может привести к удаленному выполнению кода (RCE). Эта уязвимость представляет серьезную угрозу для безопасности системы, и я хочу поделиться с вами своим опытом ее обнаружения и эксплуатации.1) Изучите структуру запросов:
Внимательно изучите структуру HTTP-запросов, отправляемых при загрузке файлов на сервер.
Обратите внимание на заголовки запросов, особенно на тип содержимого (Content-Type), где указывается многокомпонентный тип (multipart/form-data), который позволяет загружать файлы.
2) Понимание точек входа:
Исследуйте точки входа, через которые пользователь может загружать файлы на сервер. В данном случае это файлы ExAddProduct.php и ExChangePicture.php. Поймите, каких параметров они ожидают и какие файлы они обрабатывают.
3) Внедрение исполняемого кода:
Используя понимание структуры запросов и точек входа, внедрите исполняемый код в загружаемый файл. В данном случае это файлы ProductImage и Image. Обратите внимание на местоположение файла после загрузки и используйте соответствующий URL, чтобы выполнить код на сервере и получить удаленный доступ к системе.
Первоначальная разведка
Сканирование Nmap
Для начала я провел сканирование целевого веб-сайта с помощью Nmap, чтобы получить представление о его структуре и открытых портах:
Код:
Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-08-25 08:10 EDT
Nmap scan report for shop.edu.stf (10.124.1.238)
Host is up (0.019s latency).
Not shown: 65532 closed tcp ports (conn-refused)
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 8.4p1 Debian 5+deb11u2 (protocol 2.0)
80/tcp open http Apache httpd 2.4.56 ((Debian))
1720/tcp open h323q931?
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel
Исследование директорий
Далее я обратил внимание на директорию "Execute", которая содержала множество интересных файлов:
Код:
500 GET 0l 0w 0c http://10.124.1.238/Execute/ExActivateAgent.php
200 GET 6l 10w 90c http://10.124.1.238/Execute/ExAddProduct.php
200 GET 6l 5w 120c http://10.124.1.238/Execute/ExAddBranche.php
...
Обнаружение и эксплуатация уязвимости
Теперь давайте перейдем к самой интересной части — эксплуатации уязвимости.
1. При попытке войти на сайт я заметил, что после ввода данных запрос преобразовывался в
Вы должны быть зарегистрированы для просмотра ссылок
. Это вызвало у меня подозрения.2. Я решил заменить расширение на .php
Вы должны быть зарегистрированы для просмотра ссылок
и обнаружил рабочую форму входа.3. Внимательно изучив исходный код страницы, я заметил слабую проверку учетных данных. Я смог войти на сайт, указав следующие символы ; : ;в полях логина и пароля.
4. После успешной аутентификации я нашел страницу профиля пользователя:
Вы должны быть зарегистрированы для просмотра ссылок
5. На этой странице была форма для загрузки изображения профиля, которая оказалась уязвимой к атаке произвольной загрузки файлов.Подготовка и проведение атаки
Теперь давайте пройдемся по шагам атаки:
1. Я создал вредоносный PHP-файл (например, rev2.php).
2. Загружая файл через форму обновления изображения профиля, я проверил успешность загрузки по адресу:
Вы должны быть зарегистрированы для просмотра ссылок
.3. После этого я выполнил загруженный скрипт для получения доступа к системе.
Подтверждение успешной эксплуатации
Для подтверждения успешной эксплуатации и получения флага я использовал следующий URL:
Вы должны быть зарегистрированы для просмотра ссылок
Этот запрос позволил мне выполнить загруженный скрипт и получить содержимое файла с флагом, что подтвердило успешное удаленное выполнение кода на сервере.
Заключение
Как вы видите, данная уязвимость демонстрирует серьезные проблемы безопасности, связанные с недостаточной валидацией загружаемых файлов. Я настоятельно рекомендую вам обратить внимание на эти аспекты безопасности в ваших собственных приложениях.Надеюсь, что эта информация была полезной для вас! Если у вас есть вопросы или вы хотите обсудить детали, не стесняйтесь обращаться!
Последнее редактирование: