
Proof-of-Concept und technischer Bericht für eine nicht authentifizierte Informationsoffenlegungsschwachstelle im Unfurl-Endpunkt von XenForo, einschließlich eines Python-Skripts zur Überprüfung des Problems.
XenForo vor 2.3.13 legt ausstehende Rich-Link-Vorschauen über einen nicht authentifizierten Endpunkt offen, der durch vorhersehbare Integer-IDs geschlüsselt ist.
unfurl.php akzeptiert einen POST, der globale UnfurlResult-IDs enthält, lädt diese Zeilen und gibt gerendertes Vorschau-HTML zurück. Es überprüft weder eine Sitzung, Sichtbarkeit von Inhalten, übergeordnetes Objekt noch signierte Berechtigungen. Das zurückgegebene Fragment enthält die ursprüngliche URL einschließlich ihrer Query-String.
Die Ausnutzung ist zeitkritisch. Ein Opfer muss eine zuvor nicht gesehene eigenständige URL in eingeschränkten Inhalten einreichen, das Ziel muss nutzbare Metadaten zurückgeben, und der Angreifer muss die neu zugewiesene ID vorhersagen, während die Zeile aussteht. Eine kürzlich vom Angreifer kontrollierte Vorschau kann als Hochwassermarke dienen. Das Problem ist eine Autorisierungsumgehung und Offenlegung von Informationen, kein SSRF oder Codeausführung.
Ich habe eine Offenlegung benachbarter IDs mit synthetischen Markern auf XenForo 2.3.12 (Build 2031270) reproduziert. XenForo 2.3.13 enthält den Fix.
python poc.py --base-url https://xenforo.example --result-id 123 --expect-marker SYNTHETIC_TEST_MARKER
Das Skript fordert genau eine bekannte Test-ID ohne Cookies an. Es zählt niemals IDs auf und gibt kein zurückgegebenes HTML aus. Es meldet nur, ob der erwartete synthetische Marker vorhanden war.
Entdeckt von Marco Paciaroni (BomboBombone).