El archivo .git/config es un archivo de configuración interno de Git, el sistema de control de versiones. No forma parte de WordPress, pero muchos desarrolladores utilizan Git para gestionar el código del sitio.

Exponer la carpeta .git (y su archivo config) es un riesgo de seguridad crítico, ya que permite a los atacantes descargar todo el código fuente, incluyendo archivos con credenciales de bases de datos y claves de autenticación. Este tipo de exposición es activamente escaneado por bots maliciosos en busca de estas vulnerabilidades.

¿Qué es .git/config?

Es un archivo de texto que almacena la configuración del repositorio Git. Un ejemplo es:

[core] repositoryformatversion = 0 filemode = true [remote "origin"] url = git@github.com:empresa/wordpress-site.git [branch "main"] remote = origin merge = refs/heads/main

Este archivo puede revelar: La URL del repositorio remoto (GitHub, GitLab, Bitbucket, etc.), el nombre de las ramas (Branch), Configuración del repositorio, Información sobre el flujo de trabajo del desarrollo.

¿Por qué es una vulnerabilidad?

1. Exposición del repositorio

Si un atacante puede acceder a: https://ejemplo.com/.git/ o https://ejemplo.com/.git/config es posible que el servidor también permita acceder a otros archivos del directorio .git.

En muchos casos, herramientas como GitTools, git-dumper o GitHack pueden descargar el contenido del repositorio y reconstruir el código fuente del sitio.

2. Exposición del código fuente

Con el repositorio reconstruido, un atacante puede analizar: Plugins personalizados, temas, código propietario, funciones internas, integraciones con APIs.

Esto facilita la búsqueda de vulnerabilidades específicas.

3. Exposición de credenciales

Aunque las buenas prácticas indican que no deben almacenarse secretos en Git, en proyectos reales es relativamente frecuente encontrar:

Contraseñas, Claves API, Tokens de acceso, Credenciales de bases de datos, Claves SSH.

Incluso si ya fueron eliminadas, el historial de Git puede seguir conteniéndolas.
Todo ello ayuda a un atacante a planificar un ataque más efectivo.

¿Cómo comprobar si está expuesto?

Prueba a acceder a: https://ejemplo.com/.git/config Si el servidor responde con el contenido del archivo (HTTP 200), existe una vulnerabilidad.
Si responde con:

403 Forbidden, el acceso está bloqueado. 404 Not Found, el directorio no existe o no es accesible. HTTP 200, existe una vulnerabilidad.

¿Cómo protegerlo?

Para proteger tu sitio, la solución más robusta es mover la carpeta .git fuera del directorio público (public_html o www). Si no es posible, debes bloquear el acceso por completo desde el servidor web usando las siguientes reglas.

1. Para Servidores Apache (con .htaccess)

Esta es la solución más común si tu hosting usa Apache. Puedes agregar la siguiente regla al archivo .htaccess que se encuentra en la raíz de tu instalación de WordPress (junto a wp-config.php).

Bloquear todos los archivos y carpetas ocultas (los que empiezan con un punto): Esta es la regla más segura, ya que protege .git, .env y cualquier otro archivo que empiece por punto.

<FilesMatch "^\."> Require all denied </FilesMatch>

Bloquear un archivo o carpeta específica .git:
Si prefieres solo apuntar a .git, puedes usar esta regla:

<FilesMatch "^\.git"> Require all denied </FilesMatch>

2. Para Servidores Nginx

Si tu servidor usa Nginx, los archivos .htaccess no funcionan. En su lugar, debes añadir una regla en el archivo de configuración de tu sitio:

location ~ /\. { deny all; }

Recomendación Final

Para una protección máxima, la práctica recomendada es mover la carpeta .git fuera del directorio raíz del sitio web (por ejemplo, a una carpeta por encima de public_html).

Esto hace que sea inaccesible desde el navegador por diseño, sin necesidad de reglas adicionales.

Sin embargo, esta operación es más compleja y requiere ajustar las referencias en tu repositorio local, por lo que la solución de bloquear el acceso mediante el servidor es la más práctica y comúnmente utilizada.