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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
snapshot-demo — CVE-2022-27499 | Kitploit
أدوات/GitHubGitHub/web-logs2/snapshot-demo
أدوات التشفير/فك التشفيرتحليل الثغرات الأمنيةالاستغلالاختبار الاختراقأمن الأجهزةالفريق الأحمر
GitHubweb-logs2/snapshot-demo

snapshot-demo

CVE-2022-27499

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

الأكثر شعبية

عرض الكل →

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

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

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

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

عرض توضيحي لـ Snapshot Attack

هذا هو العرض التوضيحي الأصلي لهجوم Snapshot Attack غير المتوقع الذي اكتشفناه. نشكر Intel على التنبيه الأمني.

بناء العرض التوضيحي

تثبيت Intel SGX SDK و Occlum

أولاً، يجب على أي شخص يرغب في تشغيل العرض التوضيحي تثبيت Intel SGX SDK و Occlum (يمكنك اختيار استخدام نسختنا المعدلة من SGX SDK). نوفر ملف Dockerfile للتثبيت السريع لـ Occlum/SDK. تم تعديل SGX SDK لمساعدة المهاجم في تحديد التوقيت.

يمكنك أيضًا تثبيت Occlum على الجهاز المضيف. (يرجى الرجوع إلى https://github.com/occlum/occlum لمزيد من تفاصيل التثبيت.) في كلتا الحالتين، ستحتاج إلى تثبيت برنامج تشغيل Intel SGX على مضيفك أولاً، أو استخدام برنامج تشغيل SGX داخل النواة.

root@kitploit:~
(sudo) docker build -t $Your_Image_Name .

بعد بناء الصورة، قم بتشغيل

root@kitploit:~
(sudo) docker run -it --privileged -p $Redis_Server_Port:6379 -v $Host_SGX_Driver_Path:/dev/sgx --name "snapshot-demo" $Your_Image_Name

هنا $Redis_Server_Port هو رقم منفذ المضيف الذي ترغب في كشفه لخادم Redis داخل الحاوية، بينما $Host_SGX_Driver_Path هو مسار الجهاز المذكور أعلاه لبرنامج تشغيل SGX المثبت لديك.

بناء البرنامج الهدف

البرنامج الهدف موجود في المجلد bash_redis.

يقوم برنامج الضحية بتشغيل سكريبت bash-shell (occlum_bash.sh). يقوم أولاً بجلب كلمة مرور موفرة، لتوليد ملف تكوين Redis مخصص، مع تعبئة إدخال "requirepass". ثم يستدعي خادم Redis، وفقًا لملف التكوين المخصص.

لبناء برنامج توليد التكوين، قم بتشغيل make. لبناء خادم Redis، نفذ الأوامر التالية.

root@kitploit:~
cd bash_redis
./download_and_build_redis_glibc.sh

تشغيل العرض التوضيحي

تأكد من أن برنامج Redis للضحية يعمل

افتح نافذة طرفية للضحية. قم بتشغيل run_redis.sh، وتحقق مما إذا كان خادم Redis يعمل بشكل جيد.

باستخدام الأمر redis-cli -h $Redis_Server_IP -p $Redis_Server_Port -a admin123456 للتحقق مما إذا كانت كلمة المرور (admin123456) قد تم تعيينها في ملف التكوين.

اضغط ctrl + C لإنهاء خادم Redis.

التقاط اللقطة

قم بإعداد نافذتين طرفيتين، واحدة للضحية والأخرى للمهاجم. يمكنك فتح نافذة إضافية واحدة فقط (للمهاجم) إذا كانت نافذة واحدة قد فتحت بالفعل للضحية.

قم بتشغيل run_redis.sh في نافذة الضحية مرة أخرى. سيبدأ هذا السكريبت تشغيل البرنامج الهدف.

يحتاج المهاجم إلى التقاط لقطة (باستخدام ./take_snapshot_step-1.sh) عندما يتمكن من تحديد أن اللقطة يتم تفريغها. في العرض التوضيحي، يمكن للمهاجم الحصول على إشعار واضح من نافذة الضحية كما يلي.

root@kitploit:~
...
Run ./take_snapshot_step-1.sh NOW!
line 4522: # passwords, then flags, or key patterns. However note that the additive
line 4523: # and subtractive rules will CHANGE MEANING depending on the ordering.
line 4524: # For instance see the following example:
...

قم بتشغيل سكريبت ./take_snapshot_step-1.sh على نافذة المهاجم.

إذا قمت ببناء Occlum باستخدام SGX SDK المعدل لدينا، فسوف ترى المزيد من رسائل التلميح. وذلك لأننا قمنا بتعديل الجزء غير الموثوق من Intel SGX SDK، وطباعة رسائل مساعدة لتسهيل على المهاجم تحديد التوقيت. ولراحة المهاجم، نقوم بحجز فتحات زمنية للسماح للمهاجم بتشغيل ./take_snapshot_step-1.sh. في الواقع، يمكن للمهاجم الذي لديه صلاحية الجذر على المضيف اعتراض تنفيذ الإينكليف والتقاط أي لقطات عن طريق تعديل الجزء غير الموثوق من SGX SDK.

بمجرد تشغيل خادم Redis وبدء العمل، قم بتشغيل ./take_snapshot_step-2.sh لإكمال جمع اللقطات.

إعادة تشغيل الإينكليف

يقوم المهاجم بتشغيل replay_redis.sh لإعادة تشغيل الإينكليف باستخدام اللقطة التي جمعناها. يمكن لأي عميل تسجيل الدخول إلى خادم Redis دون مصادقة.

مثال لأمر عميل Redis:

root@kitploit:~
redis-cli -h $Redis_Server_IP -p $Redis_Server_Port
keys *

إذا ظهرت رسالة (error) NOAUTH Authentication required.، فهذا يعني أنك ستحتاج إلى كلمة مرور للوصول إلى خادم Redis. اكتب auth $Your_Password لاجتياز المصادقة. استخدم auth admin123456 في هذا العرض التوضيحي.

إذا ظهرت رسالة (empty array)، فهذا يعني أنك لا تحتاج إلى كلمة مرور للوصول إلى خادم Redis.

ملاحظة

أحيانًا يفشل العرض التوضيحي بسبب فحص التكامل الخاص بـ Occlum. ربما ترى الرسالة التالية.

root@kitploit:~
Replaying ...
~/snapshot-demo/bash_redis_replay/occlum_instance ~/snapshot-demo/bash_redis_replay
In: writing meta-data in write_all_changes_to_disk
In: writing meta-data in write_all_changes_to_disk
Error: Os { code: 22, kind: InvalidInput, message: "Invalid argument" }
[ERROR] occlum-pal: The init process exit with code: 1 (line 59, file src/pal_api.c)
[ERROR] occlum-pal: Failed to run the init process: EINVAL (line 129, file src/pal_api.c)

قم ببساطة بتشغيل العرض التوضيحي مرة أخرى (من مرحلة التسجيل)، ثم سيختفي الخطأ إلى الأبد.

حظاً سعيداً واستمتع!

تنزيل الأداة