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-2025-14855-POC — SureForms <= 2.2.0 - Nicht authentifiziertes gespeichertes Cross-Site Scripting | Kitploit
Tools/GitHubGitHub/ch4r0nn/cve-2025-14855-poc
SchwachstellenanalyseExploitationWebanwendungs-ExploitationWebsicherheitPenetrationstestsPayload-Entwicklung
GitHubch4r0nn/cve-2025-14855-poc

CVE-2025-14855-POC

SureForms <= 2.2.0 - Nicht authentifiziertes gespeichertes Cross-Site Scripting

Repository anzeigen
212vor 7 MonatenNoch 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

CVE-2025-14855: SureForms WordPress Plugin Stored XSS Proof of Concept

  • Ziel: WordPress Plugin "SureForms"
  • Plugin WordPress: https://wordpress.org/plugins/sureforms/
  • Schwachstellentyp: Stored Cross-Site Scripting (XSS)
  • CVE: CVE-2025-14855
  • Referenz: https://www.wordfence.com/threat-intel/vulnerabilities/wordpress-plugins/sureforms/sureforms-220-unauthenticated-stored-cross-site-scripting
  • Authentifizierung: Nicht authentifiziert (Gast/Öffentlich)
  • Auswirkung: Remote Code Execution (RCE) via Admin Session Hijacking
  • Entdeckt von: https://nguyentiendung1006.wixsite.com/tiendung

1. Zusammenfassung

Eine kritische Stored XSS-Schwachstelle existiert im SureForms-Plugin. Die Schwachstelle beruht auf einer unsicheren clientseitigen Implementierung in entries.js, bei der Benutzereingaben programmatisch decodiert (was die serverseitige Bereinigung rückgängig macht) und dann ohne ordnungsgemäße clientseitige Bereinigung mithilfe von dangerouslySetInnerHTML gerendert werden. Dies ermöglicht es nicht authentifizierten Angreifern, schädliche JavaScript-Payloads über Standardformularfelder einzuschleusen und dabei die standardmäßigen WordPress--Filter zu umgehen.

wp_kses

2. Versionsidentifikation

Um zu überprüfen, ob eine Zielseite SureForms ausführt, überprüfen Sie den Header der Sprachdatei, der normalerweise die Versionsnummer enthält.

Ziel-URL: http://target-site.com/wp-content/plugins/sureforms/languages/sureforms.pot

Verifizierungsbefehl:

root@kitploit:~
curl -s "http://target-site.com/wp-content/plugins/sureforms/languages/sureforms.pot" | grep "Project-Id-Version"

3. Reverse Engineering & Ursachenanalyse

Die Schwachstelle befindet sich in der React-basierten Admin-Oberfläche zum Anzeigen von Formulareinträgen (entries.js).

3.1. Die "Auto-Decoder"-Logik (Der Bypass)

In der minifizierten entries.js-Datei gibt es eine Hilfsfunktion (im analysierten Build als Xv identifiziert), die HTML-Entities verarbeiten soll.

Code-Logik (Rekonstruiert):

root@kitploit:~
// Funktion Xv: Vorverarbeitung von Feldwerten
var Xv = function(input) {
    var value = input.value;
    
    // SCHWACHSTELLENURSACHE:
    // Wenn der String HTML-Entities enthält (z. B. &lt;), wird ein textarea erstellt,
    // der Inhalt eingefügt und der Wert extrahiert.
    // Dadurch werden HTML-Entities effektiv zurück in rohe HTML-Tags decodiert.
    // Beispiel: "&lt;img ...&gt;" wird zu ""
    
    if (typeof value === "string" && value.match(/&[a-zA-Z0-9#]+;/)) {
        var textarea = document.createElement("textarea");
        textarea.innerHTML = value;
        
        // Logik zum Rückgängigmachen der Bereinigung
        if (textarea.value.includes("&lt;") || textarea.value.includes("&gt;")) {
             value = textarea.value; // Enthält nun ROHES HTML
        }
    }
    return { ...input, value: value };
}

Analyse: Diese Funktion macht die Backend-Sicherheit zunichte. Selbst wenn WordPress <script> korrekt als &lt;script&gt; in der Datenbank speichert, wandelt diese Funktion es sofort wieder in <script> um, nachdem es von der API abgerufen wurde.

3.2. Die gefährliche Senke

Nach der Decodierung werden die Daten an die Rendering-Komponente (als Jv identifiziert) übergeben.

Code-Logik (Rekonstruiert):

root@kitploit:~
// Funktion Jv: Rendern des Feldes
var Jv = function(props) {
    var field = props.field;
    var val = field.value; // Dieser Wert ist jetzt rohes HTML (nach Decodierung)

    // DER AUSLÖSER: Prüfen, ob der String wie HTML aussieht
    if (typeof val === "string" && val.match(/<[^>]+>/g)) {
        // DIE SENKE: Rendern mit dangerouslySetInnerHTML OHNE clientseitige Bereinigung (z. B. DOMPurify)
        return React.createElement("span", {
            dangerouslySetInnerHTML: { __html: val }
        });
    }
    
    // Sicheres Rendern für Nicht-HTML-Text
    return React.createElement("span", null, val);
}

4. Angriffsablauf

  1. Injektion: Ein nicht authentifizierter Angreifer sendet ein Formular auf der Frontend-Seite. Anstatt rohe HTML-Tags zu verwenden (die vom WordPress-Backend entfernt/bereinigt würden), sendet der Angreifer HTML-Entities.

  2. Speicherung: WordPress betrachtet die Eingabe (z. B. &lt;img...) als sicheren Text und speichert sie in der Datenbank.

  3. Ausführung (Die Falle):

    • Der Administrator navigiert zu SureForms > Einträge.
    • Der Browser ruft die Eintragsdetails über die JSON-API ab.
    • Die Xv-Funktion erkennt die Entities und decodiert &lt;img... zurück zu ` Einträge.
  4. Klicken Sie auf den in Schritt 1 eingereichten Eintrag, um die Details anzuzeigen.

  5. Ergebnis: Der Browser führt die JavaScript-Payload (alert('XSS_SUREFORMS')) aus.

Tool herunterladen