
Plugin all-in-one para Burp Suite para a detecção e a exploração de vulnerabilidades de desserialização Java
O Java Deserialization Scanner é um plugin do Burp Suite destinado a detetar e explorar vulnerabilidades de desserialização de Java. Foi escrito por Federico Dotta, Analista Principal de Segurança na HN Security.
O plugin é composto por três componentes distintos:
Um breve artigo contendo um mini passo a passo sobre como utilizar os vários componentes do plugin pode ser encontrado no seguinte URL: https://web.archive.org/web/20201130104913/https://techblog.mediaservice.net/2017/05/reliable-discovery-and-exploitation-of-java-deserialization-vulnerabilities/
O Java Deserialization Scanner utiliza payloads personalizados gerados com uma versão modificada do "ysoserial", ferramenta criada por frohoff e gebl, para detetar vulnerabilidades de desserialização de Java. A ferramenta original (https://github.com/frohoff/ysoserial) gera payloads para a execução de comandos no sistema, usando a função Runtime.exec. Normalmente, no entanto, não é possível ver o resultado do comando e, consequentemente, não é simples escrever um scanner baseado neste tipo de função. Por esta razão, é utilizada uma versão modificada do ysoserial para gerar diferentes tipos de payloads, úteis para a deteção do problema em vez da exploração:
Atualmente, as verificações passivas do Java Deserialization Scanner reportam a presença de objetos Java serializados nos pedidos HTTP, e as verificações ativas procuram ativamente a presença de funções de desserialização frágeis em conjunto com a presença das seguintes bibliotecas vulneráveis:
Além disso, o payload URLSNDS foi introduzido para detetar ativamente a desserialização de Java sem quaisquer bibliotecas vulneráveis. Se o plugin encontrar apenas o problema URLDNS (e nenhuma biblioteca vulnerável), o atacante provavelmente poderá executar ataques de DoS, mas para alcançar a Execução Remota de Código é necessário mais esforço. Consulte este link para mais detalhes.
Todos os componentes do plugin suportam as seguintes codificações:
Na pasta de teste existem algumas aplicações de servidor Java simples que podem ser utilizadas para testar o plugin. Cada aplicação utiliza uma biblioteca Java vulnerável diferente.
O plugin oferece um separador dedicado para lançar a deteção com os payloads de suspensão e de DNS em pontos de inserção personalizados, a fim de verificar as vulnerabilidades de desserialização de Java em situações particulares em que pontos de entrada invulgares não permitem a deteção com o scanner. Os resultados do testador manual podem ser inseridos entre os resultados do scanner do Burp Suite.
O testador manual oferece um método de deteção extra: deteção por CPU. O método de deteção por CPU baseia-se no trabalho SerialDOS de Wouter Coekaerts (https://gist.github.com/coekie/a27cc406fc9f3dc7a70d) e é capaz de detetar problemas de desserialização sem a presença de qualquer biblioteca vulnerável, usando um objeto que consome muitos ciclos de CPU na tarefa de desserialização e verificando o tempo de resposta. O método de deteção por CPU não está incluído por predefinição nas verificações de análise ativa, porque deve ser utilizado com cautela: enviar um grande número de payloads SerialDOS “leves” pode ainda assim causar problemas em sistemas antigos ou muito carregados.
Depois de encontrada uma vulnerabilidade de desserialização de Java, é possível explorar ativamente o problema com o separador dedicado “Exploiting”. O separador “Exploiting” oferece uma interface conveniente para explorar vulnerabilidades de desserialização. Este separador usa a ferramenta ysoserial para gerar vetores de exploração e inclui o payload gerado num pedido HTTP. O ysoserial recebe como argumento uma biblioteca vulnerável e um comando e gera um objeto serializado em formato binário que pode ser enviado para a aplicação vulnerável, para executar o comando no sistema alvo (obviamente, se a aplicação alvo for vulnerável). O separador “Exploiting” suporta os mesmos formatos de codificação que as secções de deteção do plugin.

Para melhorar esta extensão, por favor reporte qualquer problema encontrado no plugin. Além disso, se quiser, reporte-me qualquer biblioteca Java divulgada que seja útil para a exploração desta fraqueza e, se tiver tempo, adicionarei uma verificação ativa para a mesma no meu plugin.
Este software foi criado puramente para fins de investigação académica e para o desenvolvimento de técnicas defensivas eficazes, e não se destina a ser utilizado para atacar sistemas, exceto quando explicitamente autorizado. Os mantenedores do projeto não são responsáveis pelo uso indevido do software. Utilize com responsabilidade.
Copyright (c) 2020 Java Deserialization Scanner
É concedida permissão, gratuitamente, a qualquer pessoa que obtenha uma cópia deste software e dos ficheiros de documentação associados (o "Software"), para lidar com o Software sem restrição, incluindo, sem limitação, os direitos de usar, copiar, modificar, fundir, publicar, distribuir, sublicenciar e/ou vender cópias do Software, e para permitir que as pessoas a quem o Software é fornecido o façam, sujeito às seguintes condições:
O aviso de direitos de autor acima e este aviso de permissão devem ser incluídos em todas as cópias ou partes substanciais do Software.
O SOFTWARE É FORNECIDO "COMO ESTÁ", SEM GARANTIA DE QUALQUER TIPO, EXPRESSA OU IMPLÍCITA, INCLUINDO, MAS NÃO SE LIMITANDO ÀS GARANTIAS DE COMERCIABILIDADE, ADEQUAÇÃO A UM DETERMINADO FIM E NÃO VIOLAÇÃO. EM NENHUM CASO OS AUTORES OU TITULARES DE DIREITOS DE AUTOR SERÃO RESPONSÁVEIS POR QUALQUER RECLAMAÇÃO, DANOS OU OUTRA RESPONSABILIDADE, SEJA NUMA AÇÃO DE CONTRATO, ATO ILÍCITO OU OUTRA, DECORRENTE DE, OU EM CONEXÃO COM, O SOFTWARE OU O USO OU OUTRAS NEGOCIAÇÕES NO SOFTWARE.