Maison  >  Article  >  Tutoriel CMS  >  WordPress présente-t-il des vulnérabilités ?

WordPress présente-t-il des vulnérabilités ?

爱喝马黛茶的安东尼
爱喝马黛茶的安东尼original
2019-07-20 10:37:382180parcourir

WordPress présente-t-il des vulnérabilités ?

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 :

WordPress présente-t-il des vulnérabilités ?

où edit_post est la fonction de vulnérabilité, entrez la déclaration de fonction, comme le montre la figure ci-dessous :

WordPress présente-t-il des vulnérabilités ?

$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 :

WordPress présente-t-il des vulnérabilités ?

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 :

WordPress présente-t-il des vulnérabilités ?

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 :

WordPress présente-t-il des vulnérabilités ?

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 :

WordPress présente-t-il des vulnérabilités ?

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 :

WordPress présente-t-il des vulnérabilités ?

. Trouvez le point exploitable et entrez la fonction wp_updae_post comme indiqué dans le code, comme indiqué dans la figure ci-dessous :

WordPress présente-t-il des vulnérabilités ?

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 :

WordPress présente-t-il des vulnérabilités ?

Trouvé que la fonction wp_insert_attachment est renvoyée, tracez cette fonction , comme suit Comme indiqué dans l'image :

WordPress présente-t-il des vulnérabilités ?

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 :

WordPress présente-t-il des vulnérabilités ?

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 :

WordPress présente-t-il des vulnérabilités ?

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 :

WordPress présente-t-il des vulnérabilités ?

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 :

WordPress présente-t-il des vulnérabilités ?

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn