Questão de Sistemas Operacionais — Segurança de sistemas operacionais — FGV 2024
Sistemas Operacionais›Segurança de sistemas operacionais
Código
fg097452
Banca
FGV
Órgão
TCE-PA
Ano
2024
Nível
Superior
Cargo
Auditor de Controle Externo - Área de Informática - Analista de Segurança
Um servidor Linux (Ubuntu) publicou uma página web. Durante a verificação de vulnerabilidades nessa página foi encontrada a falha conhecida como Local File Inclusion (LFI). Uma das evidências dessa falha foi constatada pelo analista de segurança quando ele manipulou a entrada da variável “page” demandada pela URL da página. O acesso idôneo deve ser realizado por meio da URL apresentada abaixo, na qual o arquivo “aplicacao.php” é passado como parâmetro para a vaiável “page”.https://192.168.0.1/index.php?page=aplicacao.phpA tabela a seguir, apresenta o resultado da manipulação da vaiável “page”, realizada pelo analista de segurança desta empresa, com arquivos inexistentes no servidor.Assinale a opção que apresenta o valor que esse analista deve passar como parâmetro para a variável “page”, explorando a vulnerabilidade de LFI encontrada, para obter acesso ao conteúdo do arquivo “/etc/hostname” desse servidor de páginas.
A/etc/hostname
B/hostname
C/../etc/hostname
D/../../etc/hostname
E/../../../../etc/hostname
Revelar gabarito e comentário▾
GabaritoE — /../../../../etc/hostname
Comentário gerado por IA. É um apoio ao estudo, ancorado em fontes, mas pode conter imprecisões — confira sempre na fonte oficial (lei, súmula, edital e gabarito da banca). Encontrou um erro? Use “Reportar”.
Local File Inclusion (LFI) e o caminho para /etc/hostname
Gabarito: letra E. Para explorar a vulnerabilidade de LFI e acessar o conteúdo de /etc/hostname, o analista deve usar ../../../../etc/hostname. Isso ocorre porque a aplicação, ao receber o parâmetro page, provavelmente concatena o valor com um diretório base (como /var/www/html/) e, ao incluir o arquivo, o sistema operacional resolve o caminho. Usando ../ (subir um nível) repetidamente, o analista consegue sair do diretório da aplicação e navegar até a raiz do sistema de arquivos (/), alcançando o arquivo desejado.
A vulnerabilidade de Local File Inclusion (LFI) é um tipo de falha de segurança em aplicações web que permite a um atacante incluir arquivos locais do servidor através de uma entrada não sanitizada, como um parâmetro de URL. No exemplo, a aplicação index.php recebe o parâmetro page e o utiliza para incluir um arquivo PHP. Se a aplicação não valida corretamente essa entrada, um atacante pode manipular o valor para incluir arquivos arbitrários do sistema, como arquivos de configuração, senhas ou, como no caso, o arquivo /etc/hostname.
O mecanismo por trás da exploração envolve o conceito de caminhos relativos e absolutos no sistema de arquivos. Quando a aplicação concatena o valor do parâmetro page com um diretório base (por exemplo, /var/www/html/), ela cria um caminho como /var/www/html/aplicacao.php. Para acessar /etc/hostname, o atacante precisa "subir" na hierarquia de diretórios até a raiz (/) e então descer até etc. A sequência ../ em um caminho relativo significa "diretório pai". Portanto, ../../../../etc/hostname sobe quatro níveis a partir do diretório da aplicação, chegando à raiz, e então acessa etc/hostname.
A quantidade de ../ necessária depende da profundidade do diretório onde a aplicação está hospedada. No caso da questão, o gabarito indica que são necessários quatro níveis (../../../../), o que sugere que a aplicação está em um diretório como /var/www/html/ (que tem três níveis abaixo da raiz: var, www, html). Subir quatro níveis a partir de /var/www/html/ leva à raiz /. A alternativa E é a única que fornece a sequência correta de ../ para alcançar o arquivo desejado.
A pegadinha desta questão está em entender que o caminho absoluto /etc/hostname (alternativa A) não funciona diretamente, pois a aplicação concatena o valor com um diretório base, resultando em um caminho como /var/www/html//etc/hostname, que não existe. As alternativas B, C e D fornecem sequências de ../ insuficientes para sair do diretório da aplicação e alcançar a raiz do sistema de arquivos. A alternativa E é a única que fornece a sequência correta de ../ para alcançar o arquivo desejado.
1Aplicação concatena diretório base
2Usar ../ para subir níveis
3Alcançar a raiz (/)
4Acessar etc/hostname
LEVEL · soulevel.com.br
Alternativa A — ❌ Incorreta
O caminho absoluto /etc/hostname não funciona porque a aplicação concatena o valor do parâmetro page com um diretório base. O resultado seria algo como /var/www/html//etc/hostname, que não existe no sistema de arquivos. Para explorar a LFI, é necessário usar caminhos relativos com ../ para escapar do diretório da aplicação.
Alternativa B — ❌ Incorreta
O valor /hostname não corresponde a um caminho válido no sistema de arquivos Linux. O arquivo de hostname está localizado em /etc/hostname, e não na raiz do sistema. Além disso, a concatenação com o diretório base resultaria em um caminho inexistente.
Alternativa C — ❌ Incorreta
A sequência /../etc/hostname sobe apenas um nível a partir do diretório da aplicação. Se a aplicação está em /var/www/html/, subir um nível leva a /var/www/, e o caminho resultante seria /var/www/etc/hostname, que não existe. São necessários mais níveis de ../ para alcançar a raiz.
Alternativa D — ❌ Incorreta
A sequência /../../etc/hostname sobe dois níveis a partir do diretório da aplicação. Se a aplicação está em /var/www/html/, subir dois níveis leva a /var/, e o caminho resultante seria /var/etc/hostname, que não existe. Ainda são necessários mais níveis de ../ para alcançar a raiz.
Alternativa E — ✅ Correta ⟵ GABARITO
A sequência /../../../../etc/hostname sobe quatro níveis a partir do diretório da aplicação. Se a aplicação está em /var/www/html/, subir quatro níveis leva à raiz /, e o caminho resultante é /etc/hostname, que é o arquivo desejado. Esta é a única alternativa que fornece a sequência correta de ../ para explorar a vulnerabilidade de LFI e acessar o conteúdo do arquivo.
NÃO CAIA NESSA!
A banca explora a confusão entre caminho absoluto e relativo. O candidato pode ser tentado a escolher a alternativa A (/etc/hostname), mas a aplicação concatena o valor com um diretório base, tornando o caminho absoluto inútil. A chave é entender que é preciso "subir" na hierarquia de diretórios com ../ até a raiz, e a quantidade exata depende da profundidade do diretório da aplicação.