Sploitus

Exploit for Mailcow

kitploit · 2026-09-01

Exploit Code

MARKDOWN75 lines
## https://sploitus.com/exploit?id=KITPLOIT:TOOLS-GITHUB-LY1G3-MAILCOW-CVE-2022-31138
# Mailcow CVE-2022-31138

RCE и повышение привилегий до Domain Admin для Mailcow. POC для CVE-2022-31245 может быть изменен для работы с этой уязвимостью.   


Сообщено и исправлено: 2022-06

## Code Injection, RCE

Тип: Code Injection (CWE-94), RCE, Domain Takeover   
Затронутые версии: начиная с 2019 по 2022-06a   


Уязвимость существует во всех последних версиях Mailcow, где обычный пользователь системы может использовать функцию «Sync Job» для получения оболочки с помощью внедрения Perl-кода в произвольное поле регулярного выражения в imapsync. Используя этот эксплойт, злоумышленник может затем легко переключиться на базу данных и повысить привилегии до роли «Domain Admin» в Mailcow.

Этот эксплойт по умолчанию включает сохранение, так как Sync Jobs выполняются по таймеру.

Этот эксплойт компрометирует весь экземпляр Mailcow. Протестировано и работает на последнем выпуске по состоянию на 2022-06a.

### Технический обзор

Почти все регулярные выражения в imapsync вычисляются с помощью функции `eval`, что крайне небезопасно, когда параметры задаются пользователем. В качестве примера, вот как `--regexmess` разбирается в imapsync (строка 14213):

root@kitploit:~
    
    
    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 (возможно, их больше) могут быть использованы для выполнения кода:

root@kitploit:~
    
    
    --regexmess
    --skipmess
    --regexflag
    --delete2foldersonly
    --delete2foldersbutnot
    --regextrans2
    

Используя приведенные ниже шаги, уязвимость может быть воспроизведена.

Получение оболочки:

  1. Перейдите на страницу входа в Mailcow (не SOGo)
  2. Войдите как обычный пользователь
  3. Перейдите в Sync Jobs
  4. Установите следующие значения: `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-кодом.
  5. Нажмите сохранить и подождите 1 минуту, пока команда выполнится.



Пример полезной нагрузки для Custom Parameters:

root@kitploit:~
    
    
    --debug --nosslcheck --regexmess=`touch\x{0020}test.txt`
    

PERL_CODE не может содержать пробелы, кавычки или косые черты, используйте `\x{0020}` вместо пробела. Используйте ``` для выполнения команд оболочки.

Повышение привилегий:

Следуйте тем же шагам, что и в CVE-2022-31245.