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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
stirling-storage-folder-idor — Stirling-PDF v3.2.0 - عالية - عن بُعد - IDOR - جذر تخزين مجلد المعالجة يسرد ويستبدل ملفات PDF الخاصة بالأقران | Kitploit
أدوات/GitHubGitHub/abraxas/stirling-storage-folder-idor
تحليل الثغرات الأمنيةالاستغلالاستغلال تطبيقات الويبأمن الويباختبار الاختراقمختبرات وتدريب عملي
GitHubabraxas/stirling-storage-folder-idor

stirling-storage-folder-idor

Stirling-PDF v3.2.0 - عالية - عن بُعد - IDOR - جذر تخزين مجلد المعالجة يسرد ويستبدل ملفات PDF الخاصة بالأقران

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

الأكثر شعبية

عرض الكل →

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

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

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

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

Abraxas Labs - stirling-storage-folder-idor

abraxaslabs.tech  ·  github.com/abraxas  ·  @abraxas_null  ·  [email protected]  ·  stirling-storage-folder-idor

stirling-storage-folder-idor

Stirling-PDF 3.2.0 - Stirling Tools

الفئة: IDOR. الوصول: عن بُعد ROLE_USER.

POST /api/v1/processing-folders لا يحتوي على @PreAuthorize يتجاوز كون المستخدم مسجّل الدخول. يُضمّن FolderAccessGuard كامل basePath للتخزين المحلي (./storage) حتى عندما يكون policies.allowedFolderRoots فارغًا. يكتب LocalStorageProvider المسار {ownerId}/{uuid}_{filename}. يمكن لمستخدم بدور ROLE_USER تعيين directory: "storage/<victimUserId>"، وسرد ملفات PDF الخاصة بذلك المالك، ومسحها في مكانها باستخدام replace=true.

المسار المباشر /api/v1/storage/files/{id} مُرقَّع (findByIdAndOwner). طلب GET المختبري لملف الضحية بصفة القرين يعيد 403. ما تبقّى هو الجذر الضمني لمجلد المعالجة، وليس واجهة CRUD الخاصة بالتخزين.

يسرد مستخدم بدور ROLE_USER أسماء ملفات PDF المخزّنة لمستخدم آخر ويستبدل تلك الكتل. تنزيل الضحية يعيد الملف المُعدَّل.

المعرّفلا يوجد CVE بعد
CWECWE-639 / CWE-73
CVSS7.1 CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:H/A:N
المنتجStirling-PDF
المتأثرv3.2.0 (a7e593728dd9aa81e75318a949789d3c2e9ee754)، الصورة stirlingtools/stirling-pdf:3.2.0-fat، تسجيل الدخول مفعّل، storage.enabled=true
المصادقةROLE_USER على الفريق الافتراضي
الترخيصGNU Affero GPL v3.0
المختبر127.0.0.1:18154 فقط

بقايا من سلسلة بقايا Stirling-PDF v3.2.0. الشقيق: stirling-h2-import-leftover (H2 CREATE OR REPLACE ALIAS). هذه الحزمة هي IDOR الخاص بالتخزين.

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

أي مستخدم بشري مسجّل الدخول بدور ROLE_USER على إصدار login-on proprietary/fat مع تفعيل التخزين المحلي (الافتراضي في القالب). ملف compose الرسمي هو login-off مع DISABLE_ADDITIONAL_FEATURES=true؛ ذلك النشر يعيد 403 لـ /api/v1/storage ويحذف هذا المتحكم. نشر HIT هو قالب login-on مع fat.

جدول الصلاحيات (شامل). نفس المعيار كـ Signal-Server Dropwizard admin.

المحورالطريقة + المسارما يمنحهالمصدر
الاستطلاعROLE_USER GET /api/v1/user/usersuserId رقمي للمدير والقرين وSTIRLING-PDF-BACKEND-API-USERمُثبت مختبريًا
الاستطلاعPOST /api/v1/processing-folders {directory:"storage/1"} ثم GET /api/v1/processing-folders/{id}/filesالاسم والحجم ووقت التعديل لملف PDF المخزّن الخاص بالمدير (5341de35-8729-49cf-92d0-c8284e05bfc5_victim-lab.pdf)مُثبت مختبريًا
السلامةPOST /api/v1/processing-folders/{id}/sweep مع /api/v1/security/add-watermark ثم Range GET /api/v1/storage/files/1/download للضحيةإعادة كتابة في المكان. استجابة 206 / 3450 بايت للضحية تحتوي على STIRLING-STORAGE-FOLDER-IDOR-WITNESSمُثبت مختبريًا (replace=true)
السريةنفس المسح مع outputId للفريق / خطوة صادرة يمكن للمهاجم قراءتهانسخة من بايتات ملف PDF الخاص بالضحيةمُستنتج. غير مطلوب للسرد/الاستبدال

يبقى مغلقًا على هذا التثبيت

المحورالطريقة + المسارسبب إغلاقه
الاستطلاعGET /api/v1/storage/files/{id} لملف غير مشترك403 Access denied. مُثبت مختبريًا على معرّف الملف 1
الاستطلاع/api/v1/storage/** بدون مصادقة403 عند إيقاف تسجيل الدخول (ensureStorageEnabled)
السلامةCRUD لمعرّف UUID للمجلد عبر المالكينfindByIdAndOwner
السلامةLocalStorageProvider .. / مفتاح مطلقPath.startsWith(basePath) بعد التطبيع
السلامةصورة ultra-liteوحدة تحكم مجلد المعالجة الاحتكارية غائبة

GET /api/v1/user/users الذي يسرد STIRLING-PDF-BACKEND-API-USER هو مؤشر اختراق إضافي. لم أسجّله كبقايا مستقلة. تنزيل الضحية غير المُحدَّد النطاق يعيد 500 بعد الكتابة فوق الملف لأن FileStorageController لا يزال يعلن sizeBytes الأصلي من قاعدة البيانات. النطاق يعمل. نص العلامة المائية هو Identity-H في FlateDecode؛ والأوراكل يفكّ ضغط التدفقات.

كيف وجدته

أضاف الإصدار 3.x التخزين المحلي ومجلدات المعالجة. CRUD التخزين مقيّد بالمالك. تُرجع FolderAccessGuard.serverStorageRoots القيمة Path.of(basePath) للشجرة بأكملها، وليس basePath/{currentUserId}. وstorage/<victimId> يبدأ بـ startsWith ذلك الجذر الضمني.

ينشئ المختبر peeruser بدور ROLE_USER، ويرفع ملف PDF ضحية كمسؤول، ويثبت أن GET المباشر للتخزين يعيد 403، ويوجّه مجلد معالجة إلى storage/1، ويسرد الاسم المسبوق بـ UUID، ويمسح علامة مائية، ثم ينزّل عبر Range بصفتك الضحية.

مسارات خاطئة: التعامل مع IDOR المباشر للتخزين على أنه لا يزال مفتوحًا (403)؛ التعامل مع compose الرسمي بتسجيل الدخول المُعطَّل على أنه نشر HIT (تخزين 403، وحدة التحكم غائبة)؛ الادعاء بنسخة بايتات قابلة للقراءة من المهاجم دون outputId.

المختبر

python3 stirling-storage-folder-idor-Abraxas-Labs.py

أو

cd lab
./run.sh

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

IOC direct-storage-get http=403
IOC processing-folders-save directory=storage/1 http=202
IOC listed-peer ... victim-lab.pdf
IOC victim-download attempt=1 http=206 bytes=3450 witness=1
SUCCESS stirling-storage-folder-idor direct-storage-403=yes listed-peer-pdf=yes download-has-witness=yes STIRLING-STORAGE-FOLDER-IDOR-WITNESS

الإصلاح

قيّد جذر التخزين الضمني بـ basePath/{currentUserId} للقرص directory على الخوادم متعددة المستخدمين. ارفض storage/<otherId> بالطريقة التي يرفض بها findByIdAndOwner بالفعل معرّفات الملفات الأجنبية. أعد حساب sizeBytes المعلن عنه بعد إعادة الكتابة في المكان.

أعد تشغيل عميل الاسترجاع مقابل نسخة مُرقّعة: يجب أن يعيد directory=storage/1 بصفتك peeruser الخطأ 403، ويجب أن يبقى النظير المُدرج فارغًا.

حتى ذلك الحين، لا تعامل عبارة "لقد رقّعت /api/v1/storage/files/{id}" على أنها تعني "لقد قيّدت كل واجهة برمجية تأخذ مسار قرص تحت ./storage".

المراجع

  • github.com/Stirling-Tools/Stirling-PDF الوسم v3.2.0 (a7e593728dd9aa81e75318a949789d3c2e9ee754)
  • abraxaslabs.tech/research/stirling-storage-folder-idor
  • abraxaslabs.tech/research/stirling-pdf-3.2.0-leftovers

استقبال المورّد: تبويب GitHub Security Advisory أو [email protected]. لن أفتح بلاغًا عامًا على Stirling-Tools/Stirling-PDF.

مختبرات أبراكساس https://abraxaslabs.tech https://github.com/abraxas [email protected]

تنزيل الأداة