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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
SessionReaper-CVE-2025-54236 — PoC Magento Session Reaper - CVE-2025-54236 | Kitploit
ツール/GitHubGitHub/alexb616/sessionreaper-cve-2025-54236
脆弱性分析コード分析エクスプロイトウェブアプリケーション悪用ペネトレーションテストレッドチーミングペイロード開発
GitHubalexb616/sessionreaper-cve-2025-54236

SessionReaper-CVE-2025-54236

人気

すべて見る →

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

すべてのツールを探索

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

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

PoC Magento Session Reaper - CVE-2025-54236

リポジトリを見る
11ヶ月前未レビュー

SessionReaper — CVE-2025-54236

CVE-2025-54236(「SessionReaper」)の統合PoCです。Magento 2 / Adobe CommerceのREST APIにおけるネストされたデシリアライゼーションを悪用した、認証不要のクリティカルなRCEを示します。

  • CVSS: 9.1(クリティカル)
  • 根本原因: ServiceInputProcessor における不適切な入力検証(CWE-20)。エクスプロイトのプリミティブは安全でないデシリアライゼーション(CWE-502)
  • 発見者: Daniel "Blaklis" Le Gall(HackerOne経由の責任ある開示)
  • 命名: Sansec
  • 修正: Adobe APSB25-88(緊急パッチ、2025-09-09)

許可されたセキュリティテスト専用です。自分が所有するシステム、または明示的な書面によるテスト許可を得たシステムに対してのみ使用してください。


機能

このツールは、すべてのベクターに共通する3つのステージとトリガーを連鎖させます:

  1. ガジェット生成 — phpggc -se -a Guzzle/FW1 <remote_path> <payload.php> により、デシリアライズ時に payload.php を <remote_path> に書き込むシリアライズオブジェクトを生成します。
  2. 偽のセッションアップロード — POST /customer/address_file/upload でシリアライズブロブを sess_<SESSID> として保存します。Magentoはアップロードされたアドレスファイルをファイル名の先頭文字で分散するため、media/customer_address/s/e/sess_<SESSID> に配置されます(したがって --save-path に s/e/ が含まれます)。
  3. save_pathリダイレクト — ネストされたRESTペイロードが Session\Config を構築し、setSavePath() → setOption() → ini_set('session.save_path', ...)(プロセスグローバルな副作用)を介してPHPのセッションハンドラをアップロードされたブロブに向けます。
  4. トリガー — Cookie: PHPSESSID=<SESSID> を含むリクエストにより session_start() が強制され、ポイズンされたファイルを読み取って unserialize() し、ガジェットを発火させてペイロードを書き込みます。

ベクター

3つのベクターはすべて同じシンク(context → urlBuilder → session → sessionConfig → savePath)に到達します。エンドポイント、HTTPメソッド、Magentoモジュールのみが異なります。これは、WAFや無効化されたモジュールがあるエンドポイントをブロックしても別のエンドポイントはブロックされない場合に有用です。

どのベクターでも実際のカートは不要です。 ServiceInputProcessor は入力解決中にメソッドパラメータをデシリアライズするため、サービスがカートルックアップを呼び出す前 に、ダミーの cartId abc だけで3つすべてのベクターがシンクに到達します。その後の「カートが見つからない」エラー(404/500)は想定内であり、デシリアライゼーションの副作用が既に発火したことを確認します。

--sku フラグを使用すると、トリガー前に実際のゲストカートを作成して商品を追加する(GraphQLで確認)ことも可能です。これは オプション であり、エクスプロイトには不要です。完全に現実的なチェックアウトフローを好む環境でのみ使用します。省略した場合、ツールはダミーの abc カートを使用します。


前提条件

  • ファイルベースのセッションストレージ(var/session/)が使用されていること。RedisやデータベースバックアップのセッションはこのRCE連鎖の影響を受けません。これはリモートから列挙できないため、ブラインドで試行する必要があります。
  • /customer/address_file/upload が認証なしで到達可能であること。
  • ターゲットが未パッチ(APSB25-88未適用 / 2.4.xホットフィックス未適用)であること。

要件

  • Python 3.8以上 + requests
  • phpggc — PATH、一般的なインストール場所から自動検出、またはフォールバックとして ambionics/phpggc Dockerイメージを使用
  • payload.php がスクリプトと同じディレクトリに存在すること(<?php で始まる必要あり)
root@kitploit:~
pip install requests
git clone https://github.com/ambionics/phpggc /opt/phpggc   # または: docker pull ambionics/phpggc

使用方法

root@kitploit:~
# order(元のベクター)— カート不要、認証不要
python3 session_reaper.py --host https://target.com --method order

# checkmo — 支払いエンドポイント、REST APIにスペインのストアスコープを使用
python3 session_reaper.py --host https://target.com --method checkmo --api-store es

# address — 配送エンドポイント
python3 session_reaper.py --host https://target.com --method address --api-store all

# オプション: 既知のSKUを使用して実際のカートフローを実行(必須ではありません)
python3 session_reaper.py --host https://target.com --method address --sku PROD-001

オプション


ストアスコープ

ツールは2つの独立したストアコードを使用します:

  • --api-store — デシリアライゼーション リクエストURL(/rest/<api-store>/V1/guest-carts/...)のスコープ。ここで ServiceInputProcessor が動作します。
  • --store — トリガー リクエスト(GET /<store>/)および --sku 使用時のカートリクエストのスコープ。

ストアビューコードは管理者が定義します。es/fr を想定しないでください。まずアクティブなストアビューを列挙してください — 存在しないスコープに対するリクエストは単に失敗します。


ペイロードターゲット — なぜ pub/errors/404.php か

MagentoのデフォルトのNginx設定は、7つ のPHPファイルのみを fastcgi_backend に渡します:

root@kitploit:~
index.php, get.php, static.php,
errors/report.php, errors/404.php, errors/503.php, health_check.php

その他の .php(pub/media/ にドロップされたものも含む)は拒否され、実行されることはありません。そのためペイロードは新しいファイルをドロップするのではなく、これらのホワイトリストに登録された7つのファイルのいずれかを上書き する必要があります。pub/errors/404.php がデフォルトなのは、Magentoが404ページを内部でレンダリングするためで、ライブストアでは頻繁に発火します。

OPSEC: 404.php を完全に上書きすると(すべての404で実行されるため)目立ちます。実際のエンゲージメントでは、ファイルを潰すのではなく、ホワイトリストに登録されたファイルに控えめにバックドアを仕掛けてください。


注意事項

  • ツールはデフォルトでゲストとして動作します。--username/--password は、特定のセットアップでBearerトークンが必要な場合にのみ使用します。
  • デシリアライゼーションリクエストでは404/500を想定してください — これは正常であり、失敗を意味しません。
  • クリーンアップ: 一時的な /tmp/sess_<SESSID> ファイルは終了時に削除されます。

参考文献

  • Adobe Advisory APSB25-88
  • Sansec — SessionReaper開示
  • Searchlight Cyber (Assetnote) — 元のRCE PoC
  • Pentest-Tools.com — エクスプロイト開発の解説
  • NVD — CVE-2025-54236

免責事項

許可されたセキュリティ研究およびテストのために提供されています。著者は誤用に対する責任を負いません。明示的な許可なくシステムに対して実行しないでください。

ツールをダウンロード
メソッドエンドポイント動詞チェーンへのエントリポイント
order/rest/<store>/V1/guest-carts/abc/orderPUTpaymentMethod → paymentData → Payment\Helper\Data
checkmo/rest/<store>/V1/guest-carts/abc/set-payment-informationPOSTpaymentMethod → paymentData → Payment\Helper\Data
address/rest/<store>/V1/guest-carts/abc/estimate-shipping-methodsPOSTaddress → addressConfig → addressHelper → Customer\Helper\Address
フラグデフォルト説明
--host(必須)ターゲットのベースURL
--method(必須)address | checkmo | order
--storedefaultトリガーリクエスト(および--sku使用時のカート)のストアコード
--api-storedefaultデシリアライゼーションエンドポイントURL内のストアコード(all | es | default | カスタム)
--sku(なし)オプション。 設定すると、このSKUで実際のゲストカートを作成します。必須ではありません。
--payload-inpayload.phpターゲットに書き込むPHPペイロード
--payload-out/var/www/html/pub/errors/404.phpリモートの書き込みパス(Web実行可能な場所である必要があります — 以下の注意参照)
--save-pathmedia/customer_address/s/e/ガジェットチェーンに注入される savePath
--phpggc(自動)phpggc バイナリへの明示的なパス
--proxyhttp://127.0.0.1:8081HTTPプロキシ(例: Burp)
--no-proxyoffプロキシを無効化
--username / --password(なし)Bearerトークンのためのオプションの顧客認証情報