dinosn/CVE-2025-13673

GitHub: dinosn/CVE-2025-13673

针对 WordPress Tutor LMS 插件 SQL 注入漏洞(CVE-2025-13673)的 PoC 工具与 Docker 实验环境,支持无认证盲注和认证后 UNION 注入两种利用模式。

Stars: 0 | Forks: 0

# CVE-2025-13673 — Tutor LMS SQL 注入实验 [Tutor LMS](https://wordpress.org/plugins/tutor/) WordPress 插件 (<= 3.9.6) 中通过 `coupon_code` 参数引发的无认证 SQL 注入。 ## 快速开始 ``` # 1. 克隆并启动 lab git clone https://github.com/dinosn/CVE-2025-13673.git cd CVE-2025-13673 ./setup.sh # Deploys WordPress + Tutor LMS 3.9.3 # 2. 运行 exploit pip install requests # only dependency # Unauthenticated(time-based blind — 无需 credentials) python3 exploit.py http://localhost:8080 # Authenticated(UNION-based — 即时提取) python3 exploit.py http://localhost:8080 -u testuser -p test123 --all ``` ## 漏洞详情 | 字段 | 值 | |-------|-------| | CVE | CVE-2025-13673 | | 受影响版本 | Tutor LMS <= 3.9.6 | | 修复版本 | 3.9.7 | | 类型 | SQL 注入 (CWE-89) | | CVSS | 7.5 / 9.3 | | 认证 | 无认证 (盲注) / Subscriber (UNION) | ### 根本原因 `QueryHelper::prepare_where_clause()` 使用原始字符串拼接来构建 SQL WHERE 子句: ``` // helpers/QueryHelper.php — VULNERABLE $value = is_numeric( $value ) ? $value : "'" . $value . "'"; ``` 没有任何转义处理。只需一个单引号即可跳出字面量并执行任意 SQL。 ### 攻击向量 **无认证:** 携带 `tutor_action=tutor_pay_now` 的 `POST /` 请求。WordPress 的 `init` hook 会为所有访问者分发此操作。`_tutor_nonce` 嵌入在每个前端页面中,并且对匿名会话有效。通过 `SLEEP()` 进行数据提取。 **Subscriber 及以上权限:** 携带 `action=tutor_apply_coupon` 的 `POST /wp-admin/admin-ajax.php` 请求。返回包含注入的 UNION SELECT 数据的 JSON —— 有两列会反映在响应中,从而实现即时提取。 ### 补丁 (3.9.7) ``` - $val = is_numeric( $val ) ? $val : "'" . $val . "'"; + // Value now passed through $wpdb->prepare('%s', $value) ``` ## Exploit 用法 ``` usage: exploit.py [-h] [-u USERNAME] [-p PASSWORD] [--course-id COURSE_ID] [--dump-users] [--db-info] [--options] [--all] [--delay DELAY] url Modes: Default (no -u/-p): Unauthenticated time-based blind SQLi With -u/-p: Authenticated UNION-based (fast) Examples: exploit.py http://target # unauth blind exploit.py http://target -u student -p pass --all # auth UNION ``` ## 测试不同版本 ``` # 测试版本 3.9.5(包含 esc_sql partial mitigation) ./setup.sh 3.9.5 # 测试版本 3.9.7(应该已被修复) ./setup.sh 3.9.7 ``` ## 文件 | 文件 | 描述 | |------|-------------| | `exploit.py` | 双模式 PoC:无认证盲注 + 认证 UNION | | `setup.sh` | 一键部署实验环境 | | `docker-compose.yml` | WordPress 6.7 + MySQL 8.0 | ## 参考 - [Wordfence 公告](https://www.wordfence.com/threat-intel/vulnerabilities/wordpress-plugins/tutor/tutor-lms-396-unauthenticated-sql-injection-via-coupon-code) - [Patchstack 公告](https://patchstack.com/database/wordpress/plugin/tutor/vulnerability/wordpress-tutor-lms-plugin-3-9-6-unauthenticated-sql-injection-via-coupon-code-vulnerability) ## 免责声明 仅供授权的安全测试和教育培训使用。
标签:CISA项目, Docker靶场, PoC, WordPress插件, 安全漏洞, 文件完整性监控, 暴力破解, 版权保护, 请求拦截, 逆向工具