Pentesting JDWP - Java Debug Wire Protocol
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:
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.
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.
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).
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.
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.
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.
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:
http://www.secdev.org/projects/scapy(não mais ativo)
http://www.hsc-news.com/archives/2013/000109.html (não mais ativo)
https://github.com/search?q=-Xdebug+-Xrunjdwp&type=Code&ref=searchresults
Last updated