Le 28 février 2020, l’équipe de Wordfence Threat Intelligence a pris connaissance d’une vulnérabilité XSS (Cross-Site Scripting) nouvellement corrigée dans IMPress pour IDX Broker, un plugin WordPress avec plus de 10 000 installations. Bien que tous les utilisateurs de Wordfence, y compris ceux qui utilisent toujours la version gratuite de Wordfence, étaient déjà protégés de cette vulnérabilité par la protection XSS intégrée du pare-feu d’application Web, nous avons étudié le plug-in plus en détail et découvert une vulnérabilité XSS stockée supplémentaire. Nous avons également trouvé une faille qui permettrait à un attaquant authentifié disposant d’autorisations minimales au niveau de l’abonné de supprimer définitivement toute page ou publication sur le site, en plus de créer des pages avec des titres arbitraires.

Nous avons initialement contacté le fournisseur du plugin le même jour, le 28 février 2020, mais nous n’avons reçu aucune réponse sur une longue période. Le 19 mars 2020, après avoir informé l’équipe du plugin WordPress, nous avons reçu une réponse du développeur du plugin, date à laquelle nous avons envoyé tous les détails de la divulgation. Une version entièrement corrigée a été publiée le 23 mars 2020 et nous vous recommandons de mettre à jour la dernière version, 2.6.2, immédiatement.

Les utilisateurs de Wordfence Premium ont reçu une nouvelle règle de pare-feu le 2 mars pour se protéger contre les exploits ciblant ces vulnérabilités. Les utilisateurs gratuits de Wordfence recevront cette règle le 1er avril 2020.


Le plugin IMPress pour IDX Broker contient une fonction captcha pour empêcher les soumissions de spam. Puisqu’il utilise le service ReCAPTCHA de Google, il nécessite une clé API. Malheureusement, l’action AJAX enregistrée par le plug-in pour mettre à jour cette clé API n’a pas utilisé de vérification de capacité ou de non-vérification.

Cela a permis à un attaquant connecté avec des autorisations minimales, comme un abonné, d’envoyer une demande à wp-admin / admin-ajax.php avec le action paramètre défini sur idx_update_recaptcha_key et le idx_recaptcha_site_key paramètre défini sur un code JavaScript malveillant, qui pourrait ensuite être exécuté dans le navigateur d’un administrateur lors de sa prochaine visite dans le panneau des paramètres du plug-in.

Comme la plupart des attaques profitent de XSS stockés dans les zones d’administration, cela pourrait être utilisé pour utiliser la session de l’administrateur afin de créer un nouvel utilisateur administratif malveillant.

L’action AJAX:

add_action( 'wp_ajax_idx_update_recaptcha_key', array( $this, 'idx_update_recaptcha_key' ) );

La fonction vulnérable:

	public function idx_update_recaptcha_key() {
		if ( $_POST['idx_recaptcha_site_key'] ) {
			update_option( 'idx_recaptcha_site_key', $_POST['idx_recaptcha_site_key'], false );
			echo 1;
		} else {
			delete_option( 'idx_recaptcha_site_key' );
			echo 'error';
		}
		die();
	}

L’une des fonctionnalités incluses avec le plug-in IDX Broker est la possibilité de créer et de supprimer des «pages dynamiques», destinées à garantir que toutes les pages IDX correspondent au style et à la marque du site.

Le plugin enregistre 2 actions AJAX qui sont utilisées pour ce faire:

add_action( 'wp_ajax_create_dynamic_page', array( $this, 'idx_ajax_create_dynamic_page' ) );
add_action( 'wp_ajax_delete_dynamic_page', array( $this, 'idx_ajax_delete_dynamic_page' ) );

Encore une fois, aucune des fonctions appelées par ces actions AJAX n’a ​​utilisé de vérification de capacité ou de vérification de nonce. En tant que tel, il était possible pour un attaquant authentifié disposant d’autorisations minimales au niveau de l’abonné d’envoyer une demande à wp-admin / admin-ajax.php avec le action paramètre défini sur create_dynamic_page et le post_title paramètre défini sur n’importe quelle valeur arbitraire. En retour, une nouvelle page dynamique avec ce titre serait créée.

Si un wrapper_page_id a été inclus et défini sur l’ID d’une publication ou d’une page existante, cette publication ou cette page serait remplacée par une page wrapper vierge:

	public function idx_ajax_create_dynamic_page() {

		// default page content
		$post_content = $this->does_theme_include_idx_tag();

		$post_title = $_POST['post_title'] ? $_POST['post_title'] : 'Properties';
		$new_post   = array(
			'post_title'   => $post_title,
			'post_name'    => $post_title,
			'post_content' => $post_content,
			'post_type'    => 'idx-wrapper',
			'post_status'  => 'publish',
		);
		if ( $_POST['wrapper_page_id'] ) {
			$new_post['ID'] = $_POST['wrapper_page_id'];
		}
		$wrapper_page_id = wp_insert_post( $new_post );
		update_option( 'idx_broker_dynamic_wrapper_page_name', $post_title, false );
		update_option( 'idx_broker_dynamic_wrapper_page_id', $wrapper_page_id, false );
		$wrapper_page_url = get_permalink( $wrapper_page_id );
		$this->idx_api->set_wrapper( 'global', $wrapper_page_url );
		update_post_meta( $wrapper_page_id, 'idx-wrapper-page', 'global' );

		die(
			json_encode(
				array(
					'wrapper_page_id'   => $wrapper_page_id,
					'wrapper_page_name' => $post_title,
				)
			)
		);
	}

Alternativement, si l’attaquant a défini action paramètre à delete_dynamic_page et a envoyé un wrapper_page_id avec l’ID d’une publication ou d’une page existante, cette publication ou cette page sera définitivement supprimée:

	public function idx_ajax_delete_dynamic_page() {
		if ( $_POST['wrapper_page_id'] ) {
			wp_delete_post( $_POST['wrapper_page_id'], true );
			wp_trash_post( $_POST['wrapper_page_id'] );
		}
		die();
	}

Calendrier de divulgation

28 février 2020 – Notre équipe Threat Intelligence découvre et analyse les vulnérabilités du plug-in IMPress for IDX Broker tout en examinant une vulnérabilité récemment corrigée. Nous essayons de prendre contact avec le fournisseur du plugin.
2 mars 2020 – Règle de pare-feu publiée pour les utilisateurs de Wordfence Premium.
19 mars 2020 – Après un suivi avec l’équipe de plugins WordPress.org, le fournisseur de plugins confirme la boîte aux lettres appropriée et nous leur fournissons une divulgation complète.
23 mars 2020 – La version entièrement corrigée devient disponible.
1 avril 2020 – La règle de pare-feu devient disponible pour les utilisateurs gratuits de Wordfence.

Conclusion

Dans la publication d’aujourd’hui, nous avons détaillé plusieurs vulnérabilités, notamment la création, la modification et la suppression de XSS et de post trouvées dans le plug-in IMPress for IDX Broker. Ces failles ont été corrigées dans la version 2.6.2, et nous recommandons aux utilisateurs de mettre à jour vers la dernière version disponible immédiatement. Sites en cours d’exécution Wordfence Premium sont protégés contre les attaques contre cette vulnérabilité depuis le 2 mars 2020. Les sites exécutant la version gratuite de Wordfence ont reçu la mise à jour des règles de pare-feu le 1er avril 2020.


Source link

%d blogueurs aiment cette page :