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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
cakephp-attachment-crlf — CakePHP 5.4.2 - عالي - عن بُعد - CRLF - مرفق Content-Type و Content-ID المتبقي | Kitploit
أدوات/GitHubGitHub/abraxas/cakephp-attachment-crlf
تحليل الثغرات الأمنيةالاستغلالاستغلال تطبيقات الويبالمحاكاة الافتراضية للأمانأمن الويباختبار الاختراق
GitHubabraxas/cakephp-attachment-crlf

cakephp-attachment-crlf

CakePHP 5.4.2 - عالي - عن بُعد - CRLF - مرفق Content-Type و Content-ID المتبقي

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

الأكثر شعبية

عرض الكل →

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

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

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

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

Abraxas Labs - cakephp-attachment-crlf

abraxaslabs.tech  ·  github.com/abraxas  ·  @abraxas_null  ·  [email protected]  ·  cakephp-attachment-crlf

cakephp-attachment-crlf

الفئة: حقن ترويسة جزء MIME الوصول: عن بُعد

CakePHP 5.4.2 (887b641) - Cake Software Foundation

الإصدار 5.4.2 يزيل بالفعل " و \r و \n من name= / filename= متعدد الأجزاء (FormDataPart::_headerParameterToString). هذا هو الضابط. تم ترك Content-Type و Content-ID كدمج خام. Message::setAttachments ينسخ نوع الوسائط الخاص بعميل UploadedFile إلى حقل النوع هذا دون مرشح إضافي.

التطبيق الذي يرفق تحميلاً من المستخدم، أو الذي يمرر contentId من المستخدم، يضع تلك البايتات على جزء MIME. ثم يُظهر getBodyString() سطر ترويسة ثانياً تحت ذلك الجزء.

المعرّفلا يوجد CVE بعد
الفئةحقن ترويسة جزء MIME
الوصولعن بُعد (تطبيق يرفق تحميلاً من المستخدم أو contentId من المستخدم)
CWECWE-93
CVSSمتوسط: 5.4 CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:L/A:N
المنتجCakePHP
المتأثر5.4.2 (887b641de9f7aba06071f98f17edcbc573cbcf63)
المصادقةتطبيق يرفق تحميلاً من المستخدم (نوع MIME الخاص بعميل UploadedFile) أو contentId من المستخدم
الترخيصGNU Affero GPL v3.0
المختبر127.0.0.1 فقط

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

من يستطيع التأثير على بيانات وصفية للمرفقات يمررها التطبيق إلى Message::setAttachments / addAttachment يمكنه حقن ترويسات أجزاء MIME.

الصلاحيةالطريقة / نقطة الوصولالنوعمُثبت مختبرياً أو مُستنتج
سطر ترويسة Content-Type إضافيsetAttachments مع 'mimetype' => "text/plain\\r\\nX-Injected: …"سلامة ترويسات جزء MIMEمُثبت مختبرياً. سطر الشاهد موجود
سطر ترويسة Content-ID إضافي'contentId' => "cid@…>\\r\\nX-Injected: …" (جزء مضمّن)سلامة ترويسات جزء MIMEمُثبت مختبرياً. سطر الشاهد موجود
نفس الحقن عبر MIME الخاص بالتحميلUploadedFile::getClientMediaType() يُنسخ إلى mimetypeسلامة ترويسات جزء MIMEمُثبت مختبرياً. سطر الشاهد موجود
filename= CRLFاسم مرفق يحتوي CR/LFمُغلقمُثبت الإغلاق مختبرياً. إزالة 5.4.2 صامدة
RCPT الخاص بالمظروف / Bcc عبر نقطة الوصول هذهترويسات جزء MIME في النصمُغلقهذا إزالة زوجية خاصة بـ SmtpTransport فقط، وهو شقيق
إرسال SMTPالمختبر يستدعي getBodyString() فقطمُغلقلا ناقل، لا shell

مُستنتج من نفس الدمج، غير مُبرهن: نوع أو contentId مُصمم يتضمن حداً متعدد الأجزاء قد يقسم الرسالة إلى أجزاء إضافية في MUA مستقبِل. لم أرسل بريداً.

بقايا نفس التثبيت: window SQLi، collate SQLi، cache unserialize.

كيف وجدته

ثبّتت cakephp/cakephp 5.4.2 بعد ملاحظة المخبز أن حقن filename= في Content-Disposition متعدد الأجزاء قد تم إصلاحه. _headerParameterToString هو المُطهّر:

$transliterated = Text::transliterate(str_replace(['"', "\r", "\n"], '', $value));

__toString() لا يزال يفعل:

if ($this->type) {
    $out .= 'Content-Type: ' . $this->type . "\r\n";
}
if ($this->contentId) {
    $out .= 'Content-ID: <' . $this->contentId . ">\r\n";
}

Message::setAttachments ينسخ نوع عميل التحميل دون إزالة. ثم يستدعي attachFiles / attachInlineFiles كلاً من $part->type($fileInfo['mimetype']) و $part->contentId($fileInfo['contentId']).

منعطفات خاطئة مسجلة بالفعل: معاملة RCPT الخاص بالمظروف كأنه هذه البقية (السطر الإضافي في النص)؛ الادعاء بأن filename= لا يزال يحقن (إنه لا يفعل)؛ إرسال SMTP؛ reverse shell. مسرح.

المختبر

python3 cakephp-attachment-crlf-Abraxas-Labs.py

أو

cd lab
./run.sh

استهدف فقط http://127.0.0.1:19460. PHP 8.3، وسم CakePHP 5.4.2 مُستنسخ عند البناء. lab_server.php يكشف Message::setAttachments. أربع حالات: ضابط filename، mimetype، contentId، نوع وسائط UploadedFile.

SUCCESS cakephp-attachment-crlf how=live pin=5.4.2 sha=887b641de9f7aba06071f98f17edcbc573cbcf63 mimetype=yes contentId=yes upload=yes filename-stripped=yes CAKEPHP-ATTACHMENT-CRLF-WITNESS

الإصلاح

مرّر type و contentId و transferEncoding عبر نفس إزالة " / \r / \n كما في _headerParameterToString. ارفض القيمة إذا كانت لا تزال تحتوي على فاصل أسطر بعد الإزالة. غطِّ MIME الخاص بعميل UploadedFile و mimetype / contentId الصريحين في اختبارات البريد، وليس filename= فقط.

المراجع

  • github.com/cakephp/cakephp وسم 5.4.2 (887b641de9f7aba06071f98f17edcbc573cbcf63)
  • FormDataPart.php · Message.php
  • قريب مُرقّع: إزالة filename= في مخبز 5.4.2
  • نفس التثبيت: cakephp-window-sqli · cakephp-collate-sqli · cakephp-cache-unserialize
  • CWE-93

الترخيص

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

تنزيل الأداة