O nome de arquivo que executa: Tar Wildcard Injection até root

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

O desafio

Uma máquina de finanças da Calderwell executa um backup a cada hora: ela entra no diretório de upload e empacota tudo o que está nele com tar. O diretório é gravável pelo usuário web, e foi assim que três arquivos que ninguém enviou apareceram nele durante a noite. Dois deles não são relatórios de forma alguma. Leia o job de backup e o diretório, e indique o arquivo exato que um atacante deixou para que o próximo backup executasse o código dele como root.

O que você vai aprender

  • Explicar como o shell expande um glob em argumentos separados antes de o comando vê-los
  • Reconhecer que o tar não distingue um nome de arquivo de uma opção depois que o shell os separou
  • Identificar --checkpoint-action como o recurso do tar que transforma um nome de arquivo em execução de código
  • Entender por que um diretório gravável sob um glob privilegiado já é a vulnerabilidade
  • Citar as alternativas seguras (find -exec, listas explícitas de arquivos, prefixo ./)

Habilidades testadas

Escalação de privilégios no LinuxLeitura de shell scriptsAnálise de sistema de arquivos

Pré-requisitos

  • Comandos básicos de shell (ls, cat)
  • O que um glob (*) faz

Como funciona

Quando o shell vê tar czf out.tgz *, ele substitui o * por todos os nomes de arquivo do diretório e passa cada um como um argumento separado. O comando nunca vê um *; ele vê uma lista. Se um desses nomes começa com um hífen, o comando o lê como uma opção.

O GNU tar tem uma opção, --checkpoint-action=exec=..., que executa um comando em intervalos. Assim, um arquivo chamado --checkpoint-action=exec=sh run.sh, dentro do diretório, vira uma instrução para o tar executar run.sh. Um atacante que só consegue gravar arquivos no diretório sobre o qual o job privilegiado aplica o glob tem seu código executado como o usuário desse job.

A mesma armadilha vale para qualquer cmd * sobre conteúdo controlado pelo atacante: chown, chmod, rsync e outros também têm escapes em forma de opção.

Erros comuns

  • Indicar run.sh. Esse é o payload que as opções plantadas chamam, não o arquivo que sequestra o tar. O tar só o executa porque o arquivo de opção manda.
  • Indicar um CSV. Os dois relatórios são o conteúdo normal do spool e são inofensivos.
  • Esperar executar o backup aqui. O job roda como root em um agendamento; você só precisa reconhecer o que a próxima execução vai fazer.
  • Procurar um binário SUID ou uma regra de sudo. A escalação está inteiramente no glob e no nome do arquivo, nada mais está mal configurado.

Como se proteger

Nunca deixe um comando privilegiado aplicar glob sobre um diretório em que outros podem gravar.

  • Troque o glob por uma lista explícita e com prefixo: find /srv/upload -maxdepth 1 -type f -print0 | tar --null -T - -czf ..., para que nomes de arquivo nunca sejam lidos como opções.
  • Ou neutralize o hífen: tar czf out.tgz -- * ou ./*, para que todo operando seja claramente um caminho.
  • Não rode o backup como root sobre um spool gravável pela web. Reduza os privilégios, ou copie o spool para uma área de staging que o usuário web não consiga tocar e faça o backup dela.

Solução completa

Membros Pro e Max desbloqueiam o passo a passo completo.

Assinar Pro

Estatísticas da comunidade

174 resoluções
83% taxa de sucesso
waltermoar Primeiro sangue

Hacks de hoje relacionados

Colaboradores

Colaboradores creditados

Estes hackers relataram problemas, melhoraram o conteúdo e ajudaram a fortalecer esta página.

32.000+ Hackers Labs reais Grátis
Comece Grátis ou resolva o hack de hoje, sem conta