1

[CVE-2023-34020] Unauthenticated Open Redirect

3 min read

Views: 417

5
(7)
open redirect

Patchstack : https://patchstack.com/database/vulnerability/uncanny-learndash-toolkit/wordpress-uncanny-toolkit-for-learndash-plugin-3-6-4-3-open-redirection-vulnerability


Introduction :

La sécurité est primordiale lorsqu’il s’agit de maintenir un site WordPress. Les plugins jouent un rôle crucial dans l’amélioration des fonctionnalités, mais ils peuvent également introduire des vulnérabilités s’ils ne sont pas développés et entretenus correctement. Dans cet article, nous allons explorer un cas réel d’une vulnérabilité que j’ai trouvé.


Open redirect :

Open Redirect, est une faille de sécurité qui permet à des individus malveillants de détourner les mécanismes de redirection d’un site web afin de rediriger les utilisateurs vers des destinations non autorisées. Cette vulnérabilité survient lorsque l’application web accepte des URL externes ou des paramètres de redirection sans effectuer de validation adéquate.

Un attaquant pourrait manipuler le lien en y insérant une URL malveillante. Lorsque l’utilisateur clique sur ce lien, il est alors redirigé vers un site web malveillant, sans se rendre compte de la manipulation en cours.

open redirect

Analyse du code :

Ce code permet d’enregistrer un point endpoint pour une API dans WordPress. Lorsqu’un utilisateur envoie une requête GET à l’URL « http://target.com/?rest_route=/ult/v2/review-banner-visibility« , la fonction « save_review_settings() » sera exécutée pour traiter cette requête spécifique. Il n’y a pas de restrictions de permission, ce qui signifie que tous les utilisateurs sont autorisés à accéder à cet endpoint.

public function uo_register_api() {
		register_rest_route(
			UNCANNY_TOOLKIT_REST_API_END_POINT,
			'/review-banner-visibility/',
			array(
				'methods'             => 'GET',
				'callback'            => array( $this, 'save_review_settings' ),
				'permission_callback' => '__return_true',
			)
		);
	}

Le code vulnérable :

La vulnérabilité résidait dans la fonction save_review_settings() et dans l’utilisation directe du paramètre redirect_url dans la fonction wp_redirect(). Cela permettait aux attaquants de manipuler le paramètre redirect_url et de rediriger les utilisateurs vers n’importe quel site Web de leur choix, pouvant contenir du contenu malveillant ou des activités frauduleuses.

public function save_review_settings( $request ) {

		// Check if its a valid request.
		$action = $request->get_param( 'action' );

		$redirect = $request->get_param( 'redirect' );

		$redirect_url = $request->get_param( 'redirect_url' );

		$visiblity_actions = array( 'maybe-later', 'hide-forever' );

		[REDACTED]

			if ( 'yes' === $redirect ) {

				// Return the refering url if its empty.
				if ( empty( $redirect_url ) ) {

					$redirect_url = wp_get_referer();

				}

				wp_redirect( $redirect_url ); //phpcs:ignore WordPress.Security.SafeRedirect.wp_redirect_wp_redirect

				exit;

			}
        [REDACTED]

La preuve de concept (POC) :

Pour démontrer la vulnérabilité, voici la requête en intégralité ainsi qu’un screen montrant la requête la réponse du serveur, nous sommes donc bien redirigé vers https://mikadmin.fr.

http://target.com/?rest_route=/ult/v2/review-banner-visibility&action=maybe-later&redirect=yes&redirect_url=https://mikadmin.fr

Protection et correctif :

Pour remédier à cette vulnérabilité, il est crucial de s’assurer que toutes les entrées fournies par l’utilisateur, y compris le paramètre redirect_url, subissent une validation et une sanitisation approfondies avant d’être utilisées dans une redirection. WordPress propose des fonctions telles que wp_validate_redirect() ou esc_url() qui peuvent être utilisées pour valider et nettoyer les URL, réduisant ainsi le risque d’Open Redirect.

Voici le correctif proposé par le plugin :

Quelle note mérite cet article ?

Average rating 5 / 5. Vote count: 7

No votes so far! Be the first to rate this post.

S’abonner
Notification pour
guest
1 Commentaire
Le plus ancien
Le plus récent Le plus populaire
Commentaires en ligne
Afficher tous les commentaires
Omar
Invité
Omar
1 année il y a

Bon travail Mika !