Pular para o conteúdo principal

Questão de Sistemas Operacionais — Ubuntu — FGV 2024

Sistemas OperacionaisUbuntu
Código
fg165647
Banca
FGV
Órgão
TCE PA
Ano
2024
Cargo
Aud CE (TCE-PA)

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.php

 

A 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.

 

Imagem associada para resolução da questão

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.

  1. A/etc/hostname
  2. B/hostname
  3. C/../etc/hostname
  4. D/../../etc/hostname
  5. 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 absoluto

Gabarito: letra E. Para explorar a vulnerabilidade de LFI e acessar o arquivo /etc/hostname, o analista deve usar o caminho absoluto /../../../../etc/hostname. A lógica é que, ao fornecer um caminho absoluto (que começa com /), o servidor web, ao concatenar com o diretório raiz da aplicação, acaba resolvendo o caminho para a raiz do sistema de arquivos, e os ../ adicionais são usados para "subir" até a raiz real, ignorando o diretório base da aplicação.

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 na resposta da página. Isso ocorre quando a aplicação utiliza um parâmetro (como page) para incluir dinamicamente um arquivo, mas não valida ou sanitiza corretamente a entrada do usuário. O atacante pode então manipular esse parâmetro para incluir arquivos que não deveriam ser acessíveis, como arquivos de configuração, senhas ou outros dados sensíveis.

A exploração clássica de LFI envolve o uso de path traversal (também conhecido como directory traversal). O atacante insere sequências de ../ (ou ..\\ em sistemas Windows) para navegar para fora do diretório raiz da aplicação web e acessar outros diretórios do sistema. No caso de um caminho absoluto (que começa com /), o servidor pode interpretar o caminho como relativo ao diretório raiz da aplicação, e os ../ são usados para subir na hierarquia até chegar à raiz do sistema de arquivos.

No exemplo do enunciado, a URL normal é https://192.168.0.1/index.php?page=aplicacao.php. O servidor provavelmente inclui o arquivo especificado no parâmetro page a partir de um diretório base, como /var/www/html/. Para acessar /etc/hostname, o atacante precisa subir até a raiz (/) e depois descer para etc/hostname. Cada ../ sobe um nível na hierarquia. Se o diretório base for /var/www/html/, são necessários quatro níveis para chegar à raiz: htmlwwwvar/. Portanto, o payload seria /../../../../etc/hostname.

A tabela a seguir mostra a resolução do caminho para cada alternativa, considerando o diretório base /var/www/html/:

Alternativa

Payload

Caminho resolvido

Acessa /etc/hostname?

A

/etc/hostname

/var/www/html/etc/hostname

Não

B

/hostname

/var/www/html/hostname

Não

C

/../etc/hostname

/var/www/etc/hostname

Não

D

/../../etc/hostname

/var/etc/hostname

Não

E

/../../../../etc/hostname

/etc/hostname

Sim

A pegadinha desta questão está em entender que o caminho absoluto fornecido pelo atacante é interpretado pelo servidor como relativo ao diretório raiz da aplicação, e não como um caminho absoluto do sistema de arquivos. Por isso, é necessário usar ../ para subir até a raiz real. A alternativa E é a única que sobe o número suficiente de níveis para alcançar /etc/hostname.

NÃO CAIA NESSA!

A banca explora a confusão entre caminho absoluto e relativo. O candidato pode pensar que basta usar /etc/hostname (alternativa A), mas o servidor interpreta esse caminho como relativo ao diretório base da aplicação. É preciso usar ../ para subir até a raiz do sistema de arquivos. A alternativa E é a única que sobe o número correto de níveis.

  1. 1Base: /var/www/html/
  2. 21º ../ → /var/www/
  3. 32º ../ → /var/
  4. 43º ../ → /
  5. 54º ../ → /etc/hostname
LEVEL · soulevel.com.br

Alternativa A — ❌ Incorreta

O payload /etc/hostname é um caminho absoluto, mas o servidor web, ao processar o parâmetro page, o interpreta como relativo ao diretório raiz da aplicação (por exemplo, /var/www/html/). Assim, o caminho resolvido seria /var/www/html/etc/hostname, que não existe. Para acessar o arquivo na raiz do sistema, é necessário subir na hierarquia com ../.

Alternativa B — ❌ Incorreta

O payload /hostname também é interpretado como relativo ao diretório base da aplicação, resultando em /var/www/html/hostname. Além disso, o arquivo correto é /etc/hostname, não /hostname. Esta alternativa não sobe nenhum nível na hierarquia e aponta para um arquivo inexistente.

Alternativa C — ❌ Incorreta

O payload /../etc/hostname sobe um nível a partir do diretório base. Se o base for /var/www/html/, o caminho resolvido seria /var/www/etc/hostname, que ainda não é o arquivo desejado. É necessário subir mais níveis para chegar à raiz.

Alternativa D — ❌ Incorreta

O payload /../../etc/hostname sobe dois níveis a partir do diretório base. Se o base for /var/www/html/, o caminho resolvido seria /var/etc/hostname, que ainda não é o arquivo desejado. É necessário subir mais níveis para chegar à raiz.

Alternativa E — ✅ Correta ⟵ GABARITO

O payload /../../../../etc/hostname sobe quatro níveis a partir do diretório base. Se o base for /var/www/html/, o caminho resolvido seria /etc/hostname, que é exatamente o arquivo desejado. Esta é a única alternativa que sobe o número suficiente de níveis para alcançar a raiz do sistema de arquivos e acessar o arquivo /etc/hostname.

Gabarito: letra E

Link permanente: /questoes/fg165647