SSRF avec filtrage basé sur une liste blanche

SSRF with whitelist-based input filter

La fonctionnalité de vérification de stock envoie des requêtes vers un système interne. L’objectif est de modifier l’URL utilisée dans le paramètre stockApi pour atteindre l’interface d’administration située sur http://localhost/admin, puis supprimer l’utilisateur carlos. Le développeur a mis en place une défense anti-SSRF basée sur une liste blanche d’hôtes autorisés, qu’il faut contourner.

Analyse du filtre

L’application n’autorise que les requêtes vers l’hôte suivant :

Si l’on change l’URL vers localhost ou une adresse interne, on obtient l’erreur :

External stock check host must be stock.weliketoshop.net

Contournement de la liste blanche

L'idée est d'exploiter la syntaxe username:password@host dans les URL. Cette méthode permet de forcer l’hôte validé par la whitelist à apparaître dans la partie "authority", tout en dirigeant réellement la requête vers localhost.

Payload utilisé :

Grâce à l’encodage double de / (%252f), le serveur interprète correctement la partie redirigée vers localhost.

Ce qui permet d’accéder au panneau d’administration interne.

Suppression de l’utilisateur carlos

Une fois le contournement fonctionnel, on appelle directement l’URL de suppression :

Mis à jour

Ce contenu vous a-t-il été utile ?