Backup exposto
Um arquivo .bak ou .old na raiz web é servido como texto e mostra o código e os segredos.
O servidor decide o que fazer com um arquivo pela extensão. Um .php ele manda para o interpretador, que roda o código e devolve só o resultado, nunca o código fonte. Mas um config.php.bak, um config.php~ ou um settings.old têm uma extensão que o interpretador não reconhece, então o servidor faz o óbvio: devolve o arquivo como texto puro.
Esses arquivos nascem sozinhos. Editores salvam uma cópia .bak ou ~ ao editar; gente renomeia config.php para config.php.old antes de mexer; deploys deixam .orig para trás. Se qualquer um deles fica na raiz web, o código fonte e os segredos que estavam dentro (senha de banco, chave de API) ficam legíveis para quem pedir o endereço certo.
A defesa é não guardar backup na pasta servida, bloquear essas extensões no servidor (location ~* \.(bak|old|orig|save)$ { deny all; }) e tirar todo segredo do código, lendo de variável de ambiente. Procurar .bak, .old e .git/ expostos é das primeiras coisas que um atacante faz.