Pide un directorio sin archivo de índice y muchos servidores muestran la lista de archivos en su lugar. Copias de seguridad, exportaciones, una copia vieja de un archivo de configuración: todo lo que esté ahí es ya público, y los escáneres automáticos buscan justo eso.
Nginx
autoindex off; # the default, so check nobody turned it on
grep -rn autoindex /etc/nginx/
Apache y LiteSpeed
Options -Indexes
# or per directory, in .htaccess
Options -Indexes
Comprueba cada directorio, no solo la raíz
for d in uploads backup files export logs tmp; do
printf '%-10s ' "$d"
curl -sS -o /dev/null -w '%{http_code}\
' "https://yourdomain.com/$d/"
done
Un 200 en cualquiera de ellos merece que lo abras en un navegador ahora mismo. Lo que quieres es 403 o 404.
Un archivo de índice vacío es un remedio flojo
Meter un index.html en cada carpeta esconde el listado, y los archivos siguen siendo accesibles por su nombre. Detiene una mirada distraída y nada más: desactiva la opción en el servidor.
La respuesta de verdad para archivos privados
Todo lo que no deba ser público no debería estar bajo la raíz de documentos en absoluto. Guárdalo fuera y sírvelo mediante un script que compruebe quién lo pide.
/var/www/site/
public/ <- the document root
storage/ <- backups, exports, logs: no URL can reach these
Ya que estás mirando, busca los archivos que la gente deja atrás: .env, .git, config.php.bak, database.sql. Una copia del código olvidada en la raíz web ha filtrado aplicaciones enteras: pide cada uno y confirma que no está.