El endpoint wp-admin/install.php es el script de instalación oficial del núcleo de WordPress. Es un archivo legítimo y necesario para la configuración inicial del sitio, pero no debe permanecer accesible en un entorno de producción.

¿Qué es install.php y cuál es su función?

El archivo install.php es el corazón del proceso de instalación de WordPress, conocido como la "famosa instalación en 5 minutos". Su función es guiar al usuario en la creación del archivo wp-config.php y en la configuración de las tablas de la base de datos necesarias para poner en marcha el sitio.

Se encuentra en la carpeta /wp-admin/ y, durante el proceso de instalación, es el punto de acceso para que tanto el sistema como el usuario completen la configuración inicial. Una vez finalizada la instalación, su propósito se cumple .

Diferencias entre install.php y wp-admin/install.php

Es importante distinguir entre install.php y wp-admin/install.php, ya que solo el primero resulta sospechoso por defecto en una instalación estándar.

/install.php

¿Es una vulnerabilidad? Sí, potencialmente.
No debería existir en la raíz de un WordPress salvo que una aplicación concreta lo requiera.

Los atacantes suelen crear archivos con nombres aparentemente legítimos como: install.php, setup.php, update.php, config.php, admin.php

Dependiendo de su contenido, puede permitir:

  1. Reinstalar una aplicación.
  2. Sobrescribir la configuración.
  3. Crear un nuevo administrador.
  4. Ejecutar código.
  5. Subir archivos.
  6. Obtener información sensible.

/wp-admin/install.php

¿Es una vulnerabilidad? No.
Ese sí es un archivo oficial de WordPress.
Su función es instalar WordPress cuando todavía no existe un archivo wp-config.php o una base de datos configurada.
En un sitio ya instalado, normalmente: https://tudominio.com/wp-admin/install.php:

mostrará un mensaje similar a:

"WordPress ya está instalado."

No permitirá reinstalar el sitio mientras la instalación sea válida.

⚠️ Riesgos de seguridad si se deja accesible

El principal problema de seguridad es que este archivo quede accesible en un sitio ya instalado y en funcionamiento. Aunque WordPress tiene mecanismos para evitar que se pueda reinstalar el sitio fácilmente (detecta si la base de datos ya tiene tablas), los atacantes pueden intentar explotarlo de varias formas:

Vía para eludir medidas de seguridad: Algunos plugins que ocultan la página de inicio de sesión (como "LWS Hide Login") pueden ser vulnerables si install.php sigue accesible. Se ha documentado que atacantes pueden visitar install.php para saltarse la protección de la página de login oculta.

Explotación en caso de caída de la base de datos: Un atacante podría intentar saturar el servidor de base de datos para que falle temporalmente. Si el script install.php no puede verificar el estado de la instalación (is_blog_installed()), podría llegar a mostrar el formulario de instalación de nuevo y permitir que el atacante reconfigurara el sitio.

Denegación de servicio (DoS): Un atacante podría realizar muchas peticiones a este script para intentar saturar el servidor o la base de datos.

Buenas prácticas de seguridad

La comunidad de WordPress y los expertos en seguridad recomiendan encarecidamente eliminar o bloquear el acceso a este archivo una vez que el sitio esté completamente instalado y funcionando . Esto no afectará a las actualizaciones futuras del núcleo de WordPress.

Formas de hacerlo:

Eliminar el archivo: La medida más segura y sencilla. Puedes borrar install.php del servidor sin que esto afecte al funcionamiento de tu sitio ya instalado.

Bloquear el acceso desde el servidor:

Si prefieres no eliminar el archivo, puedes configurar tu servidor web (por ejemplo, con reglas en .htaccess) para denegar el acceso público a este archivo, permitiéndolo solo desde tu IP si fuera necesario.

Apache:

<Files "install.php"> Require all denied </Files>

Nginx:

location = /install.php { deny all; return 403; }

Eliminar instaladores antiguos:

Después de instalar una aplicación:

elimina install.php, elimina setup.php, elimina installer.php.