Pentesting JDWP - Java Debug Wire Protocol
Last updated
Last updated
Aprenda e pratique Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE) Aprenda e pratique Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
Obtenha a perspectiva de um hacker sobre seus aplicativos web, rede e nuvem
Encontre e relate vulnerabilidades críticas e exploráveis com impacto real nos negócios. Use nossas 20+ ferramentas personalizadas para mapear a superfície de ataque, encontrar problemas de segurança que permitem escalar privilégios e usar exploits automatizados para coletar evidências essenciais, transformando seu trabalho árduo em relatórios persuasivos.
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 fingerprinting 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.
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 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.
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
Obtenha a perspectiva de um hacker sobre seus aplicativos web, rede e nuvem
Encontre e relate vulnerabilidades críticas e exploráveis com impacto real nos negócios. Use nossas mais de 20 ferramentas personalizadas para mapear a superfície de ataque, encontrar problemas de segurança que permitem escalar privilégios e usar exploits automatizados para coletar evidências essenciais, transformando seu trabalho árduo em relatórios persuasivos.
Aprenda e pratique Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE) Aprenda e pratique Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)