Evaluación inicial sin contraseñas Presupuesto antes de intervenir Especialista responsable de principio a fin

Persistence Reinfection

El plugin vulnerable está parcheado, pero la puerta trasera permanece

Elimina la persistencia posterior a una vulnerabilidad revisando archivos, usuarios, cron, base de datos y accesos del hosting.

Actualizar un plugin vulnerable cierra el punto de entrada conocido para futuras peticiones. No elimina archivos, usuarios, tareas programadas o credenciales robadas mientras la vulnerabilidad estuvo abierta.

Considera el parcheo y la limpieza posterior a la explotación como dos fases diferentes.

Conserva los datos del estado vulnerable

Registra el nombre del plugin, versiones anterior y nueva, hora de actualización y periodo durante el que estuvo expuesto. Guarda los avisos del proveedor o la herramienta de seguridad y los logs de acceso relevantes.

Conserva fuera de línea una copia del plugin anterior y de los archivos sospechosos para analizarlos, pero impide su ejecución pública después de recoger las evidencias.

No reinstales la versión antigua en un staging conectado a Internet para reproducir el ataque.

Determina qué permitía la vulnerabilidad

Consulta el aviso oficial del desarrollador y fuentes fiables de vulnerabilidades. Averigua si permitía subir archivos, crear usuarios, modificar opciones, leer configuración o ejecutar PHP.

Usa esas capacidades para definir la investigación. Una subida de archivos sin autenticación requiere comprobaciones distintas de un fallo de ajustes reservado a administradores.

No presupongas que la prueba de concepto publicada enumera todas las acciones que realizó el atacante.

Busca artefactos posteriores a la explotación

Revisa archivos modificados recientemente, PHP dentro de uploads, plugins desconocidos o mu-plugins, wp-config.php, .htaccess y cambios en el núcleo.

Inspecciona administradores, contraseñas de aplicación, WP-Cron, Action Scheduler y scripts u opciones de base. Busca dominios externos y nombres de archivo identificados en los logs.

Analiza el contenido sospechoso fuera de línea; no abras las URL de las puertas traseras en un navegador.

Construye indicadores específicos de la exposición

Recopila rutas, parámetros, IP de origen, nombres de archivo y horas del aviso del proveedor, el informe del hosting y tus propios registros. Úsalos para localizar posibles explotaciones en los logs y en webs vecinas.

Trata los indicadores como pistas con contexto y caducidad. Una IP compartida, un nombre PHP genérico o una petición POST ordinaria pueden ser legítimos. Conserva las coincidencias y contrástalas con cambios de archivos o base antes de bloquear rangos amplios o borrar todo archivo parecido.

Si los logs no cubren el periodo expuesto, documenta esa limitación y amplía la revisión de persistencia.

Sustituye los componentes de confianza

Elimina por completo el directorio comprometido e instala el paquete parcheado obtenido de una fuente verificada. Reconstruye el núcleo y otros componentes comerciales modificados desde sus fuentes oficiales.

Revisa manualmente el código propio en vez de copiar directorios completos de la web infectada. Limpia la persistencia en base con una copia previa y atribución de cada dato.

Vacía las cachés de opcode y de página mediante los controles admitidos por el hosting.

Rota los secretos expuestos

Si el fallo podía leer wp-config.php, rota las credenciales de base y los salts de WordPress. Revisa hosting, SFTP, despliegue y secretos API almacenados en el servidor.

Revoca sesiones, administradores y contraseñas de aplicación desconocidos. Coordina las integraciones para que ninguna automatización vuelva a introducir valores antiguos.

Cambiar contraseñas no elimina una puerta trasera que ya exista como archivo.

Revisa la explotación en toda la cuenta

Busca en los logs peticiones al endpoint vulnerable de cada web que ejecutara el plugin. Incluye staging, instalaciones olvidadas y permisos compartidos del hosting.

El plugin de producción puede estar actualizado mientras una copia antigua continúa vulnerable y puede escribir en la misma cuenta.

Retira o aísla las copias sin soporte y asigna una responsabilidad clara sobre sus actualizaciones.

Verifica el cierre de la entrada y la persistencia

Confirma la versión parcheada y que el comportamiento vulnerable ya no existe mediante indicaciones seguras del proveedor, nunca con payloads reales contra producción.

Monitoriza archivos, usuarios, cron y conexiones salientes durante más tiempo que el periodo anterior de recurrencia. Repite los síntomas públicos originales como visitante limpio y documenta tanto lo hallado como las evidencias que ya no están disponibles.

Comprueba que las actualizaciones automáticas, despliegues y copias no conservan el paquete vulnerable. Una restauración posterior podría reabrir silenciosamente el mismo acceso.

Cuándo solicitar una limpieza posterior al ataque

Pide una evaluación si la web estuvo expuesta antes del parche, aparecieron archivos o usuarios, o el plugin gestionaba subidas o autenticación. Comparte versión, cronología y síntomas públicos sin credenciales.

Una respuesta completa demuestra que la entrada está corregida y que se eliminó toda persistencia creada durante la exposición.

ANTES DE ENVIAR LA SOLICITUD

Preguntas frecuentes.

¿Pedís contraseñas en el formulario?+

No. El formulario público nunca solicita accesos. Los datos seguros se piden únicamente después de aprobar el alcance y el presupuesto.

¿Quién revisa la incidencia?+

La solicitud llega a Jordi Ensenyat, fundador de Code Barcelona y especialista WordPress con más de 15 años de experiencia.

¿Se cambia algo antes del presupuesto?+

No. Primero se revisan los síntomas visibles y se define el alcance. La intervención empieza tras la aprobación y con una vía de vuelta preparada.

¿Trabajáis con webs en inglés y fuera de España?+

Sí. WP Repair atiende incidencias WordPress y WooCommerce en inglés y español, con servicio remoto.

Evaluar mi incidencia