Заметка Те самые фотки с сервера (18+). Standoff CTF [web-4] Удаленное выполнение кода (RCE) на узле shop.edu.stf

Темы, которые НЕ подходят по объему под префикс "Статья"
10 — web4.png

Введение​

Спойлер: Никаких настоящих фоток тут нет! Но есть кое-что погорячее — код, который заставит любого админа вспотеть. Наша "клубничка" — это сочный PHP-скрипт, который проникает в самые интимные уголки сервера. Осторожно, после прочтения вы никогда не будете смотреть на загрузку файлов как прежде! Администраторам и людям со слабой психикой настоятельно рекомендуется продолжить чтение — ведь лучше узнать об этом здесь, чем от хакеров!

Приветствую вас, дорогие читатели! Сегодня мы погрузимся в мир веб-безопасности и рассмотрим одну из наиболее критических уязвимостей — произвольную загрузку файлов, которая может привести к удаленному выполнению кода (RCE). Эта уязвимость представляет серьезную угрозу для безопасности системы, и я хочу поделиться с вами своим опытом ее обнаружения и эксплуатации.

HINTS​

hint 1
Изучите структуру запросов:
Внимательно изучите структуру 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=

photo_2024-09-16_20-03-35.jpg


5. На этой странице была форма для загрузки изображения профиля, которая оказалась уязвимой к атаке произвольной загрузки файлов.

Подготовка и проведение атаки​


Переходим на и берем второй POC.

Теперь давайте пройдемся по шагам атаки:

1. Я создал вредоносный PHP-файл (например, rev2.php).

photo_2024-09-16_20-03-31.jpg


2. Загружая файл через форму обновления изображения профиля, я проверил успешность загрузки по адресу: http://shop.edu.stf/assets/img/Profile_Uploaded/ .

3. После этого я выполнил загруженный скрипт для получения доступа к системе.

Подтверждение успешной эксплуатации​


Для подтверждения успешной эксплуатации и получения флага я использовал следующий URL:

http://shop.edu.stf/assets/img/Profile_Uploaded/rev2.php?rev=/home/rceflag

Этот запрос позволил мне выполнить загруженный скрипт и получить содержимое файла с флагом, что подтвердило успешное удаленное выполнение кода на сервере.


Заключение​


Как вы видите, данная уязвимость демонстрирует серьезные проблемы безопасности, связанные с недостаточной валидацией загружаемых файлов. Я настоятельно рекомендую вам обратить внимание на эти аспекты безопасности в ваших собственных приложениях.

Надеюсь, что эта информация была полезной для вас! Если у вас есть вопросы или вы хотите обсудить детали, не стесняйтесь обращаться!

Автор: Nebty
alex122303q@gmail.com

Соавтор: Archivist
vasya.kotov.8080@mail.ru
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!