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:
El valor de la variable $r
será:
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.
10 replies on “SQL Injection en el plugin de estadísticas de WordPress.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
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
gracias por avisar, precisamente hoy lo había instalado para probar la v1.1
@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/
Muchas gracias tocayo 😀
Como siempre gran trabajo, un abrazo y enhorabuena Alex
[...] Enlace Original: Buayacorp [...]
[...] 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 [...]
[...] 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í. [...]
[...] Más información en Buayacorp. [...]