Le 14 décembre 2023, peu après le lancement de notre Holiday Bug Extravaganza, nous avons reçu une soumission concernant une vulnérabilité de téléchargement arbitraire de fichiers dans Gestionnaire de fichiers Pro, un plugin WordPress avec environ 10 000+ installations actives. Cette vulnérabilité a permis à des attaquants authentifiés de créer un fichier PHP pouvant contenir du contenu malveillant et être utilisé pour le contrôle complet du site.

Des accessoires pour Tobias Weisshaar qui a découvert et signalé de manière responsable cette vulnérabilité via Wordfence Programme de prime aux bogues. Ce chercheur a gagné une prime de 657,00 $ pour cette découverte lors de notre extravagance du programme Bug Bounty. Même si le nombre d'installations placerait généralement cette vulnérabilité hors de portée de notre programme de prime aux bogues, la gravité et la facilité d'exploitation combinées au nombre d'installations beaucoup plus important de la version gratuite du plugin garantissaient une certaine flexibilité.

Wordfence Premium, Entretien de la clôture des motset Réponse de Wordfence les utilisateurs ont reçu une règle de pare-feu pour se protéger contre tout exploit ciblant cette vulnérabilité le 8 janvier 2024. Les sites utilisant toujours la version gratuite de Wordfence recevront la même protection le 7 février 2024.

Nous avons contacté l'équipe de développeurs de File Manager le 14 décembre 2023 et avons reçu une réponse le 15 décembre 2023. Après avoir fourni tous les détails, le développeur a publié un correctif le 8 janvier 2024.

Nous invitons les utilisateurs à mettre à jour leurs sites avec la dernière version corrigée de File Manager Pro, version 8.3.5 au moment d'écrire ces lignes, dès que possible.


Saviez-vous que nous organisons un Extravagance du Bug Bounty encore? Gagnez plus 6x nos tarifs de prime habituelsjusqu'à 10 000 $, pour toutes les vulnérabilités soumises jusqu'au 29 février 2024 !


Résumé des vulnérabilités de Wordfence Intelligence

Le plugin File Manager Pro pour WordPress est vulnérable au téléchargement de fichiers arbitraires dans toutes les versions jusqu'à la version 8.3.4 incluse via la fonction AJAX mk_check_filemanager_php_syntax. Cela permet à des attaquants authentifiés, disposant d’un accès abonné et supérieur, d’exécuter du code sur le serveur. La version 8.3.5 introduit une vérification de capacité qui empêche les utilisateurs inférieurs à admin d'exécuter cette fonction.

Analyse technique

Le plugin File Manager Pro est la version premium du plugin File Manager WordPress le plus populaire, qui comprend de nombreuses fonctionnalités et fonctions premium. L'une de ces fonctionnalités est le vérificateur de syntaxe, qui effectue la vérification du code pour détecter les erreurs avant d'enregistrer les fichiers.

L'examen du code révèle que le plugin utilise le mk_check_filemanager_php_syntax_callback() fonction pour vérifier la syntaxe php via AJAX.

add_action('wp_ajax_mk_check_filemanager_php_syntax', array(&$this, 'mk_check_filemanager_php_syntax_callback'));

/* Check php Syntax Errors */
public function mk_check_filemanager_php_syntax_callback()
{
	$filename = isset($_POST['filename']) ? sanitize_file_name($_POST['filename']) : '';
	$fileMime = isset($_POST['filemime']) ? sanitize_mime_type($_POST['filemime']) : '';
	$code = stripslashes($_POST['code']);
	if (is_user_logged_in() && $fileMime == 'text/x-php') {
		$current_user = wp_get_current_user();
		$upload_dir = wp_upload_dir();
		if (isset($current_user->user_login) && !empty($upload_dir['basedir'])) {
			$fm_temp = $upload_dir['basedir'].'/fm_temp.php';
			$handle = fopen($fm_temp, 'w');
			fwrite($handle, $code);
			$check = shell_exec('php -d display_errors=1 -l '.$fm_temp);

			if(empty($check)){
				echo '<p>('.__('Unable to execute php syntax checker due to server permissions.', 'wp-file-manager-pro').')</p>';
			} elseif(strpos($check, 'No syntax errors') === false) {
				$check = str_replace('on line', 'on line number', $check);
				echo str_replace($fm_temp, '<strong>'.$filename.'</strong>', $check);
				echo '<p>('.__('File', 'wp-file-manager-pro').' <strong>'.$filename.'</strong> '.__('not saved.', 'wp-file-manager-pro').')</p>';
			} else {
				echo '1';
			}
		}
	} else {
		echo '1';
	}
	die;
}

La fonction crée le fichier temporaire et y place le code php. Après cela, il exécute uniquement une vérification de syntaxe, ce qui est totalement sûr car il n'est pas possible d'exécuter le code.

Mais le fichier temporaire n'est pas supprimé immédiatement. Le remove_fm_temp_file() La fonction supprime le fichier temporaire, qui est ajouté au admin_init hook, mais il ne s'exécute que lorsque la page d'administration est rechargée. Cela signifie qu'il y a une période pendant laquelle le fichier de test réside sur le serveur avant d'être supprimé, ce qui le rend accessible à un acteur malveillant.

add_action('admin_init', array(&$this, 'remove_fm_temp_file'));

/* Remove Fm Temp File */
public function remove_fm_temp_file()
{
	$upload_dir = wp_upload_dir();
	$fm_temp = $upload_dir['basedir'].'/fm_temp.php';
	if (file_exists($fm_temp)) {
		unlink($fm_temp);
	}
}

Malheureusement, aucun contrôle de fonctionnalité n'a été utilisé dans les versions vulnérables, il existe uniquement un contrôle pour vérifier que l'utilisateur est connecté à WordPress et le fichier temporaire n'est pas non plus immédiatement supprimé. Cela signifie que tout utilisateur connecté, tel qu'un abonné, peut ajouter n'importe quel code PHP au fichier temporaire et y accéder ultérieurement. Cela permet aux attaquants de télécharger du code PHP malveillant arbitraire, puis d'accéder au fichier pour déclencher l'exécution de code à distance sur le serveur.

Le processus d'exploitation complet ressemble à ceci :

Pare-feu Wordfence

Le graphique suivant montre les étapes d'exploitation qu'un attaquant pourrait suivre et à quel point le pare-feu Wordfence empêcherait un attaquant d'exploiter avec succès la vulnérabilité.

Le pare-feu bloque également l'accès au fichier temporaire :

Chronologie de la divulgation

14 décembre 2023 – Nous recevons la soumission de la vulnérabilité Arbitrary File Upload dans File Manager Pro via le programme Wordfence Bug Bounty. Nous prenons contact avec le fournisseur du plugin en lui demandant de confirmer la boîte de réception pour gérer la discussion.
15 décembre 2023 – Le vendeur confirme la boîte de réception pour gérer la discussion.
15 décembre 2023 – Nous envoyons les détails complets de la divulgation. Le fournisseur accuse réception du rapport et commence à travailler sur un correctif.
8 janvier 2024 – On voit que la version 8.3.5 du plugin est sortie, et on la valide.
8 janvier 2024 – Les utilisateurs de Wordfence Premium, Care et Response reçoivent une règle de pare-feu pour fournir une protection contre tout exploit susceptible de cibler cette vulnérabilité.
7 février 2024 – Les utilisateurs de Wordfence Free bénéficient de la même protection.

Conclusion

Dans cet article de blog, nous avons détaillé une vulnérabilité de téléchargement arbitraire de fichiers dans le Plugin Gestionnaire de fichiers Pro affectant les versions 8.3.4 et antérieures. Cette vulnérabilité permet aux auteurs de menaces authentifiés, avec des autorisations minimales, d'exécuter du code malveillant sur le serveur. La vulnérabilité a été corrigée dans la version 8.3.5 du plugin.

Nous encourageons les utilisateurs de WordPress à vérifier que leurs sites sont mis à jour avec la dernière version corrigée de File Manager Pro.

Utilisateurs de Wordfence en cours d'exécution Wordfence Premium, Entretien de la clôture des motset Réponse de Wordfence sont protégés contre ces vulnérabilités depuis le 8 janvier 2024. Les utilisateurs utilisant toujours la version gratuite de Wordfence bénéficieront de la même protection le 7 février 2024.

Si vous connaissez quelqu'un qui utilise ce plugin sur son site, nous vous recommandons de partager cet avis avec lui pour garantir la sécurité de son site, car cette vulnérabilité présente un risque important.

N'oubliez pas que nous gérons un Extravagance du Bug Bounty encore. Gagnez plus 6x nos tarifs de prime habituelsjusqu'à 10 000 $, pour toutes les vulnérabilités soumises jusqu'au 29 février 2024 !


Source link