Sicherheitslücke im Plugin All in One SEO Pack

XSS Sicherheitslücke im Plugin All in One SEO Pack

Das Plugin All in One SEO Pack ist in über 2 Millionen WordPress Webseiten installiert und die Lücke betrifft die Plugin Versionen kleiner als 3.6.2. Eingeloggte Benutzer mit der Berechtigung Beiträge zu verfassen hatten die Möglichkeit Javascript ungefiltert einzufügen. Dieses wurde dann in der Übersicht Dashboard -> “Alle Beiträge anzeigen” ausgeführt. Damit ließ sich ein XSS Cross-Site-Scripting Angriff über den Browser eines Administrators mit vollen Zugriffsrechten ausführen. Das Plugin-Update wurde am 15. Juli 2020 veröffentlicht und sollte umgehend installiert werden.

Leider hatten die Felder für die SEO-Metadaten SEO-Titel und SEO-Beschreibung von Beiträgen keine Filterung der Benutzereingabe. Damit hatten Autoren die Möglichkeit in diese Felder HTML oder Javascript Code einzufügen, der dann in der Beitragsübersicht ausgeführt wurde:

/**
 * Saves the data of our metabox settings for a post.
 *
 * @since   ?
 * @since   3.4.0   Added support for priority/frequency + minor refactoring.
 *
 * @param   int     $id     The ID of the post.
 * @return  bool            Returns false if there is no POST data.
 */
function save_post_data( $id ) {
    $awmp_edit = null;
    $nonce     = null;
 
    if ( empty( $_POST ) ) {
        return false;
    }
 
    if ( isset( $_POST['aiosp_edit'] ) ) {
        $awmp_edit = $_POST['aiosp_edit'];
    }
 
    if ( isset( $_POST['nonce-aioseop-edit'] ) ) {
        $nonce = $_POST['nonce-aioseop-edit'];
    }
 
    if ( isset( $awmp_edit ) && ! empty( $awmp_edit ) && wp_verify_nonce( $nonce, 'edit-aioseop-nonce' ) ) {
 
        $optlist = array(
            'keywords',
            'description',
            'title',
            'custom_link',
            'sitemap_exclude',
            'disable',
            'disable_analytics',
            'noindex',
            'nofollow',
            'sitemap_priority',
            'sitemap_frequency',
        );
 
        if ( empty( $this->options['aiosp_can'] ) ) {
            unset( $optlist['custom_link'] );
        }
 
        if ( ! AIOSEOPPRO ) {
            $optlist = array_diff( $optlist, array( 'sitemap_priority', 'sitemap_frequency' ) );
        }
 
        foreach ( $optlist as $optionName ) {
            $value = isset( $_POST[ "aiosp_$optionName" ] ) ? $_POST[ "aiosp_$optionName" ] : '';
            update_post_meta( $id, "_aioseop_$optionName", $value );
        }
    }
}

Jedes Javascript konnte ausgeführt werden wenn der Autor in dieses Meta-Feld vor seinem Code ein schließendes Javascript-Tag einfügte:

</script><script>alert('Test')</script>

In diesem Beispiel wäre ein Benachrichtigungs-Popup mit dem Text-Inhalt “Test” aufgegangen. Das ist ein klassischer Weg um unsanierte Benutzereingaben für Cross-Site-Scripting Angriffe zu nutzen und kann dazu benutzt werden Beiträge freizuschalten, aber auch um Backdoors zu installieren oder Administratorkonten anzulegen.

WordPress Support in 75233 Tiefenbronn

15 Jahre Erfahrung mit WordPress

 

Seit WordPress 1.2 (Mai 2004).

Hilfe bei Fehlern oder Problemen mit WordPress, Plugins, Themes, Widgets, Snippets und vielem mehr!

Du hast in Tom einen kompetenten Web-Developer mit umfangreichen Programmierkenntnissen als Ansprechpartner.

Tom hilft Dir schnell und unkompliziert!

Klicke auf das Chat-Symbol unten rechts oder hinterlasse eine Nachricht über das unten stehende Formular.

Sende Tom eine Email und er meldet sich bald möglichst

Versuche Dein Anliegen konkret zu beschreiben:


    * Pflichtfelder

    Telefonischer WordPress Support

    Tom im Büro anrufen unter:

    Telefon: +49 (0)7961 / 564237

    (Festnetz; Kosten abhängig von Deinem Tarif)

    Tom ist nicht immer telefonisch zu erreichen. Sende in dem Fall Deine Telefonnummer über das Kontaktformular .