8 febrero, 2017 Alberto

WordPress 4.7.0/4.7.1 Unauthenticated Content Injection

wordpress-vulnerability

Breves nostas de la vulnerabilidad:

La vulnerabilidad reside en la API Rest de WordPress. En nuestro caso se encuentra en http://albertomagallon.es/wp-json/
Se puede encontrar buscando en el código fuente de la página la URL: https://api.w.org/

Cuando se actualiza una entrada se envía a la API Rest el identificador de la entrada a actualizar. Este identificador debe de ser númerico.
Si se añaden carácteres alfanuméricos detrás del identificador, la función que valida los permisos (update_item_permissions_check) no encuentra la entrada y no valida nada.

Wordpress API Rest vuln 1

WordPress API Rest vuln 1

Aquí viene el primer error, aún no habiendo validado ningún permiso porque no ha encontrado la entrada que hay que actualizar, el flujo de ejecución continúa hacia la función que actualiza la entrada (update_item).
En este punto lo lógico sería que de nuevo tampoco encontrara la entrada pero en cambio hace la búsqueda de otra manera. Antes de llamar a la función get_post para búscar la entrada con el valor alfanumérico que le hemos pasado, hace un cast de la variable con (int)$request[‘id’];.

Wordpress API Rest vuln 2

WordPress API Rest vuln 2

Esto en PHP resulta en una omisión de los carácteres alfabéticos quedando únicamente los númericos. Es decir, ésta vez la función si que encuentra la entrada y la actualiza sin tener permisos. El segundo error.

La salida del siguiente código:


#!/usr/bin/php
<?php
$id = ((int)"1234ABCDE");
echo $id
?>

es 1234

Detalles de la vulnerabilidad en el blog de Sucuri: https://blog.sucuri.net/2017/02/content-injection-vulnerability-wordpress-rest-api.html

Exploit en github: https://gist.github.com/leonjza/2244eb15510a0687ed93160c623762ab

Exploit-db: https://www.exploit-db.com/exploits/41223/

 

 
,

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

*

Uso de cookies

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información.

ACEPTAR
Aviso de cookies