Skip to content
KitploitKITPLOIT
أدواتعمليات الاستغلالالمدونة
Log in
إرسال
أدواتعمليات الاستغلالالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

الخلاصاتاتصالالخصوصية© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
stirling-h2-import-leftover — Stirling-PDF v3.2.0 - حرج - عن بُعد - بقايا RUNSCRIPT في H2 - CREATE OR REPLACE ALIAS import-database | Kitploit
أدوات/GitHubGitHub/abraxas/stirling-h2-import-leftover
تحليل الثغرات الأمنيةالاستغلالاستغلال تطبيقات الويبالمحاكاة الافتراضية للأماناختبار الاختراقأمن قواعد البيانات
GitHubabraxas/stirling-h2-import-leftover

stirling-h2-import-leftover

Stirling-PDF v3.2.0 - حرج - عن بُعد - بقايا RUNSCRIPT في H2 - CREATE OR REPLACE ALIAS import-database

عرض المستودع
4منذ يوم واحدلم تتم المراجعة بعد

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة

Abraxas Labs - stirling-h2-import-leftover

abraxaslabs.tech  ·  github.com/abraxas  ·  @abraxas_null  ·  [email protected]  ·  stirling-h2-import-leftover

stirling-h2-import-leftover

Stirling-PDF 3.2.0 - Stirling Tools

الفئة: بقايا H2 RUNSCRIPT من GHSA-mrr8. الوصول: ROLE_ADMIN عن بُعد.

POST /api/v1/database/import-database محمي بـ @PreAuthorize("hasRole('ADMIN')"). يُفترض أن يمنع validateSqlContent استخدام CREATE ALIAS. قائمة الحظر هي CREATE\s+(FORCE\s+)?ALIAS. تسمح دالة parseCreate في H2 بوجود OR REPLACE قبل ALIAS، لذا فإن CREATE OR REPLACE ALIAS … FOR "java.lang.…" يطابق قائمة السماح \bCREATE\b ويفوت قائمة الحظر. يقوم المدقّق بتعقيم نسخة. بينما تقوم verifyBackup وRUNSCRIPT FROM ? في بيئة الإنتاج بتشغيل الملف الأصلي.

GHSA-mrr8-934j-4g8m / CVE-2026-85714 أغلق سلاسل FILE_READ / CREATE ALIAS / CSVWRITE الأصلية. هذه البقايا هي ثغرة OR REPLACE في نفس المدقّق.

استيراد بصلاحية ROLE_ADMIN ينشئ alias في Java يُفترض أن تمنعه قائمة الحظر. وتنزيل نسخة احتياطية لاحق يحتوي على SQL الخاص بالمهاجم. يُستنتج تنفيذ الأوامر عن بُعد (RCE) عبر FILE_READ / FileUtils على المضيف من الاستشارة الأصلية، ولم يُثبت مختبريًا في هذه الحزمة.

المعرّفلا يوجد CVE بعد
CWECWE-94 / CWE-184
CVSS9.1 CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:C/C:H/I:H/A:H
المنتجStirling-PDF
المتأثرv3.2.0 (a7e593728dd9aa81e75318a949789d3c2e9ee754)، الصورة stirlingtools/stirling-pdf:3.2.0-fat
المصادقةROLE_ADMIN، H2 المدمج الافتراضي. أول مسؤول افتراضي admin / stirling حتى يتم تغييره
الترخيصGNU Affero GPL v3.0
المختبر127.0.0.1:18152 فقط

بقايا من سلسلة بقايا Stirling-PDF v3.2.0. الشقيق: stirling-storage-folder-idor (جذر تخزين ضمني لمجلد المعالجة). هذه الحزمة هي بقايا استيراد H2.

ما يمكن للمهاجم فعله

ROLE_ADMIN عند تسجيل الدخول على إصدار proprietary/fat مع H2 المدمج الافتراضي. أول مسؤول افتراضي هو admin / stirling عندما يكون initialLogin فارغًا. لا يحتاجون إلى وصول غير مُصادَق. صورة Lite ومصادر بيانات PostgreSQL لا تتضمن هذا المتحكم.

جدول الصلاحيات (شامل). نفس المعيار المتبع في Signal-Server Dropwizard admin: الطريقة + المسار، وما يمنحه ذلك الاستدعاء، والاستطلاع مقابل السلامة مقابل التوافر، والمُثبت مختبريًا مقابل المُستنتج، والسطح المجاور الذي يبقى مغلقًا.

المحورالطريقة + المسارالصلاحيات الممنوحةالمصدر
السلامةROLE_ADMIN POST /api/v1/database/import-database مع CREATE OR REPLACE ALIAS lab_nano FOR "java.lang.System.nanoTime" بالإضافة إلى INSERT INTO lab_w VALUES('STIRLING-H2-IMPORT-WITNESS')200 importIntoDatabaseSuccessed. تم إنشاء Java alias. تم تنفيذ SQL المهاجم تحت RUNSCRIPTمُثبت مختبريًا
الاستطلاعROLE_ADMIN GET /api/v1/database/createDatabaseBackup ثم GET /api/v1/database/download/backup_202610172328.sqlنسخة احتياطية بحجم 50432 بايت تحتوي على STIRLING-H2-IMPORT-WITNESSمُثبت مختبريًا
الاستطلاع / ملف المضيفنفس الاستيراد مع تغليف FILE_READ('/etc/os-release') داخل EXECUTE IMMEDIATE500 Backup verification failed. بايتات المضيف غير موجودة في النسخة الاحتياطيةفشل إضافي مختبري
السلامة / RCEalias org.h2.store.fs.FileUtils بالإضافة إلى CSVWRITE لملف .pth في user-site الخاص بـ Python، ثم تحويل officeتنفيذ أوامر بحساب الخدمةمستنتج من GHSA-mrr8. لم يُختبر هنا
التوافرلا شيء مُدّعىيمكن للاستيراد استبدال جداول التطبيقمستنتج. ليس أداة التحقق المختبرية

يبقى مغلقًا على هذا الإصدار المثبّت

المحورالطريقة + المسارسبب الإغلاق
السلامةPOST /api/v1/database/import-database بدون مصادقة401 Authentication required. أمان الطريقة ADMIN يبقى مفعّلًا عندما يكون HTTP بـ permitAll
السلامةاستيراد ROLE_ADMIN لـ CREATE ALIAS المجرّد500 SQL script contains disallowed operations and was rejected
السلامةصورة lite / DISABLE_ADDITIONAL_FEATURESDatabaseController غائب
السلامةمصدر بيانات PostgreSQL مخصص@Conditional(H2SQLCondition.class)

لا أدّعي الحصول على reverse shell، ولا أدّعي أن FILE_READ على المضيف مُثبت مختبريًا. ما تبقّى هو إغفال قائمة الحظر الذي يسمح بمرور CREATE OR REPLACE ALIAS … FOR "java.lang.…" عبر RUNSCRIPT.

كيف وجدته

لا يزال v3.2.0 يشحن مدقّق GHSA-mrr8. بقيت على ذلك الوسم وقرأت DENIED_PATTERNS. سطر الـ alias هو CREATE\s+(FORCE\s+)?ALIAS. يقبل محلّل H2 صيغة CREATE OR REPLACE ALIAS. تغطي الاختبارات السلاسل الواضحة CREATE ALIAS / FILE_READ(. لكنها لا تغطي OR REPLACE.

يسجّل المختبر الدخول كمسؤول افتراضي، ويكمل change-password-on-login، ثم يستورد CREATE ALIAS محظورًا (500)، ثم يستورد CREATE OR REPLACE ALIAS بالإضافة إلى شاهد INSERT (200). يحتوي تنزيل نسخة احتياطية على الشاهد.

مسارات خاطئة: اعتبار الاستيراد بدون مصادقة ضمن النطاق (401)؛ اعتبار EXECUTE IMMEDIATE + FILE_READ هو ما تبقّى (verifyBackup 500)؛ اعتبار CREATE ALIAS الأصلي غير المُموّه لا يزال فعّالًا (إنه محظور).

المختبر

python3 stirling-h2-import-leftover-Abraxas-Labs.py

أو

cd lab
./run.sh

استهدف فقط http://127.0.0.1:18152. الصورة stirlingtools/stirling-pdf:3.2.0-fat. يتطلب Docker. تسجيل الدخول مفعّل. يقوم المشغّل chdir إلى lab/ وينفّذ run.sh.

IOC unauth-import http=401
IOC negative-import http=500 ... disallowed operations ...
IOC leftover-import bypass=create-or-replace-alias http=200 ... importIntoDatabaseSuccessed
IOC download file=backup_202610172328.sql http=200 bytes=50432 witness=1
SUCCESS stirling-h2-import-leftover negative-denied=yes bypass=create-or-replace-alias backup-has-witness=yes file=backup_202610172328.sql unauth-import=401 STIRLING-H2-IMPORT-WITNESS

الإصلاح

وسّع قائمة الحظر (denylist) بحيث لا يمكن أن يقع OR REPLACE بين CREATE وALIAS. شغّل validateSqlContent على نفس البايتات التي سينفّذها RUNSCRIPT. امنع EXECUTE IMMEDIATE ما لم يتم فحص SQL الداخلي أيضًا.

Pattern.compile("(?i)\\bCREATE\\s+(OR\\s+REPLACE\\s+)?(FORCE\\s+)?ALIAS\\b")

أعد تشغيل عميل الاسترجاع مقابل نسخة مُرقّعة: يجب أن يُرجع الاستيراد المتبقي 400/500 بالطريقة نفسها التي يفعلها CREATE ALIAS المجرد بالفعل.

حتى ذلك الحين، لا تعتبر أن "حظرت CREATE ALIAS" يعني "حظرت أسماء H2 Java المستعارة."

المراجع

تنزيل الأداة