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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
Dirty-Pipe-Exploits — استغلالات الثغرة CVE-2022-0847(Dirty Pipe). | Kitploit
أدوات/GitHubGitHub/gustavo-nogueira/dirty-pipe-exploits
تصعيد الامتيازاتتحليل الثغرات الأمنيةالاستغلالالتعلم والتعليماستغلال الملفات الثنائيةمختبرات وتدريب عملي
GitHubgustavo-nogueira/dirty-pipe-exploits

Dirty-Pipe-Exploits

استغلالات الثغرة CVE-2022-0847(Dirty Pipe).

الأكثر شعبية

عرض الكل →

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

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

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

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

CVE-2022-0847 Exploits

Dirty Pipe

ما هو؟

تم الكشف عنها في 7 مارس 2022 بواسطة Max Kellerman[2]، CVE-2022-0847 هي ثغرة في نواة لينكس (الإصدارات بين 5.8 و 5.16.11) تسمح للمهاجمين باستبدال الملفات القابلة للقراءة فقط أو غير القابلة للتغيير ورفع صلاحياتهم على نظام الضحية. أُطلق على CVE-2022-0847 اسم Dirty Pipe ولديها درجة CVSS تبلغ 7.8 (تعتبر عالية).

كيف يعمل استغلال الثغرة؟

تُوصف ثغرة Dirty Pipe بأنها خلل في طريقة تهيئة سمة flags في هيكل pipe_buffer[7]، حيث لم تكن تحتوي على تهيئة مناسبة في دالتي copy_page_to_iter_pipe و push_pipe في نواة لينكس، وبالتالي يمكن أن تحتوي على قيم قديمة. إحدى العلامات التي يمكن تعيينها في سمة flags في هيكل pipe_buffer هي العلامة المسماة PIPE_BUF_FLAG_CAN_MERGE. تشير هذه العلامة إلى ما إذا كان دمج المزيد من البيانات في pipe_buffer مسموحًا به أم لا. وبهذه الطريقة، عندما يتم نسخ البيانات إلى pipe_buffer، يمكن إضافة المزيد من البيانات إلى pipe_buffer إذا كانت الصفحة المنسوخة أصغر من 4096 بايت.

من خلال حقن PIPE_BUF_FLAG_CAN_MERGE في مرجع من ذاكرة التخزين المؤقت للصفحات (page cache)، أصبح من الممكن الكتابة فوق البيانات في ذاكرة التخزين المؤقت للصفحات، ببساطة عن طريق كتابة بيانات جديدة إلى الأنبوب المُجهَّز بطريقة خاصة (سيتم وصف هذه العملية في الفقرات التالية). وبهذه الطريقة، يمكن لمستخدم محلي غير مُمتاز استخدام هذا الخلل للكتابة/الكتابة فوق الصفحات في ذاكرة التخزين المؤقت للصفحات المدعومة بملفات للقراءة فقط، وبالتالي رفع صلاحياته على النظام.

وبناءً على ذلك، لاستغلال الثغرة، يجب اتباع الخطوات التالية:

  1. إنشاء أنبوب (pipe).
  2. ملء الأنبوب ببيانات عشوائية (لتعيين العلامة PIPE_BUF_FLAG_CAN_MERGE في جميع إدخالات المصفوفة الدائرية).
  3. تفريغ الأنبوب (مع ترك العلامة PIPE_BUF_FLAG_CAN_MERGE مُعيَّنة في جميع نسخ هيكل pipe_buffer في المصفوفة الدائرية). عادةً، يجب إعادة تعيين العلامة. ومع ذلك، فإن ثغرة Dirty Pipe تجعل العلامة تبقى مُعيَّنة على 1.
  4. نقل ملف للقراءة فقط إلى الأنبوب باستخدام استدعاء النظام splice.
  5. تعديل الملف للقراءة فقط. نظرًا لأن استدعاء النظام splice يستخدم طريقة الإسناد بالمرجع (pass-by-reference)، يمكن للمهاجم الكتابة فوق الملف بسبب العلامة PIPE_BUF_FLAG_CAN_MERGE.

الثغرات (Exploits)

قم بتجميع كل شيء بالأمر التالي:

root@kitploit:~
make

استغلال 1 - الكتابة فوق الملفات للقراءة فقط

التشغيل

root@kitploit:~
./exploit-1

الوصف

يتكون الاستغلال 1، الموجود في الملف exploit-1.c من المستودع، من الكتابة فوق كلمة مرور المستخدم root الموجودة في الملف /etc/passwd (يحتوي هذا الملف على معلومات حول حساب المستخدم، مثل كلمة المرور المشفرة) وأخيرًا توفير محطة طرفية بصلاحيات root. للقيام بذلك، كان من الضروري:

  1. عمل نسخة احتياطية من الملف /etc/passwd.
  2. تجهيز الأنبوب (كما هو موضح في الخطوات 1 و 2 و 3 المذكورة أعلاه) باستخدام العلامة PIPE_BUF_FLAG_CAN_MERGE.
  3. نقل الملف /etc/passwd إلى الأنبوب والكتابة فوق محتويات هذا الملف بكلمة مرور root جديدة معروفة (كما هو موضح في الخطوات 4 و 5 المذكورة أعلاه).
  4. إنشاء جلسة كـ root باستخدام كلمة المرور الجديدة المُعينة.
  5. بعد ذلك، يتم إعادة تعيين كلمة المرور إلى القيمة الأصلية من النسخة الاحتياطية، وبالتالي دون ترك أي أثر.
  6. وأخيرًا، مع استمرار جلسة root، يتم تحرير محطة طرفية shell بصلاحيات root.

استغلال 2 - اختطاف الثنائيات SUID

البحث عن الثنائيات SUID

root@kitploit:~
find / -perm -4000 2>/dev/null

التشغيل

root@kitploit:~
./exploit-2 <path-of-suid-binary>

الوصف

يتكون الاستغلال 2، الموجود في الملف exploit-2.c من المستودع، من الكتابة فوق ثنائي SUID (تم الإبلاغ عن هذا النوع من الهجوم في القسم 3.5.2) وأخيرًا توفير محطة طرفية بصلاحيات root. للقيام بذلك، كان من الضروري:

  1. تجهيز كود تنفيذي بتنسيق ELF (Executable and Linking Format) سيتم استخدامه للكتابة فوق الثنائي SUID الذي سيتم استلامه كمعامل. في الاستغلال، يقوم الملف التنفيذي ELF المستخدم بإنشاء ملف تنفيذي جديد (/tmp/sh)، والذي بدوره ينشئ محطة طرفية shell بصلاحيات root.
  2. استلام مسار ثنائي SUID كمعامل.
  3. عمل نسخة احتياطية من الثنائي المستلم.
  4. تجهيز الأنبوب (كما هو موضح في الخطوات 1 و 2 و 3 المذكورة أعلاه) باستخدام العلامة PIPE_BUF_FLAG_CAN_MERGE.
  5. نقل ملف الثنائي المستلم إلى الأنبوب والكتابة فوق محتويات هذا الملف بالملف التنفيذي ELF المُشار إليه في الخطوة 1 (كما هو موضح في الخطوات 4 و 5 المذكورة أعلاه).
  6. بعد ذلك، يتم استعادة الثنائي المستلم إلى محتواه الأصلي من النسخة الاحتياطية، وبالتالي دون ترك أي أثر.
  7. وأخيرًا، يتم تنفيذ الملف التنفيذي /tmp/sh المذكور في الخطوة 1، وبذلك يتم فتح shell جديد بصلاحيات root.

استغلال 3 - إضافة مفتاح للوصول عن بُعد

التشغيل

root@kitploit:~
./exploit-3

الوصف

يستخدم الاستغلال 3، الموجود في الملف exploit-3.c من المستودع، نفس خطوات الاستغلال 1 للحصول على صلاحية shell root. الفرق هو أن الاستغلال 3، بعد الحصول على صلاحية shell root، يقوم بتحميل مفتاح SSH (Secure Shell) عام للمهاجم في الملف /root/.ssh/authorized_keys وإنشاء نفق TCP (Transmission Control Protocol) للوصول عن بُعد إلى SSH باستخدام منصة Ngrok.

المراجع

[1] AHMED, Alexis. Privilege Escalation Techniques: Learn the art of exploiting Windows and Linux systems. Birmingham: Packt Publishing, أكتوبر 2021.

[2] KELLERMANN, Max. The Dirty Pipe Vulnerability. متاح في: https://dirtypipe.cm4all.com/. تم الوصول في: 23 يوليو 2022.

[3] Exploit Database. متاح في: https://www.exploit-db.com/. تم الوصول في: 03 أغسطس 2022.

[4] Traitor: Automatically exploit low-hanging fruit to pop a root shell. متاح في: https://github.com/liamg/traitor. تم الوصول في: 03 أغسطس 2022.

[5] PayloadsAllTheThings. Linux - Privilege Escalation. متاح في: https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/Methodology%20and%20Resources/Linux%20-%20Privilege%20Escalation.md#cve-2022-0847-dirtypipe. تم الوصول في: 03 أغسطس 2022.

[6] مستودع نواة لينكس - Struct pipe_inode_info. متاح في: https://github.com/torvalds/linux/blob/v5.8/include/linux/pipe_fs_i.h#L76. تم الوصول في: 03 أغسطس 2022.

[7] مستودع نواة لينكس - Struct pipe_buffer. متاح في: https://github.com/torvalds/linux/blob/v5.8/include/linux/pipe_fs_i.h#L26-L32. تم الوصول في: 03 أغسطس 2022.

[8] ARNTZ, Pieter. Linux "Dirty Pipe" vulnerability gives unprivileged users root access. Malwarebytes Lab. متاح في: https://www.malwarebytes.com/blog/news/2022/03/linux-dirty-pipe-vulnerability-gives-unprivileged-users-root-access. تم الوصول في: 03 أغسطس 2022.

[9] Picus Security. Linux “Dirty Pipe” CVE-2022-0847 Vulnerability Exploitation Explained. متاح في: https://www.picussecurity.com/resource/linux-dirty-pipe-cve-2022-0847-vulnerability-exploitation-explained. تم الوصول في: 03 أغسطس 2022.

[10] Exploit Database - Local Privilege Escalation (Dirty Pipe). متاح في: https://www.exploit-db.com/exploits/50808. تم الوصول في: 03 أغسطس 2022.

تنزيل الأداة