Verifique o Histórico: Credenciais Vazadas na Linha de Comando

Escalonamento de Privilégios & Pós-Exploração Nível 2/4 ~2 min 3 de julho de 2026

O desafio

Você conseguiu um shell numa máquina de deploy como usuário 'deploy'. O admin anterior foi descuidado na linha de comando. Olhe ao redor, depois verifique o que ele digitou - um comando vaza uma credencial. Envie a senha do banco de dados (no formato HDNA{...}).

O que você vai aprender

  • Usar o comando interno history para ler os comandos de um usuário anterior
  • Reconhecer que segredos passados como flags na linha de comando ficam registrados e expostos
  • Triar um shell recém-obtido em busca de credenciais fáceis de encontrar
  • Entender por que flags no estilo -p<senha> são perigosas

Habilidades testadas

Linha de comando LinuxEnumeração pós-exploraçãoBusca por credenciais

Pré-requisitos

  • Comandos básicos de shell (ls, cat)
  • Noção de como bancos de dados são acessados

Como funciona

Quando um atacante (ou um pentester) obtém um shell numa máquina pela primeira vez, o objetivo imediato é a enumeração: vitórias fáceis que ampliam o acesso. Uma das mais confiáveis é o histórico do shell. Todo shell interativo registra os comandos digitados por um usuário, normalmente em ~/.bash_history, e o comando interno history os exibe. Admins rodam todo tipo de comando numa máquina de deploy, e de vez em quando um deles contém um segredo.

O padrão perigoso aqui é uma credencial passada como flag na linha de comando. O admin anterior se conectou ao banco de dados com mysql -u billing_admin -p'...' -h db-prod, colocando a senha diretamente após -p. Qualquer coisa na linha de comando é registrada no histórico e também fica visível, enquanto o comando roda, para quem conseguir ler a lista de processos com ps. Assim, um único shell, mesmo sem privilégios, entrega a senha do banco de dados em texto aberto, o que geralmente destrava muito mais do que a própria máquina.

O terminal deste desafio se comporta como um shell real: você pode olhar ao redor com ls, cat e afins, mas a solução está no comando interno history. Ao lê-lo, aparecem os comandos de deploy de rotina e, entre eles, a linha do mysql com a flag.

Erros comuns

  • Apenas listar arquivos. O segredo aqui não está num arquivo; está no histórico de comandos. Rode history.
  • Passar batido pela linha do mysql. A senha está inline logo após -p, leia o comando inteiro, não só o nome do programa.
  • Enviar o usuário ou o host. A pergunta pede o valor da senha, a parte que parece uma flag.
  • Supor que um shell sem privilégios é inútil. O histórico e a lista de processos vazam segredos independentemente do nível de privilégio.

Como se proteger

A regra defensiva é simples: nunca coloque segredos na linha de comando. Use um arquivo de credenciais com permissões restritas, uma variável de ambiente injetada por um gerenciador de segredos, ou prompts interativos, nunca -p<senha>. E rotacione tudo que já foi digitado inline.

  • Passe as credenciais do banco de dados via um arquivo de opções protegido ou um gerenciador de segredos, nunca como flag.
  • Evite segredos em qualquer comando (histórico e ps expõem ambos); use prompts interativos em vez disso.
  • Restrinja e rotacione as credenciais, e limpe ou desative o histórico em contas sensíveis.

Solução completa

Membros Pro e Max desbloqueiam o passo a passo completo.

Assinar Pro

Estatísticas da comunidade

69 resoluções
72% taxa de sucesso
Malekith Primeiro sangue

Vá mais fundo

Hacks de hoje relacionados

24.000+ Hackers 100+ Labs & Cursos Grátis
Comece Grátis