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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
PIL-CVE-2017-8291-study — مختبر تعليمي يوضح CVE-2017-8291 (PIL/GhostScript RCE) عبر رفع ملف EPS مصمم بامتداد PNG، بما في ذلك إعداد Docker وتنفيذ PoC. | Kitploit
أدوات/GitHubGitHub/shun1403/pil-cve-2017-8291-study
تحليل الثغرات الأمنيةتحليل الكودالاستغلالاستغلال تطبيقات الويبالتعلم والتعليممختبرات وتدريب عملي
GitHubshun1403/pil-cve-2017-8291-study

PIL-CVE-2017-8291-study

مختبر تعليمي يوضح CVE-2017-8291 (PIL/GhostScript RCE) عبر رفع ملف EPS مصمم بامتداد PNG، بما في ذلك إعداد Docker وتنفيذ PoC.

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

الأكثر شعبية

عرض الكل →

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

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

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

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

PIL-CVE-2017-8291

  • 백승훈 (@shun1403) من الفصل 13 من الدفعة الثالثة لمدرسة القبعات البيضاء https://github.com/shun1403/PIL-CVE-2017-8291.git
  • البيئة: أوبونتو لينكس

تكوين البيئة

  • الترقية إلى الإصدار 2 عبر sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
  • في حال وجود أخطاء في التشغيل، أعد ضبط Docker باستخدام الأوامر التالية
  • sudo apt remove docker docker-engine docker.io containerd runc -y
  • sudo apt update
  • sudo apt install -y ca-certificates curl gnupg lsb-release
  • sudo mkdir -p /etc/apt/keyrings
  • curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
  • echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
  • sudo apt update
  • sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
  • docker compose version
  • عند التحقق من الإصدار، إذا ظهر بنجاح فهذا جيد.
  • استنساخ المستودع

    git clone https://github.com/vulhub/vulhub.git

    • بعد الاستنساخ، ادخل إلى مسار الثغرة الذي تريد العمل عليه.

    • هنا: /vulhub/python/PIL-CVE-2017-8291

    • اتبع ملف yml التالي لإجراء التمارين.

    • docker compose up -d : أمر لإنشاء حاوية وتشغيلها في الخلفية.

    • ثم قم بزيارة localhost:8000/ لترى صفحة ويب تسمح برفع الملفات. image

    • قم برفع ملف poc.png المعدل الموجود في نفس المسار.

    • بعد الرفع، ستظهر كما يلي.

    • image

    • في الوظيفة العادية، بعد رفع ملف PNG يتم عرض عرض وارتفاع الصورة. ولكن نظرًا لأن الخادم الخلفي يصنف نوع الصورة بناءً على ترويسة الملف (header)، فيمكن تجاهل الامتداد ورفع ملف EPS يحتوي على أوامر قابلة للتنفيذ بعد تغيير امتداده إلى PNG.

    • باستخدام هذا، عند رفع ملف poc.png، سيكون من الممكن تنفيذ الأمر 'tocuh /tmp/aaaaa'، وإذا قمت بتغيير الأمر داخل ملف POC إلى أمر قشرة عكسية (reverse shell)، يمكنك الحصول على قشرة.

    • بعد رفع هذا الملف، ادخل إلى حاوية Docker واذهب إلى /tmp وسترى أن الأمر أنشأ ملفًا باسم aaaaa.

    root@kitploit:~
    command = ["gs",
                "-q",                         # 조용한 모드(출력 최소화)
                "-g%dx%d" % size,             # 출력 이미지 크기 설정 (픽셀 단위)
                "-r%fx%f" % res,              # 입력 이미지 해상도(DPI) 설정
                "-dBATCH",                    # 작업 완료 후 자동 종료
                "-dNOPAUSE",                  # 페이지 간 일시 정지 없이 연속 실행
                "-dSAFER",                    # 안전 모드 활성화
                "-sDEVICE=ppmraw",             # 출력 디바이스를 ppmraw로 설정
                "-sOutputFile=%s" % outfile,   # 출력 파일 경로 지정
                "-c", "%d %d translate" % (-bbox[0], -bbox[1]), 
                                                # 이미지 원점을 보정 (이동)
                "-f", infile,                  # 입력 파일 지정
              ]
    

    تم حذف كود التحقق من تثبيت GhostScript

    root@kitploit:~
    try:
        with open(os.devnull, 'w+b') as devnull:
            subprocess.check_call(command, stdin=devnull, stdout=devnull)
        im = Image.open(outfile)
    

    النتائج

    image

    الاستنتاج

    هذه الثغرة هي ثغرة في مكتبة Python Imaging Library (PIL) وقد تم إجراؤها على CVE-2017-8291. تحدث الثغرة بسبب خاصية PIL في تحديد نوع الصورة بناءً على ترويسة الملف وليس على الامتداد، وبالتالي يمكن رفع ملف في الواقع بصيغة EPS ولكن مع تغيير الامتداد إلى PNG، وعندما يقوم الخادم باستدعاء GhostScript، يمكن تنفيذ أوامر عشوائية مدمجة في الملف. من خلال رفع ملف poc.png المعدل في المشروع وتأكيد إنشاء ملف /tmp/aaaaa داخل الخادم، تم إعادة إنتاج أن الثغرة يمكن أن تؤدي بالفعل إلى تنفيذ أوامر (RCE). بالإضافة إلى ذلك، لوحظ أن هذه الثغرة تحمل إمكانية التوسع إلى هجمات متقدمة مثل القشرة العكسية عن طريق استغلال وظيفة معالجة الصور الأصلية.

    تنزيل الأداة