Введение
Спойлер: Никаких настоящих фоток тут нет! Но есть кое-что погорячее — код, который заставит любого админа вспотеть. Наша "клубничка" — это сочный PHP-скрипт, который проникает в самые интимные уголки сервера. Осторожно, после прочтения вы никогда не будете смотреть на загрузку файлов как прежде! Администраторам и людям со слабой психикой настоятельно рекомендуется продолжить чтение — ведь лучше узнать об этом здесь, чем от хакеров!
Приветствую вас, дорогие читатели! Сегодня мы погрузимся в мир веб-безопасности и рассмотрим одну из наиболее критических уязвимостей — произвольную загрузку файлов, которая может привести к удаленному выполнению кода (RCE). Эта уязвимость представляет серьезную угрозу для безопасности системы, и я хочу поделиться с вами своим опытом ее обнаружения и эксплуатации.
HINTS
hint 1
Изучите структуру запросов:
Внимательно изучите структуру HTTP-запросов, отправляемых при загрузке файлов на сервер.
Обратите внимание на заголовки запросов, особенно на тип содержимого (Content-Type), где указывается многокомпонентный тип (multipart/form-data), который позволяет загружать файлы.
hint 2
Понимание точек входа:
Исследуйте точки входа, через которые пользователь может загружать файлы на сервер. В данном случае это файлы ExAddProduct.php и ExChangePicture.php. Поймите, каких параметров они ожидают и какие файлы они обрабатывают.
hint3
Внедрение исполняемого кода:
Используя понимание структуры запросов и точек входа, внедрите исполняемый код в загружаемый файл. В данном случае это файлы ProductImage и Image. Обратите внимание на местоположение файла после загрузки и используйте соответствующий URL, чтобы выполнить код на сервере и получить удаленный доступ к системе.
Если совсем тяжело, изучите POC:
Изучите структуру запросов:
Внимательно изучите структуру HTTP-запросов, отправляемых при загрузке файлов на сервер.
Обратите внимание на заголовки запросов, особенно на тип содержимого (Content-Type), где указывается многокомпонентный тип (multipart/form-data), который позволяет загружать файлы.
hint 2
Понимание точек входа:
Исследуйте точки входа, через которые пользователь может загружать файлы на сервер. В данном случае это файлы ExAddProduct.php и ExChangePicture.php. Поймите, каких параметров они ожидают и какие файлы они обрабатывают.
hint3
Внедрение исполняемого кода:
Используя понимание структуры запросов и точек входа, внедрите исполняемый код в загружаемый файл. В данном случае это файлы ProductImage и Image. Обратите внимание на местоположение файла после загрузки и используйте соответствующий URL, чтобы выполнить код на сервере и получить удаленный доступ к системе.
Если совсем тяжело, изучите POC:
Ссылка скрыта от гостей
Первоначальная разведка
Сканирование 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. При попытке войти на сайт я заметил, что после ввода данных запрос преобразовывался в
http://shop.edu.stf/index.html?
. Это вызвало у меня подозрения.2. Я решил заменить расширение на
.php
(http://shop.edu.stf/index.php
) и обнаружил рабочую форму входа.3. Внимательно изучив исходный код страницы, я заметил слабую проверку учетных данных. Я смог войти на сайт, указав следующие символы
;
: ;
в полях логина и пароля.4. После успешной аутентификации я нашел страницу профиля пользователя:
http://shop.edu.stf/UserProfile.php?%20id=
5. На этой странице была форма для загрузки изображения профиля, которая оказалась уязвимой к атаке произвольной загрузки файлов.
Подготовка и проведение атаки
Переходим на
Ссылка скрыта от гостей
и берем второй POC.Теперь давайте пройдемся по шагам атаки:
1. Я создал вредоносный PHP-файл (например,
rev2.php
).2. Загружая файл через форму обновления изображения профиля, я проверил успешность загрузки по адресу:
http://shop.edu.stf/assets/img/Profile_Uploaded/
.3. После этого я выполнил загруженный скрипт для получения доступа к системе.
Подтверждение успешной эксплуатации
Для подтверждения успешной эксплуатации и получения флага я использовал следующий URL:
http://shop.edu.stf/assets/img/Profile_Uploaded/rev2.php?rev=/home/rceflag
Этот запрос позволил мне выполнить загруженный скрипт и получить содержимое файла с флагом, что подтвердило успешное удаленное выполнение кода на сервере.
Заключение
Как вы видите, данная уязвимость демонстрирует серьезные проблемы безопасности, связанные с недостаточной валидацией загружаемых файлов. Я настоятельно рекомендую вам обратить внимание на эти аспекты безопасности в ваших собственных приложениях.
Надеюсь, что эта информация была полезной для вас! Если у вас есть вопросы или вы хотите обсудить детали, не стесняйтесь обращаться!