
Identifique automaticamente problemas de desserialização em aplicações Java e .NET usando varreduras ativas e passivas.
Uma extensão do Burp Suite para auxiliar na detecção e exploração de bibliotecas/APIs de serialização.
Esta útil extensão foi originalmente desenvolvida por Nick Bloor (@nickstadb) para a NCC Group e é baseada principalmente no trabalho de Alvaro Muñoz e Oleksandr Mirosh, Friday the 13th: JSON Attacks, que apresentaram na Black Hat USA 2017 e na DEF CON 25. Em seu trabalho, eles revisaram uma série de bibliotecas de serialização JSON e XML para Java e .NET e descobriram que muitas delas suportam a serialização de objetos arbitrários em tempo de execução e, como resultado, são vulneráveis da mesma forma que muitas tecnologias de serialização são - trechos de código (gadgets POP) que executam durante ou logo após a desserialização podem ser controlados usando as propriedades dos objetos serializados, muitas vezes abrindo potencial para execução arbitrária de código ou comandos.
Módulos adicionais suportando mais formatos, incluindo YAML e AMF, também estão incluídos, baseados no artigo Java Unmarshaller Security - Turning your data into code execution e na ferramenta marshalsec de Moritz Bechler.
Esta extensão do Burp Suite implementa varredura passiva e ativa para identificar e explorar bibliotecas vulneráveis.
Freddy pode detectar passivamente o uso de bibliotecas e APIs de serialização potencialmente perigosas, observando especificadores de tipo ou outras assinaturas em requisições HTTP e monitorando respostas HTTP para exceções emitidas pelas bibliotecas alvo. Por exemplo, a biblioteca FastJson usa um campo JSON $types para especificar o tipo do objeto serializado.
Freddy inclui funcionalidade de varredura ativa que tenta tanto detectar quanto, quando possível, explorar bibliotecas afetadas.
A varredura ativa tenta detectar o uso de bibliotecas vulneráveis usando três métodos: baseado em exceção, baseado em tempo e baseado em Collaborator.
Na varredura ativa baseada em exceção, Freddy insere dados na requisição HTTP que devem acionar uma exceção ou mensagem de erro conhecida específica do alvo. Se essa mensagem de erro for observada na resposta da aplicação, um problema é levantado.
Em alguns casos, cargas úteis baseadas em tempo podem ser usadas para detecção porque a execução de comandos do sistema operacional é acionada durante a desserialização e essa ação bloqueia a execução até que o comando do SO termine. Freddy usa cargas úteis contendo ping [-n|-c] 21 127.0.0.1 para induzir um atraso de tempo nesses casos.
Cargas úteis baseadas em Collaborator funcionam emitindo um comando nslookup para resolver o nome de domínio gerado pelo Collaborator do Burp Suite, ou tentando carregar classes remotas do nome de domínio em uma aplicação Java. Freddy verifica novos problemas do Collaborator a cada 60 segundos e os marca na lista de problemas com RCE (Collaborator).
Os seguintes alvos são atualmente suportados (itálico são novos na v2.0):
Java
.NET
Lançado sob agpl-3.0, veja LICENSE para mais informações
Freddy usa o sistema de compilação gradle. Para compilar o jar, você só precisa executar gradle jar na raiz. Isso executará os testes e, se tudo estiver correto, criará o arquivo jar no diretório build/libs.