Skip to content
KitploitKITPLOIT
أدواتالمدونة
إرسال
أدواتالمدونة
إرسال

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
CVE-2023-22515 — شرح خطوة بخطوة لاستغلال CVE-2023-22515، وهو ثغرة تحكم وصول مكسور حرجة في Atlassian Confluence Server وData Center، مما يتيح إنشاء حساب مسؤول عن بُعد. | Kitploit
أدوات/GitHubGitHub/tranphuc2005/cve-2023-22515
تحليل الثغرات الأمنيةالاستغلالاستغلال تطبيقات الويباختبار الاختراقالتعلم والتعليم
GitHubtranphuc2005/cve-2023-22515

CVE-2023-22515

شرح خطوة بخطوة لاستغلال CVE-2023-22515، وهو ثغرة تحكم وصول مكسور حرجة في Atlassian Confluence Server وData Center، مما يتيح إنشاء حساب مسؤول عن بُعد.

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

الأكثر شعبية

عرض الكل →

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

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

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

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

CVE-2023-22515

معلومات أساسية عن CVE-2023-22515

  • المنتج المتأثر: Atlassian Confluence Data Center وConfluence Server.

  • تاريخ الإعلان: 04/10/2023.

  • مستوى الخطورة: حرج (CVSS ~ 10.0).

  • نوع الثغرة: Broken Access Control / تفويض غير صحيح → تسمح للمهاجم بإنشاء حساب مسؤول عن بُعد.

  • الخلل يكمن في آلية إعداد Confluence (setup mechanism)

  • التأثير: Confluence Data Center وServer 8.0.0 ← 8.5.1.

تنفيذ البحث عن الثغرة

  • أولاً عند تثبيت Confluence توجد خطوة تكوين لتشغيل الخادم، مثل الاتصال بقاعدة البيانات DATABASE، إنشاء مستخدم، ... تتم هذه الأمور عبر متصفح الويب ومسارات URL /setup/. الخطوة الأخيرة من التكوين هي /setup/setupadministrator.action.
  • بعد اكتمال الإعداد، لا يمكن استدعاء هذه الإعدادات مرة أخرى. إذا حاولنا استدعاءها فستظهر رسالة خطأ

1

  • يعود السبب إلى أحد الـ interceptor وهي SetupCheckInterceptor من struts.xml

  • struts.xml هو ملف التكوين المركزي لـ Struts.

  • يحدد كيفية قيام Confluence بتعيين URL ← Action class ← View template.

  • كما يصرّح عن الـ interceptor (الطبقات التي تعترض معالجة الطلب قبل/بعد تنفيذ الـ action).

1

داخل SetupCheckInterceptor يتم استدعاء BootstrapUtils.getBootstrapManager().isSetupComplete()

root@kitploit:~
public String intercept(ActionInvocation actionInvocation) throws Exception {
    if (BootstrapUtils.getBootstrapManager().isSetupComplete() && ContainerManager.isContainerSetup())
        return "alreadysetup"; 
    return actionInvocation.invoke();
}

الشرح

  • BootstrapUtils.getBootstrapManager().isSetupComplete()
    → يتحقق مما إذا كان Confluence قد أكمل عملية الإعداد (عبر المعالج، إدخال الترخيص، إنشاء مستخدم المسؤول) أم لا.

  • ContainerManager.isContainerSetup()
    → يتحقق مما إذا كانت حاوية Spring IoC قد تم تهيئتها بالكامل.

  • إذا كان الشرطان كلاهما صحيحين:
    → فهذا يعني أن النظام قد اكتمل إعداده بالكامل ← يقوم الـ interceptor بإرجاع "alreadysetup" فورًا.
    → ولا يسمح بمتابعة تنفيذ الـ action (عادةً إجراءات الإعداد مثل SetupDatabaseAction, SetupLicenseAction, ...).

  • إذا لم يكتمل الإعداد بالكامل:
    → يتم استدعاء actionInvocation.invoke() ← أي متابعة تنفيذ الـ action الذي طلبه المستخدم.

getBootstrapManager() → يُرجع عادةً DefaultAtlassianBootstrapManager وهو المدير المسؤول عن جميع معلومات التكوين الأساسية أثناء عملية الإعداد

  • في DefaultAtlassianBootstrapManager.isSetupComplete يمكننا رؤية أن طريقة تكوين التطبيق isSetupComplete يتم استدعاؤها للتحقق مما إذا كانت عملية الإعداد قد اكتملت أم لا.

1

=> إذا جعلنا isSetupComplete = False فإن SetupCheckInterceptor لن يُرجع "alreadysetup" وسيصبح /setup/setupadministrator.action قابلًا للوصول.

بالأسفل لدينا ServerInfoAction

  • ServerInfoAction = Action عام في Confluence → يسمح لأي مستخدم باستدعائه دون تسجيل دخول، ودون الحاجة إلى رمز CSRF. عند تشغيله، يُرجع فقط "success" ← يتم تعيينه إلى قالب يعرض معلومات الخادم.

1

  • إنه مشتق من ConfluenceActionSupport
  • في ConfluenceActionSupport نرى أن getBootstrapStatusProvider يُرجع BootstrapStatusProviderImpl وهي الفئة التي نبحث عنها

1

  • في BootstrapStatusProviderImpl توجد أيضًا getApplicationConfig لإرجاع تكوين التطبيق

1

  • أخيرًا عند الدخول إلى داخل ApplicationConfig يمكننا رؤية أنه يوفّر التحقق من setSetupComplete

1

  • بدمج الأجزاء السابقة يمكننا استنتاج سلسلة من الطرق لتحويل setSetupComplete = false
root@kitploit:~
getBootstrapStatusProvider(). getApplicationConfig (). setSetupComplete ( false );
  • سيتيح لنا XWorks2 تنفيذ سلسلة getter/setter من هذا النوع، ويمكننا بناء معامل HTTP لتنفيذ سلسلة استدعاءات الطرق أعلاه باستخدام الترميز الذي يتطلبه XWorks2
root@kitploit:~
bootstrapStatusProvider.applicationConfig.setupComplete=false
  • سنستغل /server-info.action وهو عنوان URL في Confluence تتم معالجته بواسطة ServerInfoAction لأنه نقطة نهاية عامة لا تتطلب تسجيل الدخول.
root@kitploit:~
/server-info.action?bootstrapStatusProvider.applicationConfig.setupComplete=false

1

لنفحص وضع التصحيح Debug:

  • setupComplete (المعامل المُمرَّر إلى الدالة)
    ← false
    أي أن الدالة تُستدعى بالمعامل false.

  • this.setupComplete (متغير الكائن من صنف ApplicationConfig)
    ← true (قبل التعيين).

  • عند اكتمال الأمر ← ستصبح this.setupComplete مساوية false.

1

  • بعد إتمام الخطوة السابقة، لنجرب الدخول مرة أخرى إلى نقطة النهاية /setup/setupadministrator.action وسننجح

1

  • بعد الإنشاء، سجّل الدخول وتحقق من الصلاحيات مرة أخرى

1

تنزيل الأداة