Anuncia aquí

SQL Injection en el plugin de estadísticas de WordPress.com

Todos aquellos que estén usando el plugin de estadísticas de WordPress.com, es recomendable que desactiven cuanto antes el mismo, porque incluye una vulnerabilidad bastante grave que permite a un atacante remoto obtener las credenciales de cualquier usuario conociendo sólo su ID.

Detalles de la vulnerabilidad

El mencionado plugin registra dos nuevos métodos en el servidor XMLRPC que todo blog con WordPress tiene, éstos son wpStats.get_posts y wpStats.get_blog -- internamente implementados por stats_get_posts y stats_get_blog respectivamente. El que más nos interesa en este caso, es la función stats_get_posts:

[php start=1]function stats_get_posts( $args ) { list( $post_ids ) = $args; $r = 'include=' . join(',', $post_ids); $posts = get_posts( $r ); $_posts = array(); foreach ( $post_ids as $post_id ) $_posts[$post_id] = stats_get_post($post_id); return $_posts; }[/php]

A simple vista se puede ver que no existe ningún tipo de validación en los parámetros que esa función recibe, y como mencioné en ocasiones anteriores, usar esta forma (query string) para pasar parámetros a otras funciones es bastante peligroso, porque permite a un atacante modificar a su gusto los valores.

Por ejemplo, si hacemos que $post_ids contenga algo como:

code:
5&meta_key=%27) UNION ALL SELECT 1,2,3,4,5,user_login,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,user_pass,23,24,25,26,27,28 FROM wp_users/*&meta_value=1

El valor de la variable $r será:

code:
$r = 'include=5&meta_key=%27) UNION ALL SELECT 1,2,3,4,5,user_login,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,user_pass,23,24,25,26,27,28 FROM wp_users/*&meta_value=1'

Haciendo unos cambios en el valor de $post_ids se recupera toda la lista de usuarios con sus respectivas contraseñas en MD5, pero para obtener estos valores todavía hay que tener en cuenta las líneas 6, 8 y 9.

Dejo intencionalmente incompleta la prueba de concepto y exploit como reto para los que le gustan estas cosas y como medida de protección de los script kiddies.

Esta entrada fue publicada en Sql Injection, Web, Wordpress

6 Comentarios

  1. 1 g30rg3_x (27 de julio de 2007, 04:17:13 pm) http://g30rg3x.com/

    madres tu no descansas, gracias por el aviso asi ya de una vez paso de la 1.0 hasta la 1.1.1

    Saludos

  2. 2 g30rg3_x (27 de julio de 2007, 04:24:03 pm) http://g30rg3x.com/

    bueno acabo de verlo rapidito, el problema es que los IDs de los post no se comprobaban si eran valores enteros con lo cual podrias hacer tu inyeccion sql...

    Asi en vistazos rapido no veo como explotarlo directamente, pero bueno el chiste es que ya se mitigo, nuevamente gracias por tomar tu tiempo que tu si no descansas XDD

    Saludos

  3. 3 DragoN (27 de julio de 2007, 04:49:03 pm) http://www.dragonjar.us

    gracias por avisar, precisamente hoy lo había instalado para probar la v1.1

  4. 4 alex (27 de julio de 2007, 06:00:00 pm) http://www.buayacorp.com

    @g30rg3_x: tienes razón sobre los IDs. Sobre como explotarlo, me parece que publiqué algo similar en [1] -- el problema básicamente se relaciona a lo que discutimos en [2]. :)

    @DragoN: también estaba probando el plugin ayer, al no poder activarlo, me puse a ver el código y encontré esa vulnerabilidad, que es muy parecida a otras que anteriormente había reportado en WordPress.

    Saludos

    [1] http://www.buayacorp.com/archivos/wordpress-mas-vulnerabilidades-de-inyeccion-de-sql/
    [2] http://www.buayacorp.com/archivos/php-uso-adecuado-de-parse_str/

  5. 5 Alex (28 de julio de 2007, 01:09:50 pm) http://alexseo.com

    Muchas gracias tocayo :D

  6. 6 Dabo (29 de julio de 2007, 03:28:35 am) http://www.daboblog.com

    Como siempre gran trabajo, un abrazo y enhorabuena Alex

4 Trackbacks

  1. Por Bug en plugin para Wordpress : openside el 29 julio 2007 a las 1:41 pm

    [...] Enlace Original: Buayacorp [...]

  2. [...] en el plugin de Estadísticas de Wordpress.com Alex Concha encontró una vulnerabilidad de inyección SQL en el plugin de Estadísticas de WordPress.com. Si [...]

  3. [...] Publicado por alca87 on 31/07/07 Para los usuarios de wordpress, toca actualizar el plugin de las estadísticas, ya que se ha encontrado un bug de inyección sql que permite sacar todas las contraseñas de los users de un blog en MD5. Más info sobre esto aquí. [...]

  4. [...] Más información en Buayacorp. [...]

Publicar un Comentario

Tu email nunca será publicado o compartido. Los campos requeridos están marcados con un *

*
*

Puedes usar estas etiquetas y atributos HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>