Практическая лабораторная работа по исследованию CVE-2025-39507 с точки зрения аналитика SOC первого уровня. Включает анализ логов в Microsoft Sentinel, анализ IP-адресов, реальные скриншоты и простое объяснение уязвимости локального включения файлов в плагине WordPress.
Это обычный понедельник. Я вошел в панель управления SOC и просматриваю оповещения, как обычно. Одно из них привлекает мое внимание:
ОПОВЕЩЕНИЕ: Возможная попытка локального включения файла (LFI)
IP-адрес: 203.0.113.44
URL:/index.php?file=../../../../etc/passwd
User Agent: curl/7.81.0
Похоже, кто-то пытается получить доступ к системным файлам, манипулируя URL. Моя задача — разобраться в этом и решить, нужно ли эскалировать.
После быстрого исследования я обнаружил, что это соответствует известной уязвимости: CVE-2025-39507. Она затрагивает плагин WordPress под названием Nasa Core (версия 6.3.2 и ниже). Она позволяет злоумышленникам просматривать конфиденциальные файлы на сервере путем изменения параметра ввода файла.
Пример:
/index.php?file=../../../../etc/passwd
Если плагин не проверяет ввод файла должным образом, он просто перейдет по любому пути, который укажет злоумышленник.
Я не писал правило обнаружения, но я просмотрел его, чтобы понять, что вызвало оповещение. Оно ищет такие вещи, как:
/etc/passwd или /wp-config.phpВот упрощенная версия правила:
CommonSecurityLog
| where RequestURL has "../"
or RequestURL has "etc/passwd"
or RequestURL has "wp-config"
| where DeviceCustomString1 contains "curl" or DeviceCustomString1 contains "python"
| project TimeGenerated, SourceIP, RequestURL, DeviceCustomString1
Я выполнил запрос, чтобы узнать, не пытался ли IP 203.0.113.44 что-то еще:
CommonSecurityLog
| where SourceIP == "203.0.113.44"
| summarize count() by RequestURL
Оказалось, что он также обращался к другим путям, таким как /admin/, /login.php и /wp-config.php. Это говорило мне, что это был не разовый запрос... скорее всего, сканер или кто-то, проводящий разведку.
Я проверил, как долго IP был активен в наших логах:
CommonSecurityLog
| where SourceIP == "203.0.113.44"
| summarize FirstSeen=min(TimeGenerated), LastSeen=max(TimeGenerated)
Он начался несколько часов назад и все еще был активен недавно. Так что это был не исторический шум — это происходило в реальном времени.
Вот как я это задокументировал для эскалации:
“Возможное сканирование LFI с IP 203.0.113.44. Шаблон запроса соответствует CVE-2025-39507. IP обратился к 9 уникальным путям, включая /etc/passwd и wp-config.php, используя curl. Поведение указывает на автоматизированную разведку. Рекомендую проверку уровня 2 и возможную блокировку IP.”
| # | Описание | File |
|---|---|---|
| 1 | Листинг CVE (Patchstack) | 1_cve_selection_listing.png |
| 2 | Обзор Patchstack | 2_patchstack_cve_overview.png |
| 3 | Пример вектора VulDB | 3_vuldb_exploit_vector.png |
| 4 | Создана виртуальная машина Azure Kali | 4_kali_vm_deployed.png |
| 5 | Скриншот работающей ВМ | 5_kali_vm_running_status.png |
| 6 | SSH-доступ к Kali | 6_kali_vm_logged_in.png |
| 7 | Просмотр правила Sentinel KQL | 7_lfi_detection_kql_query.png |
Все скриншоты находятся в папке /screenshots.
Некоторые вопросы, которые я задавал себе в процессе работы:
Далее я запущу безопасную симуляцию этой атаки в контролируемой лабораторной среде с использованием платформы, такой как TryHackMe. Цель — лучше понять, как выглядит такая активность со стороны атакующего — и какие логи она создает.
P.S. Эта лаборатория проводилась в безопасной, этичной среде только для тренировочных целей. Никакие реальные системы не были атакованы или повреждены. Всегда следуйте правилам вашей организации и никогда не проверяйте эксплойты на системах, которые вам не принадлежат или на которые у вас нет разрешения.