Heim >CMS-Tutorial >WordDrücken Sie >Hat WordPress Schwachstellen?
Laut dem offiziellen CVE-Schwachstellenbericht haben wir erfahren, dass WordPress eine neue kombinierte RCE-Schwachstelle aufweist. Die Schwachstellennummern lauten CVE-2019-8943 und CVE-2019-8942. Laden Sie die Quelle herunter Code der Schwachstellenversion analysieren und den Schwachstellenauslöserprozess analysieren. Wenn die Schwachstelle erneut auftritt, muss WordPress das Codepaket automatisch aktualisieren, wenn es mit dem Internet verbunden ist. Suchen Sie die Datei post.php, in der die Sicherheitslücke auftritt. Hier finden Sie eine kurze Erklärung ihrer jeweiligen Funktionen, und wp-admin/includes/. post.php verfügt über die zulässige Post-Schnittstelle, wp-admin/post.php dient zur Verarbeitung von Post-Anfragen im Hintergrund. Der spezifische Aufrufcode lautet wie folgt:
wp-admin/post.php:require_once( dirname( __FILE__ ) . '/admin.php' ); wp-admin/admin.php:require_once(ABSPATH . 'wp-admin/includes/admin.php'); wp-admin/includes/admin.php:require_once(ABSPATH . 'wp-admin/includes/post.php'); wp-admin/admin.php::require_once(dirname(dirname(__FILE__)) . '/wp-load.php'); wp-load.php:require_once( dirname( ABSPATH ) . '/wp-config.php' ); wp-config.php:require_once(ABSPATH . 'wp-settings.php'); wp-settings.php:require( ABSPATH . WPINC . '/post.php' ); define( 'WPINC', 'wp-includes' );
Gemäß dem oben genannten Aufrufprozess wird die Sicherheitslücke ausgenutzt Der Vorgang besteht darin, ein Bild in die Medienbibliothek hochzuladen und es dann zu aktualisieren. Rufen Sie zum Betrieb die Funktion wp-admin/post.php auf und wechseln Sie zu case:editpost, wie in der Abbildung unten gezeigt:
wobei edit_post die Schwachstellenfunktion ist, geben Sie die Funktionsdeklaration ein, wie in der Abbildung unten gezeigt:
$post_data ist ein Post-Array ohne Filterschutz, der nachfolgende Schwachstellen verursachte. Vergleichen Sie den reparierten Code, wie in der Abbildung unten gezeigt:
Ich möchte noch ein paar Worte sagen, weil ich es nicht getan habe Ich habe festgestellt, dass WordPress zu Beginn automatisch aktualisiert wird, daher habe ich eine weitere ähnliche Schwachstelle gefunden, wie in der Abbildung unten gezeigt:
Der obige Code wird update_meta basierend auf dem eingehenden Meta-Array. Entsprechend dem $key (meta_id in der Datenbank) im Code, $value['key'] (meta_key in der Datenbank), $value['value'] (meta_value in der Datenbank). , konstruieren Sie meta[1][key]=_wp_attached_file&meta[1][value]=123 und führen Sie schließlich eine Datenbankanweisung ähnlich der folgenden aus: UPDATE `wp_postmeta` SET `meta_key` = '_wp_attached_file', `meta_value` = '123' WHERE `meta_id` = 2, der Implementierungsprozess ist wie in der folgenden Abbildung dargestellt:
Verwandte Empfehlung: „WordPress Tutorial“
Aktualisieren Sie den Inhalt in der wp_postmeta-Tabelle gemäß meta_id und führen Sie schließlich die Funktion do_action aus, wie in der folgenden Abbildung gezeigt:
Aufgrund der Einschränkungen von Drittens und viertens, wenn die Ausführung nicht erfolgreich sein kann, ist dies auch ein interessanter Punkt beim Wiederauftreten der Sicherheitslücke, wie in der folgenden Abbildung dargestellt: Suchen Sie den ausnutzbaren Punkt und geben Sie die Funktion wp_updae_post ein, wie im folgenden Code gezeigt:
Diese Funktion durchläuft einige Erfassungsparameter. Operation: Extrahieren Sie die Variablen im Array Weisen Sie Werte zu und verfolgen Sie die Schwachstelle bis zum Auftreten, wie in der folgenden Abbildung dargestellt:
Es wurde festgestellt, dass die Funktion wp_insert_attachment zurückgegeben wird. Verfolgen Sie diese Funktion wie folgt Wie im Bild gezeigt:
Kehren Sie zur Funktion wp_insert_post zurück, verfolgen Sie diese Funktion und suchen Sie den Auftretenspunkt der Sicherheitslücke in dieser Funktion, wie in der folgenden Abbildung dargestellt:
Basierend auf den oben genannten Schwachstellen können Sie also meta_input[_wp_attached_file] =../evil.jpg?shell.php übergeben und die SQL-Anweisung UPDATE „wp_postmeta“ ausführen SET `meta_value` = '../evil .jpg?shell.php ' WHERE `post_id` = 8 AND `meta_key` = '_wp_attached_file' Als Voraussetzung für Testbedingungen muss jedoch bekannt sein. Dieser Parameter wird beim Aktualisieren von Bildern einbezogen. Wenn es sich um einen Test handelt, können Sie ihn in der Datenbank ausfüllen. Die spezifische Ausführungsmethode für die Verschachtelung von SQL-Anweisungen ist in der folgenden Abbildung dargestellt:
Durch Übergabe von Parametern, Zuweisen von Werten zu den entsprechenden Tabellennamen und Spaltennamen und schließlich Ausführen der Funktion do_action, wie unten gezeigt:
Beheben Sie hier die Schwachstelle beim Durchlaufen des WordPress-Verzeichnisses und nutzen Sie dann die Schwachstelle beim Einschließen lokaler Dateien, um rce auszuführen. WordPress verwendet offiziell Bildbibliotheken für GD und Imagick, wie in der folgenden Abbildung dargestellt:
Unter anderem ist Imagick nicht in WordPress enthalten und erfordert das Herunterladen eines Plug-Ins, sodass Sie standardmäßig die Methode der Umgehung der GD-Bibliothek verwenden können, um beliebigen Code auszuführen.
Das obige ist der detaillierte Inhalt vonHat WordPress Schwachstellen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!