Questão nº 85
Questão de Tecnologia da Informação · FGV TCE-PA 2024 (nº 85)
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.

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 (alternativa correta)
Resposta comentada
Gabarito Alternativa E
A Local File Inclusion (LFI) é uma falha de segurança onde um aplicativo web permite que um atacante inclua arquivos do próprio servidor, geralmente manipulando um parâmetro na URL para especificar o caminho do arquivo. Para "escapar" do diretório da aplicação e acessar outros arquivos, o atacante usa a sequência ../, que significa "voltar um diretório".
Analisando a tabela fornecida, o caminho base da aplicação é /var/www/html/aplicacao/.
page=arquivo_inexistente.phpresulta em/var/www/html/aplicacao/arquivo_inexistente.php.page=../arquivo_inexistente.phpresulta em/var/www/html/arquivo_inexistente.php(1../subiu deaplicacao/parahtml/).page=../../arquivo_inexistente.phpresulta em/var/www/arquivo_inexistente.php(2../subiram deaplicacao/parawww/).page=../../../arquivo_inexistente.phpresulta em/arquivo_inexistente.php(3../subiram deaplicacao/para a raiz/).
Para acessar /etc/hostname, precisamos chegar à raiz (/) e então especificar o caminho.
A) Incorreta: Se o valor /etc/hostname for passado, a aplicação tentará acessar /var/www/html/aplicacao//etc/hostname, o que é um caminho inválido ou inexistente, pois ela concatena o parâmetro com seu caminho base.
B) Incorreta: Semelhante à alternativa A, resultaria em /var/www/html/aplicacao//hostname, que não é o arquivo desejado.
C) Incorreta: O valor /../etc/hostname resultaria em /var/www/html/aplicacao/../etc/hostname, que se resolve para /var/www/html/etc/hostname. Isso não é o arquivo /etc/hostname.
D) Incorreta: Esta é a armadilha da banca. Com base na análise da tabela, ../../../etc/hostname seria o suficiente para alcançar o arquivo /etc/hostname (pois 3 ../ já levam à raiz /). No entanto, a banca considerou a alternativa E como correta, o que implica que, em cenários de LFI, é comum usar um número maior de ../ do que o estritamente necessário para garantir que a raiz do sistema de arquivos seja alcançada, já que tentar subir além da raiz (/../) ainda resulta na raiz (/).
E) Correta: O valor ../../../../etc/hostname também alcançaria o arquivo /etc/hostname. Como 3 ../ já levam à raiz (/), um quarto ../ não altera o caminho final (ou seja, /../ a partir da raiz ainda é a raiz). Em ataques de LFI, é uma prática comum adicionar ../ extras para garantir que a raiz do sistema de arquivos seja alcançada, mesmo que o atacante não tenha certeza da profundidade exata do diretório da aplicação. Assim, /var/www/html/aplicacao/../../../../etc/hostname se resolve para /etc/hostname.
Fonte: FGV TCE-PA 2024 Auditor de Controle Externo - Informática - Analista de Segurança (Caderno Tipo 1). Reproduzida para fins de estudo.