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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
exploiting-cve-2017-5123 — الكود المصدري وملفات التكوين المتعلقة بمقالتنا في MISC96 | Kitploit
أدوات/GitHubGitHub/synacktiv-contrib/exploiting-cve-2017-5123
تصعيد الامتيازاتتحليل الثغرات الأمنيةالاستغلالالتعلم والتعليماستغلال الملفات الثنائية
GitHubsynacktiv-contrib/exploiting-cve-2017-5123

exploiting-cve-2017-5123

الكود المصدري وملفات التكوين المتعلقة بمقالتنا في MISC96

عرض المستودع

الأكثر شعبية

عرض الكل →

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

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

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

عرض جميع الأدوات →
مشاركة
42منذ 8 سنواتلم تتم المراجعة بعد

استغلال CVE-2017-5123

مقدمة

هذا المستودع هو إضافة للمقال المنشور في مجلة MISC العدد 96.

لقد تمكنا من رفع صلاحياتنا بطريقة موثوقة على جهازنا الافتراضي مع تفعيل SMEP / SMAP و KASLR. ومع ذلك، تجدر الإشارة إلى أن النظام يُترك في حالة غير مستقرة ومن المحتمل جدًا حدوث خطأ (oops).

محتويات هذا المستودع

في المجلد configs/، ستجد ملفات تهيئة لنواة لينكس و Busybox، كل منها يختلف قليلاً عن الملفات الافتراضية.

يحتوي المجلد binaries/ على جميع الملفات الثنائية المبنية مسبقًا التي ستحتاجها لإعادة إنتاج بيئة الاختبار الخاصة بنا، مثل نظام جذر كامل (rootfs) جاهز للاستخدام مع QEMU.

linux-stable هو وحدة فرعية من Git تشير إلى إصدار ضعيف من نواة لينكس. استخدم git submodule update --recursive لجلبها (إذا كان لديك على الأقل 1 جيجابايت من المساحة الحرة على نظامك...). نفس الشيء ينطبق على busybox.

إعداد البيئة

بيئتنا تعتمد على جهاز افتراضي QEMU x86 مع مجلد مشترك مع المضيف عبر 9P. يتم تجميع إصدار ضعيف من النواة (ff33952e4d23) إلى جانب بناء مرتبط بشكل ثابت لـ Busybox.

تهيئة النواة

تهيئتنا بسيطة جدًا، لأننا لا نحتاج إلى دعم أي نوع من البنى أو الأجهزة الغريبة. تم إنشاؤها عن طريق تشغيل make defconfig وتم تفعيل بعض الميزات لدعم شبكة QEMU ومشاركة المجلدات:

root@kitploit:~
CONFIG_BLK_MQ_VIRTIO=y
CONFIG_MEMORY_BALLOON=y
CONFIG_BALLOON_COMPACTION=y
CONFIG_NET_9P=y
CONFIG_NET_9P_VIRTIO=y
CONFIG_NET_9P_DEBUG=y
CONFIG_VIRTIO_BLK=y
CONFIG_VIRTIO_BLK_SCSI=y
CONFIG_VIRTIO_NET=y
CONFIG_HVC_DRIVER=y
CONFIG_VIRTIO_CONSOLE=y
CONFIG_HW_RANDOM_VIRTIO=y
CONFIG_VIRTIO=y
CONFIG_VIRTIO_PCI=y
CONFIG_VIRTIO_PCI_LEGACY=y
CONFIG_VIRTIO_BALLOON=y
CONFIG_VIRTIO_INPUT=y
CONFIG_VIRTIO_MMIO=y
CONFIG_VIRTIO_MMIO_CMDLINE_DEVICES=y
CONFIG_9P_FS=y
CONFIG_9P_FS_POSIX_ACL=y
CONFIG_9P_FS_SECURITY=y

تمت أيضًا إضافة نصوص GDB ورموز التصحيح لتسهيل تطوير أول إثباتات المفهوم (PoCs):

root@kitploit:~
CONFIG_DEBUG_INFO=y
CONFIG_DEBUG_INFO_DWARF4=y
CONFIG_GDB_SCRIPTS=y

يرجى ملاحظة أنه في هذا الإصدار، يتم تمكين KASLR افتراضيًا على x86. نظرًا لأن النواة تُعنون في عناوين مختلفة بعد كل إعادة تشغيل، لن يتمكن GDB من مطابقة ملف الرموز معها. لديك إذن خياران: إجراء الاختبارات بدون KASLR أو تمرير العنوان الأساسي للنواة إلى symbol-file عند تحميل الرموز في GDB.

بعد تجميعها، ستجد bzImage في linux-stable/arch/x86/boot/bzImage.

هذا الملف موجود في binaries/bzImage وملف التهيئة خاصتنا في confifs/kernel.config. لاستخدامه، فقط انسخه كـ .config في linux-stable.

تجميع Busybox

استخدمنا آخر إصدار مستقر من Busybox، 1.28. الإعداد الوحيد الذي يجب تغييره هو CONFIG_STATIC، اضبطه على y. لا ينبغي أن يسبب تجميعه أي مشكلة.

ملف التهيئة الخاص بنا متاح في configs/busybox.config وملف ثنائي مُجمّع بشكل ثابت في binaries/busybox. كما هو الحال مع لينكس، فقط انسخه كـ .config في مجلد مصادر Busybox.

تجميعها معًا

Busybox يطبق بالفعل عملية init التي ستحاول تنفيذ /etc/init.d/rcS. عادةً، يتم توفيرها بواسطة توزيعتك (ربما باسم مختلف) ولكن سيتعين علينا القيام بذلك بأنفسنا هنا! سيقوم هذا السكربت بإنشاء وتثبيت عدة مجلدات نظام إلزامية (proc, sys, dev)، ومجلدنا المشترك مع المضيف، وإسقاطنا في شل غير مميزة:

root@kitploit:~
for i in $(seq 1 9); do mknod /dev/tty$i c 4 1; done

mknod -m 0666 /dev/null c 1 3
mknod -m 0660 /dev/ttyS0 c 4 64

mount -t proc proc /proc
mount -t sysfs sysfs /sys
mount -t devtmpfs none /dev

mkdir -p /mnt/share
mount -t 9p -o trans=virtio share /mnt/share/ -oversion=9p2000.L,posixacl,sync
chmod 777 /mnt/share/

export ENV=/etc/profile
setsid cttyhack setuidgid 1000 sh

umount /proc
umount /sys
umount /dev

poweroff -f

الملف /etc/profile ليس إلزاميًا ولكنه مفيد نوعًا ما أثناء اختباراتنا، خاصة عندما لم يكن الاستغلال موثوقًا واستغرق الأمر عدة محاولات للحصول على صلاحيات الجذر.

الاستغلال

عملية كتابة الاستغلال موثقة بشكل جيد في MISC 96: نستخدم unsafe_put_user لاستقصاء الذاكرة حتى نجد العنوان الأساسي للكومة. ثم، آلاف الاستدعاءات لـ clone تتيح لنا رش العديد من هياكل cred في الذاكرة. أثناء اختباراتنا، كان موقعهم في الذاكرة أكثر "ثباتًا" بكثير من استخدام fork، لأنه يخصص هياكل أقل للمهمة الجديدة.

ما تبقى

الخروج من العملية الفرعية سيتسبب في خطأ في النواة (oops)، بسبب طلب ترحيل صفحات خاطئ، وهذا يحتاج إلى معالجة صحيحة.

المساهمة

إذا كنت ترغب في تحسين موثوقية هذا الاستغلال أو إضافة توثيق، فنحن نرحب بالمساهمات! ربما نكون أيضًا قد ارتكبنا أخطاء أو عدم دقة في بعض المفاهيم، فلا تتردد في فتح مشكلة (issue) إذا كنت تعتقد أن هناك شيئًا خاطئًا.

روابط مفيدة

نواة لينكس

  • https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=96ca579a1ecc943b75beba58bebb0356f6cc4b51
  • https://01.org/linuxgraphics/gfx-docs/drm/dev-tools/gdb-kernel-debugging.html

الاستغلال

  • https://reverse.put.as/2017/11/07/exploiting-cve-2017-5123/
  • https://github.com/0x5068656e6f6c/CVE-2017-5123/blob/master/CVE-2017-5123.c
تنزيل الأداة