
Tarea de CodePath para las Semanas 7 y 8: CVE-2017-14719, CVE-2019-9787 y Modificación de Contenido de Páginas/Entradas sin Autenticación mediante la API REST
Tarea de CodePath para las Semanas 7 y 8: CVE-2017-14719, CVE-2019-9787 y Modificación no autenticada del contenido de Páginas/Entradas vía REST API
Tiempo dedicado: 16 horas en total
Objetivo: Encontrar, analizar, recrear y documentar vulnerabilidades que afectan a una versión antigua de WordPress
- [ ] Pasos para recrear: Si un atacante ha conseguido acceder a una cuenta de Administrador, puede hacer clic en el botón "Plugins" y ver los plugins instalados. Junto a cada plugin listado hay un botón "Delete" que, al pulsarlo, llevará al atacante a una página donde el Administrador puede ver el contenido del directorio que intenta eliminar antes de realizar un cambio permanente. Desde esta página, el atacante puede borrar el nombre del plugin de la URL (ubicado directamente después de checked[0]= y antes del '&'). El atacante sustituye el nombre del plugin por uno o más caracteres " ../ " hasta llegar al directorio concreto que desea eliminar.
- [ ] Código fuente afectado:
- https://core.trac.wordpress.org/browser/tags/3.8/src/wp-admin/plugins.php


#######################################################################################
########################################################################################
Usé código de exploit en python de esta URL: https://www.exploit-db.com/exploits/41223
Mientras trabajaba en el apartado 'Modificación no autenticada del contenido de Páginas/Entradas vía REST API', me encontré con un error de importación en el archivo python porque no tenía instalado el paquete lxml. Después de instalar lxml, intenté ejecutar de nuevo 'python [exploit_file_name].py http://wpdistillery.vm'. Aquí fue donde me topé con mi segundo problema: recibí un UnicodeEncodeError. Resolví este problema eliminando las entradas superfluas que contenían el ordinal que estaba fuera de rango.

Creé una nueva entrada con contenido de texto plano y ejecuté el script de nuevo. Se ejecutó correctamente, descubriendo los endpoints de la API y obteniendo el id de la entrada disponible, el título y el enlace.
Copyright [yyyy] [nombre del propietario de los derechos de autor]
Licenciado bajo la Licencia Apache, Versión 2.0 (la "Licencia");
no puede usar este archivo excepto en cumplimiento de la Licencia.
Puede obtener una copia de la Licencia en
http://www.apache.org/licenses/LICENSE-2.0
Salvo que lo exija la ley aplicable o se acuerde por escrito, el software
distribuido bajo la Licencia se distribuye "TAL CUAL",
SIN GARANTÍAS NI CONDICIONES DE NINGÚN TIPO, ya sean expresas o implícitas.
Consulte la Licencia para conocer los permisos y las limitaciones
específicos que rigen la Licencia.