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

Files Plugins Themes

Los archivos PHP desconocidos reaparecen en wp-content/uploads

Rastrea PHP recurrente en uploads hasta tareas, puertas traseras, cuentas comprometidas o gestores de carga vulnerables.

Borras un PHP desconocido de una carpeta mensual de uploads y vuelve horas después. Su reaparición demuestra que otro proceso, cuenta o petición todavía puede escribirlo. Borrarlo repetidamente elimina el síntoma y deja activa la persistencia.

Impide su ejecución, conserva una muestra segura e identifica al escritor antes de abrir la web.

Conserva una aparición

Registra ruta completa, propietario y grupo, permisos, tamaño y hora. Calcula un hash sin ejecutar:

sha256sum /quarantine/suspicious-file.php

Trabaja sobre una copia en cuarentena fuera de la raíz. No abras su URL, lo incluyas desde PHP ni lo subas a un escáner público no autorizado.

Conserva logs web, PHP, SFTP y panel próximos a la fecha de modificación.

Confirma si PHP se ejecuta en uploads

Uploads debería guardar medios, no aplicaciones PHP públicas. Comprueba la configuración mediante documentación y archivos seguros, nunca ejecutando la muestra.

Aplica una regla compatible para impedir PHP en uploads. Apache, Nginx y distintos handlers requieren configuraciones diferentes; un .htaccess copiado puede no funcionar.

Esto solo contiene. El escritor aún podría colocar scripts en otra ruta.

Relaciona la hora con peticiones y tareas

Compara timestamp con logs, cron de WordPress, Action Scheduler, cron del hosting, copias y análisis. Considera zonas horarias y fechas alteradas por copias o restauraciones.

Busca endpoints de carga, acciones AJAX o POST extraños justo antes. Conserva metadatos sin almacenar contraseñas, cookies o archivos de clientes innecesarios.

Si no coincide con tráfico web, investiga SFTP, panel, cron u otra web comprometida.

Compara también propietario e identificador del proceso cuando el hosting los proporcione. Una escritura realizada por el usuario de PHP no demuestra qué plugin la originó, pero descarta algunas rutas externas. Una escritura con otro usuario orienta hacia tareas del sistema, despliegues o acceso al panel.

Encuentra el proceso o código padre

Busca en una copia el nombre exacto, cadena distintiva o código que escriba en uploads. Revisa plugins desconocidos, mu-plugins, tema y wp-config.php.

Inspecciona opciones y callbacks programados que contengan código. No decodifiques ni ejecutes payloads en producción.

Si existe auditoría de archivos, configúrala de manera estrecha y temporal. La vigilancia recursiva amplia puede cargar el servidor y registrar datos sensibles.

Registra únicamente creación, ruta, usuario, proceso y hora. No copies el contenido de todos los uploads al log. Detén la auditoría después de capturar el evento y conserva su configuración para que el proveedor pueda interpretar correctamente el resultado.

Revisa vulnerabilidades de carga

Identifica plugins y formularios que aceptan archivos. Confirma extensión, MIME, permisos y mantenimiento de cada componente.

No confíes en restricciones del navegador. Las funciones personalizadas necesitan validación de servidor y almacenamiento no ejecutable.

Parchea o desactiva el componente después de conservar versión y logs. Elimina formularios abandonados, no los escondas.

Comprueba los accesos de toda la cuenta

Revisa administradores, contraseñas de aplicación, FTP, SFTP, sesiones del hosting y cron. Rota credenciales después de asegurar dispositivos y despliegues.

Inspecciona todas las webs de la cuenta. Una instalación vecina comprometida puede escribir en otra raíz si los permisos lo permiten.

Corrige propietario y aislamiento, no concedas permisos mundiales para que funcionen actualizaciones.

Limpia y demuestra que no reaparece

Elimina archivos confirmados, sustituye paquetes fiables, limpia persistencia en base y cierra la vulnerabilidad o acceso robado.

Monitoriza el directorio durante el intervalo en que solía volver. Prueba la carga con un archivo permitido e inocuo y confirma que PHP no se ejecuta.

Un escáner verde durante un minuto no basta; observa ciclos programados y el periodo histórico de recurrencia.

Mantén una alerta sobre extensiones ejecutables y cambios de reglas dentro de uploads. La ausencia de la misma muestra no basta si el escritor empieza a usar nombres aleatorios o dobles extensiones.

Cuándo solicitar limpieza especializada

Pide ayuda urgente si los archivos vuelven, hay varias webs compartidas o los logs muestran POST o SFTP desconocidos. Envía rutas y horas con usuarios censurados, no la muestra ni credenciales.

La reparación debe explicar quién o qué escribió el archivo y demostrar que se cerraron la ejecución y la reinfecció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