
Preuve de concept et rapport technique pour une vulnérabilité de divulgation d'informations non authentifiée dans le point de terminaison unfurl de XenForo, incluant un script Python pour vérifier le problème.
XenForo avant la version 2.3.13 expose les aperçus de liens enrichis en attente via un point de terminaison non authentifié indexé par des identifiants entiers prévisibles.
unfurl.php accepte un POST contenant des identifiants globaux UnfurlResult, charge ces lignes et renvoie le HTML d'aperçu rendu. Il ne vérifie ni la session, ni la visibilité du contenu, ni l'objet parent, ni une capacité signée. Le fragment renvoyé inclut l'URL d'origine, y compris sa chaîne de requête.
L'exploitation est sensible au facteur temps. Une victime doit soumettre une URL autonome jamais vue auparavant dans un contenu restreint, la destination doit renvoyer des métadonnées exploitables, et l'attaquant doit prédire l'identifiant nouvellement alloué pendant que la ligne est en attente. Un aperçu récent appartenant à l'attaquant peut servir de repère de niveau supérieur. Le problème est un contournement d'autorisation et une divulgation d'informations, et non une SSRF ou une exécution de code.
J'ai reproduit une divulgation d'identifiant adjacent avec des marqueurs synthétiques sur XenForo 2.3.12 (build 2031270). XenForo 2.3.13 contient le correctif.
python poc.py --base-url https://xenforo.example --result-id 123 --expect-marker SYNTHETIC_TEST_MARKER
Le script demande exactement un identifiant de test connu sans cookies. Il n'énumère jamais les identifiants et n'affiche pas le HTML renvoyé. Il signale uniquement si le marqueur synthétique attendu était présent.
Découvert par Marco Paciaroni (BomboBombone).