Quando você efetua login por meio de um método normal (no console, por SSH, etc.), o programa que manipula o login define algumas variáveis de ambiente, incluindo HOME
. Se você obtiver acesso a um shell não por meio do login, mas ao explorar uma vulnerabilidade em um programa, você obtém o ambiente desse programa, que frequentemente, mas nem sempre, inclui HOME
.
No bash, por algum motivo, o comando cd
sem argumento usa o valor de HOME
como o destino. No entanto, a expansão de til recai no diretório inicial do banco de dados do usuário (por exemplo, /etc/passwd
) se HOME
não estiver definido. Portanto, se HOME
não estiver definido, cd
será reclamado, mas cd ~
será alterado para o diretório pessoal do usuário. cd $HOME
corre cd
sem argumento quando HOME
não está definido.
Quando você está explorando uma vulnerabilidade, não pode contar com o ambiente sendo familiar. É parte do ofício de fazer uma exploração - a parte fácil - passar da capacidade de executar código (por exemplo, ter um shell) para configurar um ambiente conveniente para executar código padrão.