Pular para o conteúdo
Todos os conceitos

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.

config.php executado pelo servidor devolve só a página <html>...</html> config.php.bak extensão que não roda devolve o código como texto DB_PASS = ... APP_SECRET = ... segredos à mostra
config.php é executado e devolve só a página; config.php.bak tem extensão que o PHP não roda, então o servidor entrega o código fonte com os segredos à mostra.

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.

Aparece nestes desafios