Uma vulnerabilidade simples baseada em C nas versões 1.890 a 1.920 do Webmin.
Introdução:
O Webmin Exploit é um exploit direcionado para o serviço Webmin, que pode ser explorado em versões mais antigas do Webmin. Este exploit usa várias técnicas para executar código malicioso e obter acesso não autorizado ao sistema alvo.
Isso envolve:
Usar código C e Assembly para executar comandos no sistema alvo.
Empregando técnicas como anti-debugging, descriptografia XOR e syscalls como execve e prctl para gerar um shell reverso.
Recursos: Anti-debugging: Usa a chamada de sistema ptrace para impedir a depuração do exploit.
Descriptografia XOR: Decodifica strings criptografadas como kthreadd e /bin/sh na memória usando criptografia XOR.
Chamada de sistema prctl: Altera o nome do processo para kthreadd para ocultar o exploit da lista de processos.
Chamada de sistema execve: Executa o shell reverso /bin/sh no sistema alvo para obter acesso total ao sistema.
Combinação de C e Assembly: Este exploit combina a flexibilidade de C com o poder da linguagem assembly para chamadas de sistema personalizadas.
Requisitos: Sistema Operacional: Linux ou qualquer distribuição baseada em Unix.
Bibliotecas Necessárias:
libcurl para estabelecer conexões entre o cliente e o servidor.
GCC para compilar o exploit.
A biblioteca -lcurl para carregar a biblioteca curl em C.
Como Usar: Configurando o Ambiente: Certifique-se de ter privilégios de root, pois algumas ações, como execve, exigem permissões elevadas.
Instale as bibliotecas necessárias:
sudo apt-get install libcurl4-openssl-dev
Compilando o Exploit: Baixe o arquivo webmin_exploit.c para sua máquina.
Compile o código do exploit usando GCC com a opção -no-pie para desabilitar PIE (Executável Independente de Posição):
gcc -no-pie webmin_exploit.c -o webExploit -lcurl
Nota: Se você enfrentar problemas relacionados a PIE, certifique-se de usar -no-pie como mostrado acima.
Executando o Exploit: Configure as configurações do exploit: Modifique a URL alvo, LHOST (host local) e LPORT (porta local) no código conforme necessário.
Execute o exploit: Após compilar, execute o exploit na máquina alvo:
./webExploit Recebendo o Shell Reverso:
Quando o exploit for executado com sucesso, ele deve estabelecer uma conexão de shell reverso para seu LHOST e LPORT (por exemplo, 192.168.0.174:4444).
Certifique-se de estar escutando na porta especificada usando Netcat ou uma ferramenta similar:
nc -lvnp 4444
Análise Técnica: Instruções Chave no Código: Anti-debugging: A chamada de sistema ptrace é usada para impedir que o exploit seja depurado por ferramentas como gdb. Isso torna mais difícil para analistas fazerem engenharia reversa do exploit.
Descriptografia XOR: As strings kthreadd e /bin/sh são criptografadas com XOR no binário com a chave 0x41 (ASCII 'A'). Essas strings são descriptografadas em tempo de execução na memória.
Syscalls:
prctl(PR_SET_NAME, "kthreadd"): Altera o nome do processo para kthreadd, ajudando o exploit a evitar detecção.
execve("/bin/sh"): Executa um shell reverso para /bin/sh, dando ao atacante acesso total ao sistema.
Instruções Principais: mov: Carrega valores em registradores.
xor: Realiza uma operação XOR nos dados.
syscall: Executa chamadas de sistema como execve e prctl para criação de shell e renomeação de processos.
lea: Carrega um endereço em um registrador.
Solução de Problemas: Se você encontrar problemas durante a compilação, verifique se está usando a flag -no-pie para desabilitar Executáveis Independentes de Posição (PIE).
Se os problemas persistirem, certifique-se de que seu ambiente de desenvolvimento esteja atualizado com as bibliotecas necessárias.
Avisos: Use este exploit apenas em ambientes de teste. Nunca execute este exploit em sistemas em produção ou em sistemas nos quais você não tenha permissão explícita para testar.
Desative firewalls na máquina alvo, se necessário, para garantir que o shell reverso possa se conectar com sucesso.
Certifique-se de estar escutando na porta usando Netcat ou uma ferramenta similar para capturar a conexão do shell reverso.