Selon le rapport officiel sur la vulnérabilité CVE, nous avons appris que WordPress possède une nouvelle vulnérabilité rce combinée. Les numéros de vulnérabilité sont CVE-2019-8943 et CVE-2019-8942. code de la version de la vulnérabilité et analysez-le. Processus de déclenchement de la vulnérabilité, remarque : lorsque la vulnérabilité se reproduit, le réseau doit être déconnecté pour être construit. WordPress mettra automatiquement à jour le package de code lorsqu'il sera connecté à Internet. Recherchez le fichier post.php où la vulnérabilité se produit. WordPress possède plusieurs fichiers post.php. Voici une brève explication de leurs fonctions respectives. wp-includes/post.php est le fichier source de post, et wp-admin/includes/. post.php a l'interface de publication autorisée, wp-admin/post.php est destiné au traitement des demandes de publication en arrière-plan. Le code d'appel spécifique est le suivant :
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' );
Selon le processus d'appel ci-dessus, l'exploitation de la vulnérabilité. Le processus consiste à télécharger une image dans la médiathèque, puis à la mettre à jour. Pour fonctionner, appelez la fonction wp-admin/post.php et passez à case:editpost, comme indiqué dans la figure ci-dessous :
où edit_post est la fonction de vulnérabilité, entrez la déclaration de fonction, comme le montre la figure ci-dessous :
$post_data est un tableau post sans aucun protection de filtrage, qui a provoqué des vulnérabilités ultérieures. Comparez le code réparé, comme indiqué dans la figure ci-dessous Affichage :
Je voudrais dire quelques mots supplémentaires, car je ne l'ai pas fait. J'ai constaté que WordPress se mettra automatiquement à jour lorsqu'il sera connecté à Internet au début, j'ai donc localisé un autre point de vulnérabilité similaire, comme le montre la figure ci-dessous :
Le code ci-dessus sera. update_meta basé sur le méta-tableau entrant. Selon le $key (meta_id dans la base de données) dans le code, $value[' key'] (meta_key dans la base de données), $value['value'] (meta_value dans la base de données). , construisez meta[1][key]=_wp_attached_file&meta[1][value]=123, et enfin exécutez une instruction de base de données similaire à la suivante UPDATE `wp_postmeta` SET `meta_key` = '_wp_attached_file', `meta_value` = '123' OÙ `meta_id` = 2, le processus de mise en œuvre est tel qu'illustré dans la figure ci-dessous :
Recommandé connexe : "Tutoriel WordPress"
Mettez à jour le contenu de la table wp_postmeta selon meta_id, et enfin exécutez la fonction do_action, comme indiqué dans la figure ci-dessous :
Cependant, en raison des limitations du troisième et quatrième si, l'exécution ne peut pas réussir. C'est aussi un point intéressant dans la récurrence de la vulnérabilité, comme le montre la figure suivante :
. Trouvez le point exploitable et entrez la fonction wp_updae_post comme indiqué dans le code, comme indiqué dans la figure ci-dessous :
Cette fonction passera par certains paramètres d'acquisition Opération, extraire les variables dans le tableau et attribuez des valeurs, et tracez la vulnérabilité jusqu'au point d'occurrence, comme indiqué dans la figure ci-dessous :
Trouvé que la fonction wp_insert_attachment est renvoyée, tracez cette fonction , comme suit Comme indiqué dans l'image :
Revenez à la fonction wp_insert_post, suivez cette fonction et localisez le point d'occurrence de vulnérabilité dans cette fonction, comme indiqué dans la figure suivante :
Donc, sur la base des points de vulnérabilité ci-dessus, vous pouvez passer meta_input[_wp_attached_file] =../evil.jpg?shell.php, et exécuter l'instruction SQL UPDATE `wp_postmeta` SET `meta_value` = '../evil .jpg?shell.php ' WHERE `post_id` = 8 AND `meta_key` = '_wp_attached_file' Le post_id doit être connu comme condition préalable aux conditions de test. Dans des circonstances normales, ce paramètre sera inclus lors de la mise à jour des images. S'il s'agit d'un test, vous pouvez l'observer. Remplissez le contenu pertinent dans la base de données. La méthode d'exécution spécifique de l'imbrication des instructions SQL est présentée dans la figure ci-dessous :
En passant des paramètres, en attribuant des valeurs aux noms de table et de colonne correspondants, et enfin exécuter la fonction do_action, comme indiqué ci-dessous :
Complétez la vulnérabilité de traversée de répertoire WordPress ici, puis utilisez la vulnérabilité d'inclusion de fichier local pour exécuter rce. WordPress utilise officiellement les bibliothèques d'images pour GD et Imagick, comme le montre la figure suivante :
Parmi eux, Imagick n'est pas inclus avec WordPress et nécessite le téléchargement d'un plug-in, donc par défaut, du code arbitraire peut être exécuté en contournant la bibliothèque GD.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!