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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
cve-2020-14343-lab — مختبر بحث واستنساخ الثغرات الأمنية المُتحكَّم به لـ CVE-2020-14343 في PyYAML | Kitploit
أدوات/GitHubGitHub/saina15/cve-2020-14343-lab
ماسحات الثغرات الأمنيةأمن الحاوياتالتحليل الديناميكي (عزل)تحليل الثغرات الأمنيةالاستغلالالمحاكاة الافتراضية للأماناختبار الاختراقالأوراق والأبحاثالتعلم والتعليممختبرات وتدريب عملي
GitHub
33منذ شهر واحدلم تتم المراجعة بعد
saina15/cve-2020-14343-lab

cve-2020-14343-lab

مختبر بحث واستنساخ الثغرات الأمنية المُتحكَّم به لـ CVE-2020-14343 في PyYAML

عرض المستودع

الأكثر شعبية

عرض الكل →

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

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

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

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

CVE-2020-14343 – مختبر تحميل YAML غير الآمن في PyYAML

1. نظرة عامة على المشروع

يوضح هذا المشروع الثغرة CVE-2020-14343 في بيئة Docker معزولة وخاضعة للتحكم.

يحتوي المختبر على بيئتين:

  • بيئة مصابة تستخدم PyYAML 5.3.1
  • بيئة مُصحّحة تستخدم PyYAML 5.4 و yaml.safe_load()

يوضح المختبر دورة حياة الثغرة الكاملة:

  1. نشر التطبيق المصاب.
  2. تحديد إصدار PyYAML المصاب.
  3. إعادة إنتاج الثغرة باستخدام حمولة YAML خاضعة للتحكم.
  4. اكتشاف الإصدار المصاب باستخدام نص برمجي آلي.
  5. الترقية إلى الإصدار المُصحّح.
  6. اختبار نفس الحمولة ضد التطبيق المُصحّح.
  7. التحقق من رفض YAML الخبيث.

حمولة إعادة الإنتاج المستخدمة في هذا المختبر غير ضارة عمدًا وتطبع فقط علامة اختبار.

2. معلومات CVE

الخاصيةالتفاصيل
CVECVE-2020-14343
المنتجPyYAML
الإصدارات المتأثرةالإصدارات الأقدم من 5.4
الإصدار المُصحّح5.4
نوع الثغرةالتحقق غير السليم من المدخلات (CWE-20)
الخطورةحرجة
سطح الهجوممدخلات YAML تتم معالجتها باستخدام وظيفة التحميل المصابة
CVSS9.3 (CVSS v4، GitHub Advisory)

السبب الجذري

تحدث الثغرة عندما تتم معالجة مدخلات YAML غير موثوقة باستخدام وظيفة تحميل PyYAML المصابة.

سمحت إصدارات PyYAML الأقدم من 5.4 بوسوم YAML مصممة خصيصًا، بما في ذلك وسوم خاصة بـ Python مثل:

!!python/object/new

لتحقيق وظيفة إنشاء الكائنات عند استخدام FullLoader.

لذلك، يمكن لمستند YAML ضار أن يتسبب في تنفيذ غير مقصود لكود Python.

كانت المشكلة مرتبطة بإصلاح غير مكتمل لثغرة سابقة في PyYAML.

أصلح PyYAML 5.4 الثغرة CVE-2020-14343 عن طريق نقل وسوم Python التعسفية إلى UnsafeLoader.

بالنسبة للتطبيقات التي تعالج YAML غير الموثوق، يستخدم هذا المختبر أيضًا yaml.safe_load() كنهج تحميل آمن.

3. بنية المختبر

يحتوي المختبر على خدمتي Docker معزولتين:

                         Host Machine
                              |
                 +------------+------------+
                 |                         |
                 v                         v
          Vulnerable App             Patched App
          localhost:5000             localhost:5001
                 |                         |
            PyYAML 5.3.1             PyYAML 5.4
            FullLoader               SafeLoader
                 |                         |
                 v                         v
          Payload executes          Payload rejected

الخدمات

الخدمةمنفذ المضيفمنفذ الحاويةPyYAMLالغرض
vulnerable500050005.3.1بيئة معرّضة للثغرات
patched500150005.4بيئة معالَجة

4. هيكل المستودع

cve-2020-14343-lab/
├── vulnerable/
│   ├── app.py
│   ├── Dockerfile
│   └── requirements.txt
├── patched/
│   ├── app.py
│   ├── Dockerfile
│   └── requirements.txt
├── exploit/
│   └── reproduce.py
├── detection/
│   └── detect.py
├── screenshots/
│   ├── 01-docker-compose-running.png
│   ├── 02-vulnerable-detection.png
│   ├── 03-patched-detection.png
│   ├── 04a-vulnerable-request.png
│   ├── 04b-vulnerable-execution-log.png
│   └── 05-patched-exploit-blocked.png
├── blog/
│   └── CVE-2020-14343-Technical-Blog.pdf
├── docker-compose.yml
├── README.md
└── .gitignore

وصف الدليل

الملف/الدليلالغرض
vulnerable/app.pyتطبيق Flask يستخدم تحميل YAML غير الآمن
vulnerable/Dockerfileيبني صورة Docker غير الآمنة
vulnerable/requirements.txtيثبّت PyYAML على الإصدار 5.3.1
patched/app.pyتطبيق Flask يستخدم تحميل YAML الآمن
patched/Dockerfileيبني صورة Docker المُرقّعة
patched/requirements.txtيثبّت PyYAML على الإصدار 5.4
exploit/reproduce.pyيعيد إنتاج الثغرة باستخدام حمولة مُتحكَّم بها
detection/detect.pyيتحقق من إصدار PyYAML داخل حاوية Docker
docker-compose.ymlيبني ويشغّل كلا البيئتين
screenshots/يحتوي على الأدلة التي جُمعت أثناء المختبر
blog/يحتوي على ملف PDF للمدونة التقنية من 800 إلى 1200 كلمة

5. المتطلبات الأساسية

البرمجيات التالية مطلوبة:

  • Docker Desktop
  • Docker Compose
  • Python 3.x
  • Git

يجب أن يكون Docker Desktop قيد التشغيل قبل بدء المختبر.

التطبيق غير الآمن مكشوف عمدًا على الجهاز المحلي فقط عبر تعيينات منافذ Docker.

6. إعداد المختبر

الخطوة 1: بدء المختبر

من الدليل الجذر للمشروع، شغّل:

docker compose up --build -d

الخطوة 2: التحقق من الحاويات

شغّل:

docker compose ps

يجب أن يُظهر كلا الخدمتين حالة Up.

الخطوة 3: التحقق من التطبيق القابل للاستغلال

افتح:

http://127.0.0.1:5000

لا يوجد محتوى نصي مُرفق في رسالتك لترجمته. يرجى إرسال الجزء الثالث عشر (13/89) من محتوى أداة Kitploit المطلوب ترجمته إلى العربية.

{
  "message": "CVE-2020-14343 vulnerable YAML parser"
}

الخطوة 4: التحقق من التطبيق المُرقَّع

افتح:

http://127.0.0.1:5001

لا يوجد محتوى نصي مُرفق في رسالتك لترجمته. يرجى إرسال الجزء الثالث عشر (13/89) من محتوى أداة Kitploit المطلوب ترجمته إلى العربية.

{
  "message": "CVE-2020-14343 patched YAML parser"
}

7. بدء المختبر وإيقافه وإعادة بنائه

البدء

docker compose up -d

إيقاف

docker compose down

البناء والبدء

docker compose up --build -d

التحقق من الخدمات قيد التشغيل

docker compose ps

عرض سجلات التطبيقات القابلة للاستغلال

docker logs cve-vulnerable

عرض سجلات التطبيق المُرقّع

docker logs cve-patched

8. إعادة إنتاج الثغرة الأمنية

يكشف التطبيق المعرّض للثغرة عن نقطة نهاية /parse تقبل إدخال YAML.

تستخدم البيئة المعرّضة للثغرة:

  • PyYAML 5.3.1
  • yaml.FullLoader

يقع سكربت إعادة الإنتاج في:

exploit/reproduce.py

تشغيل الاستغلال

التطبيق القابل للاستغلال متاح على:

http://127.0.0.1:5000/parse

تشغيل:

python exploit/reproduce.py

يرسل السكربت حمولة YAML مُتحكَّمًا بها تحتوي على وسم YAML خاص بـ Python.

النتيجة المتوقعة

في البيئة القابلة للاستغلال، تُقبل الحمولة ويُعيد التطبيق استجابة HTTP 200.

علامة الاختبار المُتحكَّم بها:

CVE-2020-14343-TEST

يُنفَّذ داخل حاوية التطبيق المعرّضة للثغرة.

يمكن التحقق من التنفيذ باستخدام:

docker logs cve-vulnerable

يتضمن مخرجات السجل المتوقعة:

CVE-2020-14343-TEST

هذا يوضح تنفيذ الشيفرة من خلال سلوك تحميل YAML القابل للاستغلال.

السلامة

حمولة إعادة الإنتاج غير ضارة عمدًا. فهي تطبع علامة اختبار فقط ولا تعدّل نظام المضيف، ولا تصل إلى بيانات الاعتماد، ولا تصل إلى البيانات الحساسة، ولا تتفاعل مع أنظمة خارجية، ولا تنفّذ إجراءات مدمّرة.

9. كشف الثغرات

يقع سكربت الكشف في:

detection/detect.py

يتحقق السكربت من إصدار PyYAML المثبّت داخل حاوية Docker المحددة.

الإصدار المُصلَّح هو:

5.4

اكتشاف البيئة المعرّضة للثغرة

شغّل:

python detection/detect.py cve-vulnerable

النتيجة المتوقعة:

PyYAML installed version: 5.3.1
Fixed version: 5.4
STATUS: VULNERABLE
Reason: PyYAML version is older than 5.4.

اكتشاف البيئة المُرقَّعة

شغّل:

python detection/detect.py cve-patched

النتيجة المتوقعة:

PyYAML installed version: 5.4
Fixed version: 5.4
STATUS: PATCHED
Reason: PyYAML version is 5.4 or newer.

منطق الكشف

Docker Container
       |
       v
   docker exec
       |
       v
  Import PyYAML
       |
       v
Read yaml.__version__
       |
       v
 Compare with 5.4
       |
       +----------------------+
       |                      |
     < 5.4                  >= 5.4
       |                      |
       v                      v
  VULNERABLE                PATCHED

يقوم السكربت بالاستعلام عن إصدار PyYAML المثبت من الحاوية الهدف.

10. المعالجة

تستخدم البيئة المعرضة للخطر:

PyYAML==5.3.1

البيئة المُرقّعة تستخدم:

PyYAML==5.4

التطبيق المُرقَّع يستخدم أيضًا:

yaml.safe_load(yaml_input)

بدلاً من:

yaml.load(yaml_input, Loader=yaml.FullLoader)

خطوات المعالجة

تنزيل الأداة