
La lista de ficheros que incluye WordPress no es fija. Cambia con cada versión, el idioma de la instalación y algunos componentes opcionales. Por eso una relación basada en WordPress 3.3.2, como la que acompañaba a este artículo, ya no sirve para comprobar si una instalación actual está intacta.
Para detectar archivos modificados o añadidos conviene comparar la instalación con la versión exacta descargada desde WordPress.org. La forma más fiable es usar checksums, es decir, huellas digitales de los archivos. Esta guía mantiene la idea original, pero la adapta al funcionamiento actual de WordPress y añade un procedimiento útil si sospechas que alguien ha tocado tu web.
Una instalación normal tiene tres zonas principales:
/wp-admin/ contiene la interfaz de administración y sus archivos de soporte./wp-includes/ reúne gran parte del núcleo que carga WordPress en cada petición./wp-content/ guarda los temas, los plugins, las traducciones y normalmente los archivos subidos a la biblioteca multimedia.En la raíz también encontrarás archivos como index.php, wp-login.php, wp-settings.php, wp-load.php y varios scripts que gestionan el cron, los comentarios, el correo o el registro de usuarios. El archivo wp-config.php se crea durante la instalación y contiene datos sensibles, por lo que no forma parte de la copia estándar que se descarga desde WordPress.org.
El directorio /wp-content/ es distinto. Ahí viven tus plugins, tus temas y tus medios, así que su contenido depende de cada sitio. Una instalación puede tener un tema hijo, plugins premium, un sistema de caché o carpetas creadas por el hosting. Que un archivo no aparezca en la descarga oficial no significa por sí solo que sea malicioso.
WordPress elimina archivos antiguos, incorpora nuevas librerías y reorganiza partes del núcleo con el paso de las versiones. Además, no todas las instalaciones incluyen exactamente lo mismo: el idioma, el modo multisitio y la versión instalada influyen en el resultado.
También hay archivos legítimos que no pertenecen al núcleo. Un plugin puede crear su propia carpeta dentro de /wp-content/, un tema puede añadir plantillas y el servidor puede usar .htaccess o web.config para las reglas de reescritura. Una lista copiada de Internet puede servir como referencia histórica, pero no como prueba de seguridad.
La herramienta más práctica para una comprobación técnica es WP-CLI. El comando oficial compara los archivos del núcleo con los checksums publicados para la versión y el idioma indicados:
wp core verify-checksums
Si todo coincide, WP-CLI muestra un mensaje de éxito. Si encuentra un archivo modificado, ausente o que no debería estar ahí, lo identifica en la salida. Para revisar también elementos de la raíz que no están dentro de las carpetas habituales puedes usar:
wp core verify-checksums --include-rootLenguaje del código: PHP (php)
La documentación de wp core verify-checksums permite indicar una versión concreta con --version y el idioma con --locale. Es importante que ambos datos correspondan a la instalación real. De lo contrario, pueden aparecer avisos aunque los archivos sean correctos.
El núcleo no cubre /wp-content/. Para los plugins alojados en WordPress.org puedes hacer una comprobación parecida:
wp plugin verify-checksums --all
Los plugins premium, los desarrollos propios y algunos temas no tendrán necesariamente checksums públicos. En esos casos necesitas comparar con el paquete original del proveedor o con una copia limpia de confianza.
/uploads/.Un checksum incorrecto no demuestra por sí solo que haya habido un ataque. Puede deberse a una actualización interrumpida, una modificación legítima del proveedor o una versión distinta de la que has indicado. La señal merece investigación, sobre todo si aparece junto a archivos PHP desconocidos, usuarios nuevos o redirecciones extrañas.
La guía oficial de endurecimiento de WordPress recomienda mantener copias de seguridad, usar las versiones oficiales y limitar las vías de modificación innecesarias. Una medida habitual es desactivar el editor de archivos del panel:
define( 'DISALLOW_FILE_EDIT', true );Lenguaje del código: JavaScript (javascript)
Esta constante evita editar plugins y temas desde el escritorio, pero no bloquea cambios realizados por FTP, SFTP, el hosting o un proceso comprometido. Tampoco sustituye a los permisos correctos, las actualizaciones y las copias verificadas.
Conviene revisar de vez en cuando que /wp-content/uploads/ no permita ejecutar scripts PHP. La configuración depende del servidor, así que es mejor aplicar la regla recomendada por tu proveedor y probarla en staging. Un bloqueo demasiado amplio puede impedir que funcionen plugins que necesitan servir archivos dinámicos.
wp-config.php: contiene las credenciales de la base de datos y otras constantes de configuración..htaccess y web.config: controlan reglas del servidor y pueden dejar la web inaccesible si se editan mal./wp-admin/ y /wp-includes/: no son lugares para añadir código propio./wp-content/uploads/: debería contener principalmente medios y no convertirse en un almacén de scripts PHP desconocidos.Si necesitas personalizar WordPress, usa un plugin propio o un tema hijo cuando corresponda. Así las actualizaciones del núcleo no pisan tus cambios y resulta más sencillo saber qué archivos pertenecen realmente al proyecto.
La relación original de este artículo se generó a partir de WordPress 3.3.2. Puede resultar útil para entender cómo estaba organizado el núcleo en 2012, pero no debe usarse para auditar una instalación actual. Hoy es mejor identificar la versión instalada, verificar sus checksums y revisar por separado los componentes de /wp-content/.
Si ya has sufrido una intrusión, combina esta comprobación con una revisión de la base de datos y del spam. En WPdirecto también tienes una guía para reducir el spam en WordPress y otra sobre limpiar la base de datos. Para una migración, Better Search Replace puede ayudarte a corregir URL almacenadas en ella, pero no sustituye la revisión de los archivos.
La información se ha contrastado con la documentación de WP-CLI para verificar checksums, la guía de seguridad y endurecimiento de WordPress y la documentación de versiones de WordPress.
