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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
CVE-2026-20217 — يعيد إنتاج ثغرة RCE غير مصادق عليها في ClamAV ضمن ZendTo وتصعيد امتيازات إلى صلاحيات الجذر في مختبر مُصرَّح به، مع هدف Docker مُثبَّت الإصدار، وتحقق يعمل بمبدأ الإغلاق عند الفشل، ومخرجات مربوطة بـ nonce، وتنظيف. | Kitploit
أدوات/GitHubGitHub/securifera/cve-2026-20217
تصعيد الامتيازاتتحليل الثغرات الأمنيةالاستغلالاستغلال تطبيقات الويبما بعد الاستغلالأمن الويباختبار الاختراقالفريق الأحمر
GitHubsecurifera/cve-2026-20217

CVE-2026-20217

يعيد إنتاج ثغرة RCE غير مصادق عليها في ClamAV ضمن ZendTo وتصعيد امتيازات إلى صلاحيات الجذر في مختبر مُصرَّح به، مع هدف Docker مُثبَّت الإصدار، وتحقق يعمل بمبدأ الإغلاق عند الفشل، ومخرجات مربوطة بـ nonce، وتنظيف.

1127منذ شهر واحدلم تتم المراجعة بعد

الأكثر شعبية

عرض الكل →

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

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

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

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

ZendTo 6.15-8 / إعادة إنتاج ثغرة RCE ذات ملف تعريف دقيق في ClamAV ومتغير الجذر

هذا الدليل عبارة عن حزمة إعادة إنتاج قائمة بذاتها لمختبر مأذون به، وتغطي سلسلة تنفيذ التعليمات البرمجية من ZendTo إلى ClamAV بدون حساب، بالإضافة إلى امتدادها المنفصل القائم على Smarty/مهمة الجذر المجدولة (root-cron) في ملف التعريف الافتراضي. وتتضمن:

  • الإغلاق الكامل لتبعيات إثبات المفهوم (PoC) القابل للتشغيل؛
  • نصوصًا ومصادر إثبات (provenance) لبناء طوبولوجيا Docker المستهدفة؛
  • تعريف Docker Compose مطابقًا لدورة حياة systemd/socket المختبرة؛
  • فحوصات تفشل عند أي خطأ (fail-closed) تغطي الصورة والحزم والثنائيات والإعدادات وقواعد بيانات CVD وDAC وcron وPHP وMAC ودلالات نظام الملفات؛ و
  • أدوات مساعدة لقدرة التحقق الوحيدة المقتصرة على المختبر وللتنظيف.

ينفّذ إثبات المفهوم الأولي أمرًا يختاره المستدعي بحساب خدمة clamav القياسي. أما المتغير الاختياري فيواصل ذلك التمكّن (foothold) بدون حساب لتنفيذ أمر يختاره المستدعي بصلاحيات root. وكلاهما يستخدم id افتراضيًا، ويرفض المسار الحرفي /root/flag، ويعيد مخرجات مرتبطة بـ nonce عبر HTTPS.

علاقات المجموعة والدليل وSmarty ومهام الجذر المجدولة القابلة للاستغلال هي الإعدادات الافتراضية لحزمة/مثبّت ZendTo في Debian. ومع ذلك، فإن الوصول إلى root مشروط بالبيئة: هذه العينة الإيجابية الدقيقة تستخدم وحدة تخزين /var/zendto بنظام ملفات ext4، مع FFI/POSIX/exec فعّال في PHP CLI، وعملية clamd غير مقيدة. فرض AppArmor/SELinux أو دلالات أنظمة ملفات غير متوافقة يمكن أن يمنع الامتداد على تثبيت قياسي آخر بخلاف ذلك.

استخدم هذا فقط على العينة القابلة للتخلص المرفقة أو على نظام آخر مُخوّل لك اختباره صراحةً.

ما هو مثبّت (pinned)

الهدف الدقيق الموثوق هو أثر محلي غير مُرقّم إصدارًا عمدًا في:

image/zendto-installer-systemd-debian12.tar.zst

يتجاهل Git أرشيفات صور Docker. قبل اختبار الانحدار الدقيق، ضع نسخة محلية مأذونًا بها في ذلك المسار؛ يتطلب scripts/setup.sh قيمة SHA-256 ومعرّف الصورة المسجّلين. يوثّق source-recipe/README.md كيف تم بناء الصورة المشتقة من المثبّت والتقاطها. البناء الجديد من مستودعات الحزم الحية مفيد لاختبار الطوبولوجيا لكنه لا يُفترض أن يكون مطابقًا بايتًا ببايت للهدف المثبّت.

يرفض سكربت الإعداد ونقطة دخول الحاوية أي عدم تطابق مع الملف التعريفي التالي:

المكوّنالقيمة الدقيقة المختبرة
Docker image IDsha256:de6d2f06ca04943362a9bdec5026e808448953728f31bd926343a4ed2ca2ef7c
ZendTo6.15-8
ClamAV/libclamav package1.4.3+dfsg-1~deb12u2
libclamavlibclamav.so.12.0.3, SHA-256 55e3cd94…027c
libclamav Build IDe6427ab62146ee3001fe463d12e797e9d25bf81a
glibc2.36-9+deb12u14, SHA-256 6b4a4535…421
main databasev63, SHA-256 0b2182d2…365
daily databasev28082, SHA-256 cddbcccf…906
bytecode databasev339, SHA-256 6d4aa01f…ffb
clamdMaxThreads 12, IdleTimeout 30, Restart=no
دورة الحياةclamav-daemon.socket مفعّل، systemd PID 1
بيئة الويبApache 2.4.68, PHP 8.2.32
وضعية MACحاوية Docker مميزة (privileged) غير مقيدة
جسر الجذرclamav القياسي في مجموعة www-data؛ /var/zendto root:www-data 0775
مستهلك الجذرمهمة تنظيف cron قياسية كجذر، كل ساعة عند الدقيقة 25
ذاكرة Smarty المؤقتةzendto.conf المترجم الحتمي Smarty 4.5.4
نظام ملفات التبادلوحدة تخزين /var/zendto مسماة بنظام ext4

القيم الكاملة موجودة في PROFILE.json.

هذا أقوى من تثبيت إصدار حزمة ClamAV فقط. بناء المخصّص (allocator) يعتمد أيضًا على glibc، وحركة مرور المحلل المدفوعة بـ CVD، وإعدادات العاملين، والمكتبة الهدف الدقيقة. FreshClam معطّل في الصورة الملتقطة، ويفشل الإقلاع إذا انجرف daily.cvd أو ظهر daily.cld.

الحاوية البحثية طويلة التشغيل حاليًا في مساحة العمل الأصلية ليست العينة النظيفة: الاختبارات اللاحقة عطّلت نموذج المرسل الخارجي فيها وحدّثت قاعدة بياناتها اليومية. تلك التغييرات مستبعدة عمدًا هنا. تستخدم هذه الحزمة خط الأساس النظيف الذي أُثبت على أساسه التنفيذ الأصلي.

متطلبات المضيف

  • Linux بمعمارية x86-64 مع Docker Engine وDocker Compose v2
  • صلاحية تشغيل حاويات مميزة (privileged)
  • cgroup v2 و/sys/fs/cgroup
  • zstd، وPython 3 مع venv، ومترجم C، وfile، وGNU readelf
  • ذاكرة كافية لمحللات ClamAV الأصلية دون حد حاوية ضيق
  • مساحة قرص حرة لا تقل عن 1 GiB للأثر المحلي للصورة وللهدف قيد التشغيل

يتشارك الهدف مع مضيفه نواة kernel وتطبيق ASLR. لذلك يبقى سلوك التعيين المعتمد على النواة متغيّر قابلية نقل (portability).

يجب أن يتشارك نظام systemd واحد فقط في مساحة اسم cgroup الخاصة بالمضيف في كل مرة. على جهاز البحث الأصلي، أوقف النموذج الأقدم دون حذفه:

docker stop zendto-installer-systemd-native

يمكن لاحقًا استعادته باستخدام docker start zendto-installer-systemd-native.

تشغيل الهدف الدقيق

من هذا الدليل:

./scripts/verify-bundle.sh
./scripts/setup.sh

يقوم سكربت الإعداد بما يلي:

  1. يتحقق من بيان المصدر الثابت (immutable source manifest) ومن SHA-256 للصورة المحلية؛
  2. يحمّل الصورة الدقيقة ويعيد وسمها دون الاتصال بأي سجل (registry)؛
  3. ينشئ .venv مع تبعيات PoC الخاصة بـ Python المثبّتة؛
  4. يعيد بناء أداة PESpin المحلية الصغيرة المساعدة لمكتبة libc الخاصة بالمشغّل؛
  5. يفحص الأثر المحلي لـ libclamav وجميع نوافذ الأدوات (gadgets) الهدف؛
  6. يتحقق من نموذج Compose؛
  7. ينشئ وحدة تخزين /var/zendto مسماة جديدة ويشغّل systemd؛ و
  8. يتحقق من إصدارات الحزم وتجزئات الهدف وقواعد بيانات CVD وApache وclamd وتفعيل المقبس (socket activation)؛ و
  9. يُثبت المتطلبات المسبقة الافتراضية لمتغير الجذر، بما فيها عملية renameat2(RENAME_EXCHANGE) القابلة للتخلص المنفذة بحساب clamav.

نقاط النهاية الافتراضية مقتصرة على الحلقة المحلية (loopback) فقط:

http://127.0.0.1:18084/
https://127.0.0.1:18447/

الشهادة ذاتية التوقيع. يستخدم PoC عمدًا verify=False لكل طلب HTTP. يمكن اختيار منافذ loopback مختلفة قبل الإعداد:

export ZENDTO_HTTP_PORT=19084
export ZENDTO_HTTPS_PORT=19447
./scripts/setup.sh

استخدم متغيرات البيئة نفسها لأوامر Compose/الأدوات المساعدة اللاحقة.

افحص الهدف في أي وقت:

./scripts/verify-target.sh
docker compose ps

حدود CAPTCHA/البريد الإلكتروني في هذه العينة

خط الأساس النظيف للمثبّت يتضمن:

allowExternalUploads = TRUE
confirmExternalEmails = TRUE
captcha = google

قيم CAPTCHA والبريد فيه عناصر نائبة من المثبّت، لذا لا يمكن للأرشيف غير المعدَّل تسليم رسالة التحقق العامة فعليًا. اختبار الانحدار الأصلي مثّل خطوة التطبيق المكتملة تلك فقط بصف AuthData مكافئ لمرسل خارجي. لم يتم تصحيح كود الهدف أو الحزم أو الماسح أو الصلاحيات أو مسار الاستغلال.

أنشئ ذلك الصف المخبري الواحد وملف رمز من الوضع 0600 باستخدام:

./scripts/mint-lab-auth.py [email protected]

يتم إخفاء قيمة الرمز وتخزينها في:

.lab/upload-auth-token.txt

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

على نشر مأذون به مهيأ بشكل طبيعي، احذف --external-auth-token-file: افتح صفحة التحقق يدويًا، وحل CAPTCHA، واستلم الرسالة التي يولّدها الهدف في صندوق بريد يتحكم به المهاجم، والصق عنوان URL/الرمز الخاص بها عند المطالبة المخفية.

1. تعداد عن بُعد فقط

لا يرسل هذا الوضع أي CAPTCHA أو بريد إلكتروني أو قدرات أو رفع أو POST تسجيل دخول أو محتوى ماسح. يمنع --skip-clamd-tcp-probe أيضًا الفحص الاختياري للقراءة فقط عبر TCP/3310:

mkdir -p -m 700 work

.venv/bin/python poc/zendto_6_15_8_unauth_clamav_rce.py \
  https://127.0.0.1:18447 \
  --enumerate-only \
  --skip-clamd-tcp-probe \
  --fingerprint-json work/fingerprint.json

ما زال التعداد يولّد سجلات وصول ويب عادية ويمكنه تهيئة مخابئ التطبيق العادية. نتيجته المتعلقة بتخطيط Apache في Debian/Ubuntu لا تثبت الحزمة الأصلية أو Build ID أو libc أو قواعد CVDs أو سياسة المقبس أو حالة MAC. يوفر سكربت التحقق المحلي عبر Docker هذا الدليل لهذه العينة.

2. تجربة جافة للقدرة والمستلم

يتحقق هذا من حامل المختبر وسياسة المستلم لكنه لا يرسل أي ملف أو محتوى ماسح:

.venv/bin/python poc/zendto_6_15_8_unauth_clamav_rce.py \
  https://127.0.0.1:18447 \
  --sender-email [email protected] \
  --recipient [email protected]. \
  --external-auth-token-file .lab/upload-auth-token.txt \
  --probe-only \
  --no-open-browser
تنزيل الأداة