WP Fixes, Bugs y mas…
Bueno como dije -y prometí a varias personas- voy a hablar aquí de la vulnerabilidad que encontré en WordPress, la verdad no es la gran cosa la encontré -realmente- solucionando un problema de manejo de arreglos y la directiva de php “register globals”, de la cual les hable previamente aquí.
La vulnerabilidad se encontraba en la funcion wp_title() la cual toma varios parametros que pueden ir como un query en el metodo GET para configurar lo que se mostrara como titulo de la pagina en el template, en pocas palabras dentro de un template de wordpress normal tenemos:
<title>... nombre blog, etc... <?php wp_title(); ?></title>
entonces wp_title(), devuelve ciertos parametros como dije en base a las variables/querys llenadas por el metodo GET entre ellas se encuentra la variable “m” de month/mes y “year” de año, estas variables pasan directito de su valor hacia la variable “title” que contiene el resultado que al final sera devuelto despues de procesar todos los parametros, sin embargo “m” esta semi-filtrado ya que solo permite desplegar 4 caracteres, pero a diferencia “year” pasa directo y solo se checa que “year” no este vacio, entonces como year se encuentra entre los tags (<title></title>), solo tendriamos que terminar el tag title y tendremos nuestra inyeccion:
http://[host]/?year=</title>[XSS]
Aplicando el ejemplo mas comun de XSS:
http://[host]/?year=</title><script>alert(document.cookie)
</script>
Tambien para este mismo sencillisimo bug (que aun no me acabo de creer que hubiera persistido tanto tiempo sin ser descubierta), tenia otra repercusion de la misma manera en al funcion single_month_title().
Como siempre antes de soltar algo espere a que salgan los fixes, para los que usan la ultima versión de SVN ya viene actualizado, pero para los que usamos la serie 2.1.x, aun solo ha salido un fix bueno oficial aun solo en la versión de SVN (hasta al momento que escribo la nota) no hay solucion real, solo una parte del fix ha salido, que solo cambia la forma en que las variables vienen para que sean filtradas ahora si por la funcion get_query_var(), falto la parte de sanitizacion, de todos modos me base en el fix del SVN para hacer un parche para la serie 2.1.x, ya que al parecer no se va a resolver el problema si no hasta las versiones siguientes a la 2.1.3 (posiblemente, aunque depende ya saben que de repente y wordpress saca una que otra versión de emergencia XDD).
Para los que quieran el parche desde aquí lo pueden descargar aquí:
Editado 15/03/2007
Ya hay fix Oficial!
http://trac.wordpress.org/changeset/5022
También como siempre (solamente por joder como diria masiosare XDD), les dejo demos del bug “en-vivo” usando mis blogs mas leídos de la seccion “Otros Blogs”Masio IT DEMO (Haber si ahora si actualizas XD)
Michoacano DEMO (Haber si el 1-click update de dreamhost funciona :-P)
DieBl0g DEMO (Querias un link? XDDD)
IsoPixel DEMO (sorry por hacerte esto vuarnet sobre todo despues de la operacion de hace unos dias :P) XDD, no se enojen son solo Demos :P…
Mañana le entro a las ultimas horas del weekend bug hunt para arreglar el puto tinymce que no han reparado y ya me carga la madre no usar el editor RTE es una joda escribir, deberas que uno no se da cuenta de que importante es hasta que te hace falta…
Hasta la siguiente








