
XenForo 2.3.13 より前のバージョンでは、予測可能な整数IDによってキーが設定された認証不要のエンドポイントを通じて、保留中のリッチリンクプレビューが公開されます。
unfurl.php は、グローバルな UnfurlResult ID を含む POST を受け入れ、それらの行を読み込み、レンダリングされたプレビュー HTML を返します。セッション、コンテンツの可視性、親オブジェクト、署名付きケイパビリティを検証しません。返されるフラグメントには、元の URL とそのクエリ文字列が含まれます。
悪用はタイミングに依存します。被害者は、制限されたコンテンツ内でこれまでに見られていないスタンドアロン URL を送信する必要があり、宛先は使用可能なメタデータを返す必要があり、攻撃者は行が保留中に新しく割り当てられた ID を予測する必要があります。最近攻撃者が所有するプレビューは、ハイウォーターマークとして機能します。この問題は、SSRF やコード実行ではなく、認可バイパスと情報開示です。
私は XenForo 2.3.12(ビルド 2031270)で、合成マーカーを使用した隣接 ID の開示を1件再現しました。XenForo 2.3.13 には修正が含まれています。
python poc.py --base-url https://xenforo.example --result-id 123 --expect-marker SYNTHETIC_TEST_MARKER
このスクリプトは、Cookie なしで既知のテスト ID を1つだけリクエストします。ID を列挙したり、返された HTML を出力したりすることはありません。期待される合成マーカーが存在したかどうかのみを報告します。
発見者: Marco Paciaroni (BomboBombone)。