Pentesting JDWP - Java Debug Wire Protocol
Configuração instantaneamente disponível para avaliação de vulnerabilidades e testes de penetração. Execute um pentest completo de qualquer lugar com mais de 20 ferramentas e recursos que vão de reconhecimento a relatórios. Não substituímos os pentesters - desenvolvemos ferramentas personalizadas, módulos de detecção e exploração para dar a eles mais tempo para investigar mais a fundo, abrir shells e se divertir.
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. Este handshake atua como um método de identificação para identificar serviços JDWP na rede.
Em termos de identificação de processos, procurar pela string "jdwk" em processos Java pode indicar uma sessão JDWP ativa.
A ferramenta principal é jdwp-shellifier. Você pode usá-la com diferentes parâmetros:
Eu descobri que o uso de --break-on 'java.lang.String.indexOf'
torna a exploração mais estável. E se você tiver a chance de fazer upload de um backdoor para o host e executá-lo em vez de executar um comando, a exploração será ainda mais estável.
Mais detalhes
Este é um resumo de https://ioactive.com/hacking-java-debug-wire-protocol-or-how/. Confira para mais detalhes.
Visão Geral do JDWP:
É um protocolo binário de rede baseado em pacotes, principalmente síncrono.
Carece de autenticação e criptografia, tornando-o vulnerável quando exposto a redes hostis.
Handshake do JDWP:
Um simples processo de handshake é usado para iniciar a comunicação. Uma string ASCII de 14 caracteres “JDWP-Handshake” é trocada entre o Depurador (cliente) e o Depurado (servidor).
Comunicação do JDWP:
As mensagens têm uma estrutura simples com campos como Comprimento, Id, Flag e CommandSet.
Os valores do CommandSet variam de 0x40 a 0x80, representando diferentes ações e eventos.
Exploração:
O JDWP permite carregar e invocar classes e bytecode arbitrários, apresentando riscos de segurança.
O artigo detalha um processo de exploração em cinco etapas, envolvendo a obtenção de referências do Java Runtime, definição de breakpoints e invocação de métodos.
Exploração na Vida Real:
Apesar das potenciais proteções de firewall, os serviços JDWP são descobertos e exploráveis em cenários do mundo real, como demonstrado por buscas em plataformas como ShodanHQ e GitHub.
O script de exploração foi testado contra 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(no longer active)
http://www.hsc-news.com/archives/2013/000109.html (no longer active)
https://github.com/search?q=-Xdebug+-Xrunjdwp&type=Code&ref=searchresults
Configuração instantaneamente disponível para avaliação de vulnerabilidades e testes de penetração. Execute um pentest completo de qualquer lugar com mais de 20 ferramentas e recursos que vão de reconhecimento a relatórios. Não substituímos os pentesters - desenvolvemos ferramentas personalizadas, módulos de detecção e exploração para dar a eles mais tempo para investigar mais a fundo, abrir shells e se divertir.
Last updated