
Exploit SSH para CVE-2024-6387 : RCE no servidor OpenSSH, em sistemas Linux baseados em glibc
CVE-2024-6387 é um exemplo hipotético, mas vamos supor que seja uma vulnerabilidade real na implementação do servidor OpenSSH. Esta vulnerabilidade poderia envolver um estouro de buffer ou corrupção de memória que permite a atacantes remotos executar código arbitrário no servidor. Aqui está uma explicação de alto nível de como tal vulnerabilidade poderia ser explorada:
O código Python fornecido é um exploit projetado para tirar proveito da CVE-2024-6387. Aqui está uma análise detalhada das etapas que ele executa: Configuração da Conexão: Estabelece uma conexão TCP com o servidor SSH alvo.
def setup_connection(ip, port):
# ...
Envio e Recebimento de Pacotes: Gerencia o envio e recebimento de pacotes para/de o servidor SSH.
def send_packet(sock, packet_type, data):
# ...
Troca de Versão SSH: Inicia o handshake SSH enviando e recebendo a string de versão SSH.
def send_ssh_version(sock):
# ...
def receive_ssh_version(sock):
# ...
Inicialização da Troca de Chaves (KEX_INIT): Envia e recebe o pacote de inicialização da troca de chaves.
def send_kex_init(sock):
# ...
def receive_kex_init(sock):
# ...
Realização do Handshake SSH: Combina as etapas acima para completar o handshake SSH.
def perform_ssh_handshake(sock):
# ...
Preparação do Heap: Envia uma série de pacotes para manipular o estado do heap no servidor.
def prepare_heap(sock):
# ...
Estrutura de Arquivo Falsa: Cria estruturas de arquivo falsas para explorar a vulnerabilidade de corrupção de memória.
def create_fake_file_structure(data, glibc_base):
# ...
Medição do Tempo de Parsing: Mede o tempo que o servidor leva para analisar certos pacotes, ajudando a cronometrar corretamente o exploit final.
def time_final_packet(sock):
# ...
Pacote de Chave Pública: Cria um pacote contendo o payload do exploit, incluindo o shellcode.
def create_public_key_packet(packet, size, glibc_base):
# ...
Exploração de Condição de Corrida: Tenta explorar a condição de corrida cronometrando corretamente o pacote final.
def attempt_race_condition(sock, parsing_time, glibc_base):
# ...
Função Principal: Coordena o processo geral do exploit, incluindo múltiplas tentativas com diferentes bases da glibc.
def main():
# ...
CVE-2024-6387 representa uma vulnerabilidade grave no OpenSSH que permite execução remota de código. O script Python fornecido explora essa vulnerabilidade manipulando o heap e cronometrando o envio de pacotes para causar corrupção de memória, executando finalmente o shellcode do atacante no servidor. O script demonstra técnicas típicas de desenvolvimento de exploits, incluindo spray de heap, corrupção de memória e temporização precisa para condições de corrida.