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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
proftpd-rewrite-utf8trans — ProFTPD 1.3.9d - عالي - عن بُعد - انهيار - تجاوز سعة BSS في RewriteMap int:utf8trans | Kitploit
أدوات/GitHubGitHub/abraxas/proftpd-rewrite-utf8trans
تحليل الثغرات الأمنيةالاستغلالالاختبار العشوائيأمن الشبكاتاختبار الاختراقتحليل الملفات الثنائيةمختبرات وتدريب عملي
GitHubabraxas/proftpd-rewrite-utf8trans

proftpd-rewrite-utf8trans

ProFTPD 1.3.9d - عالي - عن بُعد - انهيار - تجاوز سعة BSS في RewriteMap int:utf8trans

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

الأكثر شعبية

عرض الكل →

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

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

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

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

Abraxas Labs - proftpd-rewrite-utf8trans

abraxaslabs.tech  ·  github.com/abraxas  ·  @abraxas_null  ·  [email protected]  ·  proftpd-rewrite-utf8trans

التحليل المكتوب: https://abraxaslabs.tech/research/proftpd-rewrite-utf8trans

proftpd-rewrite-utf8trans

الفئة: انهيار الوصول: عن بُعد

ProFTPD 1.3.9d (f59f248) - ProFTPD (proftpd.org)

تتضمن وحدة mod_rewrite المساهمة الخريطة RewriteMap int:utf8trans. تنسخ هذه الخريطة المدمجة وسيطًا من وسائط FTP الخاص بالعميل (حتى CommandBufferSize، أي 512 KiB) إلى مخزنَي BSS بسعة 1024 خانة دون حد أقصى للوجهة. اسم STOR طويل من ASCII يؤدي إلى كتابة WRITE بحجم 8 عبر global-buffer-overflow في ASan. تنهار عملية الجلسة الفرعية. ويبقى الخادم الخفي (daemon) قائمًا. الفئة: انهيار. وليست RCE.

المعرّفلا يوجد CVE بعد
الفئةانهيار
الوصولعن بُعد (وسيط FTP يُمرَّر إلى int:utf8trans)
CWECWE-120
CVSSمرتفع: 7.5 CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H إذا كانت قاعدة RewriteRule تعمل قبل المصادقة. استخدم المختبر STOR بعد تسجيل الدخول، لذا فإن PR:L هو التقييم الصادق لتلك التجربة (AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H).
المنتجProFTPD
المتأثر1.3.9d (f59f248e26bdfa514443e42bf72a145641df635d) وحدة mod_rewrite المساهمة
المصادقةالمختبر يستخدم STOR بعد المصادقة. قاعدة RewriteRule تعمل قبل المصادقة على USER أو ما شابه ستكون PR:N.
الترخيصGNU Affero GPL v3.0
المختبر127.0.0.1 فقط

ما يمكن للمهاجم فعله

يكون RewriteEngine معطّلًا حتى تتم تهيئته. النمط الموثّق هو RewriteRule (.*) ${map:$1}. بمجرد أن تمرّر قاعدة RewriteRule وسيط العميل عبر int:utf8trans، فإن مفتاحًا أطول من 1024 بايت يفيض على مخزنَين ثابتين في عملية الجلسة الفرعية.

الطريقةنقطة الوصولالصلاحية
أمر FTP يكون وسيطه مفتاح خريطة utf8trans، بطول > 1024rewrite_utf8_to_ucs4 ثم utf8_val[i] = ucs4_longs[i]التوافر (مُثبت في المختبر): انهيار عملية الجلسة الفرعية. ASan: global-buffer-overflow WRITE of size 8، ثم ABORTING. مع Prefork: ظل تسجيل دخول جديد يعمل؛ وبقي الخادم الخفي قائمًا. نجح STOR قصير بطول 200 بايت من ASCII. سلامة بيانات BSS الخاصة بـ rewrite المجاورة مستنتجة وتعتمد على تخطيط المترجم.
RIP / تنفيذ شيفرةلا شيء مُدّعىمغلق. لا توجد حمولة. الفئة: انهيار. وليست RCE.
زرع RewriteMap في .ftpaccessCONF_DYNDIRمغلق. RewriteMap غير مسموح به في .ftpaccess.
صدفة prg:لا يوجد نوع خريطة كهذامغلق. FIFO هو إدخال/إخراج سطري.

مُثبت في المختبر مقابل مستنتج: كتابة ASan بحجم 8، وانهيار عملية الجلسة الفرعية، وضابط الوسيط القصير الناجي، وتسجيل الدخول بعد التحفيز كلها مُثبتة في المختبر. أما RIP/RCE فغير مُدّعى.

أصلحت المسألة 2173 تجاوز حدود بمقدار بايت واحد في int:unescape على هذا الإصدار المثبّت. هذا المتبقي هو int:utf8trans. وحدة مدمجة مختلفة. وخلل مختلف.

كيف وجدته

ثبّتُّ وسم v1.3.9d في proftpd/proftpd. كانت حصيلة CVEs لعام 2026 وقضايا GitHub العامة التي لا تزال قائمة في ذلك الأرشيف (2170، 2173، 2175، 2180، 2095، 2256، 2286، 2319، 2330، 2301) هي قائمة التجاهل. لم يمنحني FTP الأساسي الافتراضي مع basic.conf النموذجي ثغرة حرجة/مرتفعة غير منشورة. أما وحدة rewrite المساهمة فقد فعلت ذلك.

تحتوي rewrite_map_int_utf8trans (contrib/mod_rewrite.c) على:

static unsigned char utf8_val[PR_TUNABLE_BUFFER_SIZE];   /* 1024 */
static unsigned long ucs4_longs[PR_TUNABLE_BUFFER_SIZE]; /* 1024 */
ucs4strlen = rewrite_utf8_to_ucs4(ucs4_longs, strlen(key), (unsigned char *) key);

rewrite_utf8_to_ucs4 يكتب unsigned long واحدًا لكل بايت ASCII بدون حد أقصى. قيمة PR_TUNABLE_CMD_BUFFER_SIZE هي 512 KiB. العدد 2173 أصلح بالفعل إلغاء الهروب. لم تكن هذه الخريطة ضمن ذلك الإصلاح.

المنعطفات الخاطئة: اعتبار 2173 هو هذا العلة؛ الادعاء بوجود RIP لأن ASan قال WRITE of size 8؛ الأمل في أن .ftpaccess يمكنه زرع RewriteMap. الأول دالة مختلفة. الثاني لا يزال Crash. الثالث هو CONF_DYNDIR.

ASan مع libcrypt القياسي يسببان SIGSEGV عند PASS قبل مصرف إعادة الكتابة. يقوم المختبر بتحميل stub صغير لـ crypt(3) مسبقًا حتى يعمل تسجيل الدخول. ذلك الـ stub ليس استغلالًا.

المختبر

python3 proftpd-rewrite-utf8trans-Abraxas-Labs.py

أو:

cd lab
./run.sh

Loopback 127.0.0.1:18740 بالإضافة إلى النطاق السلبي 18741-18750. مشروع Compose proftpd-rewrite-utf8trans. الشاهد PROFTPD-REWRITE-UTF8TRANS-WITNESS. الصورة عبارة عن بناء ASan لـ 1.3.9d mod_rewrite. نجاح التحكم في STOR لـ 200 بايت ASCII. STOR لـ 2048 بايت ASCII هو ASan global-buffer-overflow WRITE بحجم 8 وتُجهض عملية الابن للجلسة. تسجيل الدخول الجديد بعد المحفّز لا يزال يعمل.

SUCCESS PROFTPD-REWRITE-UTF8TRANS asan=global-buffer-overflow write=yes child-dead=yes PROFTPD-REWRITE-UTF8TRANS-WITNESS

الإصلاح

تقييد طول وجهة rewrite_utf8_to_ucs4 إلى PR_TUNABLE_BUFFER_SIZE-1. إيقاف الكتابة بعد ucs4_longs / utf8_val. رفض أو اقتطاع مفتاح خريطة لا يتسع.

المراجع

  • github.com/proftpd/proftpd وسم v1.3.9d (f59f248e26bdfa514443e42bf72a145641df635d)
  • contrib/mod_rewrite.c rewrite_utf8_to_ucs4 / rewrite_map_int_utf8trans
  • قريب مُرقَّع (ليس هذه الخريطة): Issue 2173 int:unescape
  • CWE-120

الترخيص

GNU Affero GPL v3.0. انظر LICENSE. مختبر loopback فقط. دون أي ضمان.

تنزيل الأداة