Sicherheitslücke im WP-Slimstat 3.9.5 Plugin für WordPress

Ursprünglicher Autor: Marc-Alexandre Montpas
  • Übersetzung


Benutzer des WP-Slimstat-Plugins Version 3.9.5 und niedriger sollten so schnell wie möglich ein Upgrade durchführen! Bei der nächsten Sicherheitsüberprüfung haben wir einen Sicherheitsfehler entdeckt, aufgrund dessen ein Angreifer den „geheimen“ Schlüssel des Plug-Ins erhalten und dadurch eine SQL-Injection durchführen konnte.

Eine erfolgreiche Implementierung dieses Fehlers kann zu blinden SQL-Injection-Angriffen führen, die es einem Angreifer ermöglichen, Daten aus der Datenbank abzurufen, einschließlich Benutzername, Kennwort-Hash und in einigen Konfigurationen geheime WordPress-Schlüssel (voll) Kontrolle über die Website).

WP-Slimstat verwendet einen "geheimen" Schlüssel, um die vom / zum Client übertragenen Daten zu signieren. Nachdem wir uns angesehen haben, wie dieser Schlüssel generiert wird, können wir daraus schließen, dass es für einen Angreifer nicht schwierig sein wird, ihn zu erkennen:


Der Hash seit der Installation des Plugins wird als "geheimer" Schlüssel verwendet. Ein Angreifer kann Websites wie z. B. Internet Archive verwenden , um den ungefähren Zeitpunkt für die Erstellung der Website zu ermitteln (danach gibt es ungefähr 30 Millionen Werte, um zu überprüfen, ob es für moderne CPUs ungefähr 10 Minuten dauert).

Um Brute Force ausführen zu können, müssen Sie nur gültige und signierte Daten vom Plugin erhalten. Sie können leicht in verschiedenen Fragmenten der generierten Webseiten gefunden werden:


Auf den ersten Blick mag dies kompliziert erscheinen, aber wenn Sie sich ansehen, wie diese Datenstruktur im Plugin verwendet wird, können Sie auf einfache Weise Daten signieren und eine zusammengesetzte Zeile aus Nutzdaten und "Geheimnis" hashen. »Token:


Wenn ein Angreifer diese Informationen kennt, kann er Zeitstempel erzwingen, bis er dieselbe Signatur wie die angegriffene Site erhält.

Während der Untersuchung konnten wir feststellen, dass wir beim Aufruf von unserialize () beliebige Daten übertragen können, die später über die Variable $ content_info an die Methode maybe_insert_row () übergeben werden :




Da wir $ _data steuern , können wir ihr ein assoziatives Array hinzufügen deren Indizes SQL-Ausdrücke sind, zum Beispiel:
array(“1=sleep(100)–“=>”1″)

Diese Fähigkeit, alle Anforderungen zu erfüllen, ermöglicht es einem Angreifer, alle Daten aus der Datenbank abzurufen. Dies ist eine gefährliche Sicherheitslücke und Sie sollten das Plugin so schnell wie möglich aktualisieren.

Jetzt auch beliebt: