Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
CVE-2026-44401 — Persistentes XSS in Typemill CMS: Der Markdown-Parser lässt javascript:-URIs ungefiltert durch. Writeup + PoC. | Kitploit
Tools/GitHubGitHub/sn0x-sharma/cve-2026-44401
SchwachstellenanalyseExploitationWebanwendungs-ExploitationWebsicherheitPenetrationstestsLernen & Bildung
GitHubsn0x-sharma/cve-2026-44401

CVE-2026-44401

Persistentes XSS in Typemill CMS: Der Markdown-Parser lässt javascript:-URIs ungefiltert durch. Writeup + PoC.

Repository anzeigen
24vor 1 MonatNoch nicht geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen
ChatGPT Image Aug 11, 2026, 02_18_30 PM
CVECVE-2026-44401
CWECWE-79 (Improper Neutralization of Input During Web Page Generation)
Betroffentypemill/typemill >= 2.0.0, < 2.23.0
Behoben inv2.23.0 (Commit 31b72ea)
Authentifizierung erforderlichJa, jede Rolle mit system:update-ACL-Rechten (standardmäßig Admin oder Manager)
CVSS (Melder)7.6 / Mittel-Hoch
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
Meldersn0x (@sn0x-sharma)
SicherheitshinweisVulnCheck

Die Bewertung ist Mittel und nicht Kritisch, weil sie PR:H (Theme-Konfigurationsrechte) + UI:A (ein Opfer muss auf den Link klicken) erfordert — aber das Payload ist gespeichert, daher wird es bei jedem Besucher ausgelöst, der darauf klickt.

Zusammenfassung

Typemill ist ein Flat-File-Markdown-CMS. Sein Markdown-Parser validiert das URI-Schema von Linkzielen nicht, bevor er sie in ein href-Attribut schreibt. Ein Benutzer mit Zugriff auf die Theme-Konfiguration (z. B. das Textfeld Landingpage Intro Segment, das rohes Markdown akzeptiert) kann einen javascript:-Link speichern. Dieser wird auf der öffentlichen Startseite nicht maskiert gerendert und führt bei jedem Besucher, der darauf klickt, persistentes (gespeichertes) XSS aus.

Grundursache

ParsedownExtension::inlineLink() — system/typemill/Extensions/ParsedownExtension.php, Zeilen 934–996 (v2.22.0, letztes verwundbares Tag).

Relative und media/-Links erhalten ein Basis-URL-Präfix, aber nichts prüft das URI-Schema, bevor es href zugewiesen wird:

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>.

Rendering-Pfad für diese spezifische Senke: themes/cyanine/home/landingpageIntro.twig → TwigMarkdownExtension.php → ParsedownExtension.php. Jedes andere Theme-Feld, das Benutzer-Markdown durch denselben Parser laufen lässt, ist gleichermaßen betroffen.

Die Behebung (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;

Dieselbe Whitelist (http, https, mailto, ftp) wurde im ursprünglichen Bericht vorgeschlagen. Bestätigt durch einen Vergleich von ParsedownExtension.php zwischen den Tags v2.22.0 und v2.23.0.

Hinweis zu Berechtigungen

Die Theme-Einstellungsrouten (GET /tm/themes, POST /api/v1/theme) sind an die ACL-Ressource system/update gebunden — laut Typemills eigenen Routendefinitionen (routes/web.php, routes/api.php) wird diese standardmäßig der Rolle Manager gewährt, nicht nur dem Admin. Die Gefährdung ist also nicht auf das Administrator-Konto der obersten Ebene beschränkt.

Schritte zur Reproduktion

  1. Melden Sie sich als Benutzer mit Zugriff auf die Theme-Konfiguration an → System → Themes → Konfigurieren (aktives Theme, z. B. Cyanine).

    image
  2. Erweitern Sie Landingpage Intro Segment → geben Sie in "Text für Ihre Landingpage-Einführung (Markdown verwenden)" Folgendes ein:

    root@kitploit:~
    [Click me](javascript:alert(document.domain))
    
    image
  3. Speichern. Rufen Sie die Startseite als beliebiger Benutzer auf und klicken Sie auf den Link → JS wird in der Sitzung dieses Besuchers ausgeführt.

    image

Proof of Concept

CVE-2026-44401_POC.py – zwei Modi:

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 '********'

Minimales manuelles Repro (womit der Bericht verifiziert wurde):

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>

Auswirkungen

  • Hijacking von Admin-/Manager-Sitzungen (Cookie-Diebstahl)
  • Diebstahl von Anmeldedaten durch injizierte Formulare/Weiterleitungen
  • Verkettung zu weiteren authentifizierten Aktionen als Opfer

Referenzen

  • Typemill-Repository
  • Behobene Version — v2.23.0
  • VulnCheck-Sicherheitshinweis
Tool herunterladen