Datos de clientes expuestos
en WordPress, sin hackeo
La versión corta: auditando el sitio WordPress de un cliente encontramos fichas con información médica de sus propios clientes accesibles para cualquier persona con un navegador. El sitio no había sido hackeado. Nadie robó una contraseña. Todo lo que hizo falta fue conocer los endpoints que WordPress deja públicos por defecto. De ese caso nació Open24 Security, un plugin de hardening que decidimos regalar — descarga directa, sin registro — porque la mayoría de los sitios WordPress y WooCommerce de Argentina están igual de expuestos y sus dueños no lo saben.
La historia
Hace un tiempo tomamos el mantenimiento de un sitio que no habíamos desarrollado nosotros. Parte de nuestro proceso al heredar un sitio es una auditoría técnica: rendimiento, actualizaciones pendientes, y una revisión de qué información expone el sitio hacia afuera.
El sitio guardaba fichas de clientes como contenido de WordPress — algo muy común: formularios que crean entradas, plugins de gestión que usan custom post types, sistemas de turnos. El problema: la REST API de WordPress publica por defecto el contenido de los tipos de datos marcados como públicos. Quien conociera la URL correcta de /wp-json/ podía leer todas las fichas, con datos médicos incluidos. Sin usuario, sin contraseña, sin dejar rastro.
No era una vulnerabilidad. No había ningún bug que reportar. WordPress estaba funcionando exactamente como está diseñado. Y eso es lo que lo hace peligroso: ningún escáner de malware lo iba a detectar, porque no hay malware.
Lo que WordPress y WooCommerce muestran por defecto
Estas son las puertas que un WordPress recién instalado deja abiertas. Ninguna es una "falla": son decisiones de diseño de la plataforma. Pero todas pueden usarse con mala intención:
| Qué | Dónde | Riesgo |
|---|---|---|
| Lista de usuarios | /wp-json/wp/v2/users | Entrega los nombres de usuario reales del sitio: la mitad del trabajo para un ataque de fuerza bruta. |
| Todo el contenido "público" | /wp-json/ | Posts, páginas y custom post types públicos, en formato JSON listo para descargar masivamente. Acá estaban las fichas médicas. |
| Enumeración de autores | ?author=1, ?author=2… | Redirige a la URL del autor y revela el username, uno por uno. |
| XML-RPC | /xmlrpc.php | Permite probar miles de contraseñas en una sola petición. El vector de fuerza bruta más usado contra WordPress. |
| Versión de WordPress | Meta generator, ?ver=, RSS | Le dice al atacante exactamente qué vulnerabilidades conocidas probar. |
| API de WooCommerce | /wp-json/wc/v3/ y cabeceras | Mal configurada, puede responder a requests anónimos y delatar que el sitio es una tienda (objetivo valioso). |
Probalo en tu propio sitio, ahora
No hace falta ser técnico. Abrí una ventana de incógnito y visitá estas dos URLs reemplazando el dominio por el tuyo:
tusitio.com.ar/wp-json/wp/v2/users— si ves una lista con nombres, tu sitio está regalando los usuarios del admin.tusitio.com.ar/wp-json/— si ves un índice gigante de rutas, cualquiera puede explorar qué datos expone tu sitio.
Si alguna de las dos respondió con datos, seguí leyendo.
Cómo lo solucionamos (y por qué hicimos un plugin)
Todo lo de la tabla se puede cerrar a mano: filtros en functions.php, reglas en el .htaccess, algún plugin puntual para cada cosa. Es lo que hacíamos sitio por sitio, hasta que el caso de las fichas médicas nos convenció de que necesitábamos una herramienta única, auditable y consistente para todos los sitios que administramos.
Así nació Open24 Security: un solo plugin con cada protección como un toggle independiente:
- REST API: oculta la lista de usuarios, exige autenticación en endpoints sensibles, permite apagar el índice de
/wp-json/y bloquear endpoints individuales. - Login: URL de acceso personalizada (chau
wp-login.php), límite de intentos por IP, bloqueo de usernames comunes y errores sin pistas. - Protocolos: XML-RPC deshabilitado,
wp-cron.phpexterno bloqueado, enumeración por?author=frenada. - Información: versión de WordPress oculta en el HTML, los assets y el RSS.
- Headers de seguridad: X-Frame-Options, X-Content-Type-Options, Referrer-Policy, Permissions-Policy y HSTS opcional, sin tocar el servidor.
- WooCommerce: API cerrada a requests anónimos y cabeceras de WooCommerce fuera del storefront.
- Salt Shaker: rotación de las claves de
wp-config.phpcon un click, para invalidar todas las sesiones.

¿Por qué gratis?
Porque el problema es masivo y silencioso. Después de aquel caso revisamos decenas de sitios de tiendas WooCommerce argentinas: la enorme mayoría exponía la lista de usuarios y tenía XML-RPC activo. No por negligencia de nadie — simplemente nadie les había dicho que eso estaba ahí.
Transparencia total: el plugin lleva la firma de Open24 y al activarse nos manda un aviso con la URL del sitio (así sabemos cuánta gente lo usa). No recolecta ningún otro dato, no pide email, no tiene versión "premium" escondida. El código está sin ofuscar — podés abrirlo y leerlo.
Descargá Open24 Security gratis
Hardening completo para WordPress y WooCommerce. Descarga directa, sin registro. WordPress 5.5+ y PHP 7.4+.
Si preferís hacerlo a mano
El plugin no hace magia — automatiza lo que también podés configurar vos: deshabilitar XML-RPC desde el .htaccess, filtrar los endpoints REST con rest_endpoints, agregar los headers de seguridad en el servidor y limitar los intentos de login con cualquier plugin de esa categoría. Lo importante no es la herramienta: es cerrar las puertas. Elegí el camino que prefieras, pero cerralas.