ASA-2019-00511 – Webmin: Execução de código remotamente sem necessidade de autenticação


For the English version of this alert, click here.

Allele Security Alert

ASA-2019-00511

Identificador(es)

ASA-2019-00511, CVE-2019-15107

Título

Execução de código remotamente sem necessidade de autenticação

Fabricante(s)

The Webmin community

Produto(s)

Webmin

Versão(ões) afetada(s)

Webmin versões 1.882 até 1.921

Versão(ões) corrigida(s)

Webmin versão 1.930

Prova de conceito

Sim

Descrição

Os releases do Webmin contêm uma vulnerabilidade que permite a execução remota de código. O parâmetro old em password_change.cgi contém uma vulnerabilidade que permite injeção de comando.

Detalhes técnicos

A vulnerabilidade está na função &unix_crypt crypt que verifica o passwd em relação ao arquivo /etc/shadow do sistema. Adicionando um comando pipe (“|”), um indivíduo pode explorar esta falha para executar qualquer código que desejar.

149        # Read shadow file and find user
150        &lock_file($miniserv{'passwd_file'});
151        $lref = &read_file_lines($miniserv{'passwd_file'});
152        for($i=0; $i<@$lref; $i++) {
153            @line = split(/:/, $lref->[$i], -1);
154            local $u = $line[$miniserv{'passwd_uindex'}];
155            if ($u eq $in{'user'}) {
156                $idx = $i;
157                last;
158                }
159            }
160        defined($idx) || &pass_error($text{'password_euser'});
161
162        # Validate old password
163        &unix_crypt($in{'old'}, $line[$miniserv{'passwd_pindex'}]) eq
164            $line[$miniserv{'passwd_pindex'}] ||
165                &pass_error($text{'password_eold'});
166
167        # Make sure new password meets restrictions
168        if (&foreign_check("changepass")) {
169            &foreign_require("changepass", "changepass-lib.pl");
170            $err = &changepass::check_password($in{'new1'}, $in{'user'});
171            &pass_error($err) if ($err);
172            }
173        elsif (&foreign_check("useradmin")) {
174            &foreign_require("useradmin", "user-lib.pl");
175            $err = &useradmin::check_password_restrictions(
176                    $in{'new1'}, $in{'user'});

Créditos

AkkuS

Referência(s)

Webmin 1.882 to 1.921 – Remote Command Execution
http://www.webmin.com/security.html

Webmin 0day remote code execution
https://blog.firosolutions.com/exploits/webmin/

Webmin 1.920 – Unauthenticated Remote Code Execution (Metasploit)
https://www.exploit-db.com/exploits/47230

Webmin <= 1.920 – Unauthenticated RCE
https://pentest.com.tr/exploits/DEFCON-Webmin-1920-Unauthenticated-Remote-Command-Execution.html

CVE-2019-15107
https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-15107

CVE-2019-15107
https://nvd.nist.gov/vuln/detail/CVE-2019-15107

Se encontrou algum erro neste alerta ou deseja uma análise compreensiva, entre em contato.

Última modificação: 20 agosto 2019

Não somos responsáveis por qualquer perda de dados, corrupção de dispositivos ou qualquer outro tipo de problema devido ao uso de qualquer informação mencionada em nossos alertas de segurança.