/cgi-bin/ no es un endpoint estándar ni un componente nativo de WordPress. Se trata de un directorio tradicional de los servidores web, que se remonta a los orígenes de Internet. Su presencia en un sitio WordPress no indica una vulnerabilidad por sí mismo, pero puede ser un vector de ataque o un escondite para código malicioso si no se gestiona correctamente.

¿Qué es el directorio cgi-bin/?

Propósito original: El directorio cgi-bin (Common Gateway Interface binary) fue creado para almacenar scripts ejecutables, tradicionalmente escritos en lenguajes como Perl o C. Estos scripts eran la forma principal de generar contenido dinámico en los servidores web antes de que PHP y otros lenguajes modernos se popularizaran .

En el contexto actual: Hoy en día, es en gran medida un "vestigio histórico". La mayoría de los hosts modernos permiten ejecutar scripts desde cualquier ubicación, por lo que el cgi-bin ya no es necesario para WordPress.
WordPress utiliza PHP, y todos sus archivos residen en la raíz web, fuera de este directorio. Se ha documentado que incluso versiones antiguas de WordPress (anteriores a la 2.0.3) tenían problemas de permisos si se instalaban dentro de cgi-bin.

Una URL típica sería:

https://ejemplo.com/cgi-bin/

Históricamente, Apache utilizaba este directorio para ejecutar programas CGI, por ejemplo:

/cgi-bin/script.cgi /cgi-bin/test.pl

Estos scripts pueden estar escritos en lenguajes como:

  1. Perl
  2. Python
  3. Shell
  4. C/C++
  5. Otros lenguajes capaces de funcionar mediante CGI

En un servidor WordPress moderno, WordPress normalmente no necesita /cgi-bin/ para funcionar.

¿Cómo comprobarlo?

Puedes comprobar: https://ejemplo.com/cgi-bin/

Y observar el código HTTP:

  1. 404 🟢 No existe
  2. 403 🟢 Existe pero está restringido
  3. 200 vacío 🟡 Revisar configuración
  4. 200 + Index of 🟠 Directory Listing
  5. Script CGI accesible 🟠 Requiere análisis
  6. CGI vulnerable/explotable 🔴 Crítico

⚠️ ¿Por qué supone un riesgo de seguridad?

El peligro del directorio cgi-bin en un sitio moderno radica en su falta de uso y la desatención que suele recibir.

Escenario de "escondite" para malware: Esta es la principal amenaza. Como el cgi-bin rara vez se revisa y se asume que está vacío, los atacantes suelen usarlo para ocultar scripts maliciosos (backdoors, shells, etc.). Si tu servidor ha sido vulnerado, es común que el malware se instale en esta carpeta para pasar desapercibido.

Riesgo de ejecución de scripts: Por diseño, el servidor está configurado para ejecutar scripts que se encuentren dentro del directorio cgi-bin. Si un atacante logra subir un archivo malicioso a esta ubicación, podría ejecutarlo fácilmente y comprometer el sitio.

Conflictos con reglas de WordPress: Aunque el directorio en sí no es un problema, las reglas de reescritura (.htaccess) de WordPress pueden, en ocasiones, interferir con la ejecución de scripts CGI legítimos que estuvieran dentro de esta carpeta, si los hubiera.

¿Cómo protegerlo?

Deshabilitar CGI si no se utiliza

Si el servidor WordPress no necesita CGI, deshabilita el módulo correspondiente.

En Apache, dependiendo de la distribución:

sudo a2dismod cgi sudo systemctl restart apache2

En algunos sistemas puede utilizarse cgid en lugar de cgi.

Desactivar el listado de directorios

En Apache:

Options -Indexes

Esto evita que aparezca:

Index of /cgi-bin/

Eliminar scripts innecesarios

Si existen scripts CGI antiguos que ya no se utilizan, elimínalos.

Mantener el servidor actualizado

Apache, PHP, Perl, Python y cualquier software CGI deben mantenerse actualizados.

En resumen, el directorio /cgi-bin/ no es parte del núcleo de WordPress y su presencia no te compromete automáticamente, pero sí es una ubicación que debes revisar para evitar que sea utilizada como un escondite para código malicioso.