.htaccess Es un archivo de configuración de Apache que permite definir reglas para un directorio concreto. En WordPress se utiliza principalmente para gestionar los enlaces permanentes (URLs amigables), redirecciones y reglas de seguridad.

No forma parte del contenido público del sitio y nunca debería poder descargarse desde Internet.

¿Qué contiene un .htaccess de WordPress?

Un archivo típico es:

# BEGIN WordPress <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] </IfModule> # END WordPress

Además, muchos administradores añaden reglas para:

  1. Bloquear XML-RPC.
  2. Restringir el acceso a wp-admin.
  3. Proteger wp-config.php.
  4. Evitar el listado de directorios.
  5. Bloquear bots maliciosos.
  6. Configurar cabeceras de seguridad.
  7. Limitar el acceso por dirección IP.

¿Cómo proteger .htaccess?

En Apache, puedes impedir su acceso añadiendo:

<Files ".htaccess"> Require all denied </Files>

En versiones antiguas de Apache:

<Files ".htaccess"> Order Allow,Deny Deny from all </Files>

¿Por qué es una vulnerabilidad si queda expuesto?

El archivo en sí no ejecuta código, pero puede revelar información muy útil para un atacante.

1. Revela la configuración de seguridad

Un atacante puede conocer: Qué archivos están protegidos, qué directorios están bloqueados, qué mecanismos de seguridad utiliza el servidor, qué rutas especiales existen.

Con esa información un cibercriminal puede adaptar mejor sus ataques.

2. Expone la estructura del sitio

Puede mostrar: Directorios protegidos, redirecciones internas,rutas ocultas, configuración de plugins.

Esto facilita el reconocimiento del objetivo.

3. Puede revelar información sensible

Aunque no es recomendable, algunos administradores incluyen en .htaccess: Rutas internas, variables de entorno,configuraciones específicas, reglas relacionadas con aplicaciones privadas.

4. Ayuda a evadir protecciones

Si un atacante conoce exactamente qué reglas existen, puede intentar encontrar rutas o métodos que no estén cubiertos por ellas.

¿Qué ocurre normalmente?

Si visitas: https://ejemplo.com/.htaccess deberías obtener:

403 Forbidden 404 Not Found

Si el navegador descarga el archivo o muestra su contenido, hay una mala configuración del servidor.

¿Puede un atacante modificarlo?

No, simplemente porque sea visible no significa que pueda modificarse.
La exposición solo permite leer el archivo. Para modificarlo necesitaría otro tipo de vulnerabilidad (por ejemplo, una subida arbitraria de archivos o una ejecución remota de código).

Además:

  1. No almacenes información sensible en .htaccess.
  2. Revisa periódicamente que no pueda descargarse.
  3. Mantén una copia de seguridad del archivo antes de modificarlo.

¿Qué gravedad tiene?

Si únicamente se expone el contenido de .htaccess, normalmente se considera una vulnerabilidad de gravedad baja a media, porque principalmente supone una divulgación de información (Information Disclosure).

Sin embargo, la gravedad puede aumentar si el archivo revela:

  1. Rutas internas del servidor.
  2. Configuraciones de autenticación.
  3. Variables de entorno.
  4. Reglas que permitan identificar otros puntos débiles del sitio.

¿Debes incluirlo en un escáner de seguridad?

Sí. Un escáner de seguridad para WordPress debería comprobar si archivos sensibles como los siguientes son accesibles públicamente:

/.htaccess /wp-config.php /.git/config /.env config.json backup.sql

Si cualquiera de ellos devuelve un HTTP 200 y permite leer su contenido, es un indicador claro de una configuración insegura que debe corregirse.

Recomendación Importante

Realiza una copia de seguridad: Antes de modificar cualquier archivo .htaccess, siempre crea una copia de seguridad. Un error de sintaxis (como un simple espacio) puede provocar un error 500 Internal Server Error y hacer que todo tu sitio web sea inaccesible.

Ubicación de tus reglas: Para evitar que WordPress sobrescriba tus reglas personalizadas, no las coloques entre los marcadores # BEGIN WordPress y # END WordPress. WordPress utiliza esta sección para sus propias reglas y la sobrescribirá automáticamente. Coloca tus reglas personalizadas fuera de estos marcadores, o dentro de tus propios marcadores como # BEGIN MyCustomRules y # END MyCustomRules.