
Mailcow CVE-2022-31138 RCE
Mailcow के लिए RCE और Domain Admin विशेषाधिकार वृद्धि। CVE-2022-31245 के लिए POC को इस कमजोरी के साथ काम करने के लिए संशोधित किया जा सकता है।
रिपोर्ट और ठीक किया गया: 2022-06
प्रकार: कोड इंजेक्शन (CWE-94), RCE, डोमेन टेकओवर
प्रभावित संस्करण: कम से कम 2019 - 2022-06a
सभी हालिया Mailcow संस्करणों में एक दोष मौजूद है जहां सिस्टम का एक नियमित उपयोगकर्ता imapsync में मनमानी regex फ़ील्ड में perl कोड इंजेक्शन का उपयोग करके शेल प्राप्त करने के लिए “Sync Job” सुविधा का शोषण कर सकता है। इस शोषण का उपयोग करके एक हमलावर आसानी से डेटाबेस में जा सकता है और Mailcow में “Domain Admin” की भूमिका के लिए विशेषाधिकार बढ़ा सकता है।
इस शोषण में डिफ़ॉल्ट रूप से दृढ़ता शामिल है क्योंकि Sync Jobs एक टाइमर पर चलते हैं।
यह शोषण पूरे Mailcow इंस्टेंस से समझौता करता है। 2022-06a तक के नवीनतम रिलीज़ पर परीक्षण किया गया और काम कर रहा है।
imapsync में लगभग सभी regex अभिव्यक्तियों का मूल्यांकन eval फ़ंक्शन का उपयोग करके किया जाता है, यह अत्यधिक असुरक्षित है जब पैरामीटर उपयोगकर्ता-इनपुट द्वारा दिए जाते हैं। एक उदाहरण के रूप में, यहाँ बताया गया है कि imapsync में --regexmess कैसे पार्स किया जाता है (पंक्ति 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} का उपयोग करें। शेल कमांड चलाने के लिए ` का उपयोग करें।
विशेषाधिकार वृद्धि:
CVE-2022-31245 में दिए गए समान चरणों का पालन करें।