Introducción – Explorando lo desconocido: debajo de la superficie de la SSRF sin parches de WordPress
En el panorama de la ciberseguridad, que está en constante evolución, WordPress sigue siendo un objetivo popular debido a su uso generalizado y a su amplio ecosistema de complementos. Si bien el núcleo de WordPress es generalmente seguro, las vulnerabilidades suelen surgir de complementos y temas de terceros. Una de esas vulnerabilidades que ha llamado la atención es la vulnerabilidad de falsificación de solicitud del lado del servidor (SSRF). En esta publicación del blog, profundizaremos en las complejidades de la vulnerabilidad SSRF de WordPress sin parchear, sus implicaciones y cómo WP-Firewall puede ayudar a proteger su sitio de WordPress de tales amenazas.
## La causa raíz: wp_http_validate_url()
En septiembre de 2022, SonarSource publicó un aviso sobre una SSRF ciega no autenticada del núcleo de WordPress sin parchear. La causa principal de esta vulnerabilidad radica en la función `wp_http_validate_url()`, que es susceptible a ataques de revinculación de DNS. Si bien el núcleo de WordPress en sí no se ve afectado directamente, los complementos que utilizan esta función vulnerable están en riesgo.
Entendiendo wp_http_validate_url()
La función `wp_http_validate_url()` está diseñada para validar URLs y evitar ataques de redirección y falsificación de solicitudes. Sin embargo, no es suficiente para proteger contra ataques de revinculación de DNS, lo que la convierte en un vector potencial para vulnerabilidades SSRF. Esta función se usa a menudo junto con `wp_remote_get()` y su alternativa más segura, `wp_safe_remote_get()`.
La parte obvia: wp_remote_get() y wp_safe_remote_get()
La función `wp_remote_get()` se utiliza habitualmente para solicitar hosts remotos a través del servidor. Sin embargo, es bien sabido que pasar URL ingresadas por el usuario a esta función puede generar vulnerabilidades SSRF. Para mitigar este riesgo, WordPress introdujo `wp_safe_remote_get()`, que incluye validaciones adicionales para prevenir ataques SSRF.
¿Qué tan seguro es wp_safe_remote_get()?
La función `wp_safe_remote_get()` está diseñada para ser una alternativa más segura a `wp_remote_get()`. Según la documentación oficial de WordPress:
"Esta función es ideal cuando la solicitud HTTP se realiza a una URL arbitraria. La URL se valida para evitar ataques de redirección y falsificación de solicitudes".
Sin embargo, la seguridad de la función está limitada por la función subyacente `wp_http_validate_url()`, que, como se mencionó anteriormente, es vulnerable a ataques de revinculación de DNS.
Sumergiéndonos en la función
El código fuente de `wp_safe_remote_get()` es el siguiente:
php
función wp_safe_remote_get( $url, $args = matriz() ) {
$args['rechazar_urls_inseguras'] = verdadero;
$http = _wp_http_obtener_objeto();
devolver $http->get( $url, $args );
}
En la línea 2, el parámetro `$args['reject_unsafe_urls']` se establece en `true`, lo que finalmente pasa la entrada del usuario a la función `wp_http_validate_url()` antes de solicitar la URL. Dado que `wp_http_validate_url()` es vulnerable a ataques de revinculación de DNS, cualquier función que dependa únicamente de ella para la validación también es vulnerable.
Limitaciones de la vulnerabilidad
Si bien este no es un SSRF completo, existen limitaciones establecidas por la función `wp_http_validate_url()`:
– El protocolo debe ser `http://` o `https://`
– El puerto solo puede ser 80, 443 o 8080
A pesar de estas limitaciones, es posible solicitar hosts internos dentro de estos límites a través de esta SSRF.
Código de complemento vulnerable
A continuación se muestran algunos ejemplos de código de complemento vulnerable:
SSRF no ciego
php
<?php
require_once('wp-load.php');
$url = $_GET['url'];
$response = wp_safe_remote_get( $url );
$response = wp_remote_retrieve_body( $response );
eco $respuesta;
?>
Si el complemento toma la entrada del usuario, la pasa a la función `wp_safe_remote_get()` y luego muestra la respuesta, es vulnerable a SSRF limitado no ciego.
SSRF ciego
php
<?php
require_once('wp-load.php');
$url = $_GET['url'];
$response = wp_safe_remote_get( $url );
$response_código = wp_remote_retrieve_respuesta_código( $response );
si ($response_code == 200) {
echo "En funcionamiento";
} demás {
echo "¡Caído o no encontrado!";
}
?>
Si el complemento pasa la entrada del usuario a `wp_safe_remote_get()` pero solo devuelve el código/estado de respuesta, es vulnerable a SSRF ciego, lo que limita el impacto al escaneo de puertos 80, 443 o 8080 de cualquier host interno.
Manifestación de ataque
Para demostrar esta vulnerabilidad, realizamos un ataque a un servidor Apache que ejecutaba WordPress en el puerto 80 y a un servidor PHP que ejecutaba en localhost:8080 con cierta información secreta. El código vulnerable se insertó en el directorio de complementos `/wp-content/plugins/vulnerable-plugin/index.php`.
Repositorio de GitHub
Puede encontrar una instancia de Docker vulnerable y el script de explotación para aprovechar esta vulnerabilidad en este Repositorio de GitHubCrédito: Ananda Dhakal
## Funciones más vulnerables
La misma vulnerabilidad se aplica a otras funciones que dependen de `wp_http_validate_url()` para la validación:
– `wp_safe_remote_request()`
– `wp_safe_remote_post()`
– `wp_safe_remote_head()`
Además, algunas funciones actúan como envoltorios para `wp_safe_remote_get()` y también son vulnerables hasta cierto punto:
– `WP_REST_URL_Details_Controller::obtener_url_remota()`
– `url_descarga()`
– `wp_remote_fopen()`
– `WP_oEmbed::discover()`
Conclusión
Es evidente que las funciones consideradas seguras y diseñadas para proteger contra vulnerabilidades SSRF no son completamente infalibles. La dependencia de `wp_http_validate_url()`, que es vulnerable a ataques de revinculación de DNS, expone los sitios de WordPress a posibles ataques SSRF. Instamos al equipo de WordPress Core a que aborde este problema y publique un parche para mejorar la seguridad de la plataforma.
Cómo puede ayudar WP-Firewall
En WP-Firewall, comprendemos la importancia fundamental de proteger su sitio de WordPress contra amenazas emergentes. Nuestras soluciones de seguridad integrales están diseñadas para brindar una protección sólida contra una amplia gama de vulnerabilidades, incluidos los ataques SSRF. Así es como WP-Firewall puede ayudar a proteger su sitio de WordPress:
Detección de amenazas en tiempo real
WP-Firewall ofrece capacidades de detección de amenazas en tiempo real que monitorean su sitio para detectar actividades sospechosas y posibles vulnerabilidades. Nuestros algoritmos avanzados pueden identificar y bloquear intentos de SSRF, lo que garantiza que su sitio permanezca seguro.
Auditorías de seguridad periódicas
Nuestro equipo de expertos en seguridad realiza auditorías periódicas de su sitio de WordPress y sus complementos para identificar y abordar vulnerabilidades. Al anticiparnos a las amenazas potenciales, lo ayudamos a mantener un entorno seguro para sus usuarios.
Gestión automatizada de parches
Mantener actualizado el núcleo, los temas y los complementos de WordPress es fundamental para la seguridad. WP-Firewall ofrece una gestión de parches automatizada, lo que garantiza que todos los componentes de su sitio estén actualizados con los parches de seguridad más recientes.
Reglas de firewall personalizadas
WP-Firewall te permite crear reglas de firewall personalizadas y adaptadas a tus necesidades específicas. Al implementar reglas que bloqueen solicitudes maliciosas e intentos de acceso no autorizado, puedes mejorar la seguridad de tu sitio.
Informes completos
Nuestros informes de seguridad detallados brindan información sobre las amenazas detectadas y las medidas adoptadas para proteger su sitio. Con WP-Firewall, puede mantenerse informado sobre el estado de seguridad de su sitio de WordPress en todo momento.
Protección contra SSRF con WP-Firewall
Para abordar específicamente las vulnerabilidades SSRF, WP-Firewall ofrece las siguientes características:
Validación de entrada
WP-Firewall realiza una rigurosa validación de entradas para garantizar que las URL proporcionadas por el usuario sean seguras y no tengan intenciones maliciosas. Al validar las entradas en múltiples niveles, evitamos que los ataques SSRF aprovechen funciones vulnerables.
Protección de revinculación de DNS
Nuestro firewall incluye mecanismos de protección contra revinculación de DNS que detectan y bloquean los intentos de explotar vulnerabilidades de revinculación de DNS. Esto garantiza que su sitio permanezca seguro incluso si las funciones subyacentes como `wp_http_validate_url()` son vulnerables.
Solicitudes API seguras
WP-Firewall protege las solicitudes de API al aplicar estrictas medidas de validación y autenticación. Esto evita el acceso no autorizado y mitiga el riesgo de ataques SSRF dirigidos a los puntos finales de la API.
Monitoreo continuo
Nuestras capacidades de monitoreo continuo vigilan de cerca el tráfico y las actividades de su sitio. Cualquier comportamiento sospechoso se detecta y se aborda de inmediato, lo que minimiza el riesgo de ataques SSRF exitosos.
Llamada a la acción
Si bien la vulnerabilidad SSRF de WordPress sin parchear plantea un riesgo significativo, las medidas proactivas pueden mitigar su impacto. Al aprovechar las soluciones de seguridad integrales de WP-Firewall, puede proteger su sitio de WordPress de los ataques SSRF y otras amenazas emergentes. Anticípese a las posibles vulnerabilidades y garantice un entorno seguro para sus usuarios con WP-Firewall.
No espere a que se produzca una vulneración de seguridad para tomar medidas. Proteja su sitio de WordPress hoy mismo con WP-Firewall. Comience su prueba gratuita y experimente la tranquilidad que ofrece una protección sólida y en tiempo real.
Para obtener más información sobre cómo WP-Firewall puede ayudar a proteger su sitio de WordPress, visite nuestro sitio web o contacte con nuestro equipo de soporte.
Manténgase seguro, protegido y mantenga su sitio de WordPress protegido con WP-Firewall.
—
Consejos de seguridad semanales
Reciba la información de seguridad más reciente de WordPress en su bandeja de entrada. Suscríbete a nuestra newsletter y manténgase informado sobre las últimas amenazas y las mejores prácticas para proteger su sitio de WordPress.
Lo último en avisos de seguridad
Vea los últimos avisos de seguridad y manténgase actualizado sobre las vulnerabilidades críticas que afectan a los complementos y temas de WordPress.
– 19 de mayo de 2024: Informe de vulnerabilidad de WordPress (6 de mayo de 2024 al 12 de mayo de 2024)
– 15 de mayo de 2024: Vulnerabilidades de alta prioridad corregidas en el complemento principal de Uncode