Skip to content
KitploitKITPLOIT
FerramentasBlog
Log in
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
fastjson-jsontype-rce-lab — Laboratórios Docker + scanner defensivo para RCE de carregamento remoto de classe fastjson. fastjson 1.2.66-1.2.83: sonda de recurso @JSONType (CVE-2026-16723). fastjson2 2.0.57: @type do atacante alcança loadClass com autoType DESATIVADO via tipos polimórficos (@JSONType(seeAlso) / Jackson @JsonSubTypes). Payloads somente com marcador; controles safeMode + JDK17. | Kitploit
Ferramentas/GitHubGitHub/dinosn/fastjson-jsontype-rce-lab
Análise EstáticaAnálise Dinâmica (Sandboxing)Análise de VulnerabilidadesExploraçãoExploração de Aplicações WebTestes de PenetraçãoAprendizado e EducaçãoLabs e Prática
GitHub
dinosn/fastjson-jsontype-rce-lab

fastjson-jsontype-rce-lab

Ver Repositório
2039212há 2 mesesRevisado pelo Kitploit

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →

Sobre

Laboratórios Docker + scanner defensivo para RCE de carregamento remoto de classe fastjson. fastjson 1.2.66-1.2.83: sonda de recurso @JSONType (CVE-2026-16723). fastjson2 2.0.57: @type do atacante alcança loadClass com autoType DESATIVADO via tipos polimórficos (@JSONType(seeAlso) / Jackson @JsonSubTypes). Payloads somente com marcador; controles safeMode + JDK17.

Compartilhar

Laboratório de cadeia remote-JAR/FD do Fastjson @JSONType e detecção

Este repositório agora preserva duas linhas de pesquisa distintas sobre Fastjson:

  • modern-fd/ é a reconstrução somente-marcador recomendada da cadeia remote-JAR/descritor de arquivo de corpo único do Fastjson 1.2.83 em Spring Boot 3, Tomcat embarcado normal e JDK 17. Ela usa o sumidouro literal de DTO fixo JSON.parseObject(body, BoundEnvelope.class) com AutoType desabilitado.
  • O laboratório Docker Compose original de nível superior preserva a rota direta de classe remota do JDK 8. Ele é capaz de executar comandos e deve ser tratado como uma prova isolada e legada, e não como o método para JDK moderno.
  • scanner/ contém detecção passiva de requisições/logs, inventário estático de artefatos e uma sonda de alcance não executável.

O bug: ParserConfig.checkAutoType testa cada valor de @type em busca da anotação @JSONType fazendo getResourceAsStream(typeName.replace('.','/') + ".class"). Em combinações modernas de Linux/JDK, uma sonda remota jar:http pode deixar o JAR em cache atrás de um descritor aberto; sondas posteriores jar:file:/proc/self/fd/N no mesmo corpo podem reabri-lo sob nomes de classe válidos e inicializar uma classe anotada. A composição exata 1.2.83 funciona com AutoType desabilitado e por meio de um DTO fixo contendo List<Object>. A vinculação (binding) sozinha, portanto, não é uma mitigação. Passo a passo completo: docs/MECHANISM.md.

Resultados da revisão de segurança

A revisão complementar de todo o projeto abrangeu 2,041 linhas de métodos chamáveis/inicializadores estáticos em todos os 193 arquivos Java de produção do Fastjson 1.2.83. A tabela abaixo prioriza os resultados de maior impacto; não é uma afirmação de que toda implantação do Fastjson seja afetada. Este repositório reproduz diretamente F105. As demais entradas resumem revisão de código-fonte lacrada separadamente e evidência limitada de laboratório.

PrioridadeAchadoResultado comprovadoLimite importante
1F105 — execução remota de bytecode via @JSONTypeInicialização de classe fornecida pelo atacante por meio de classloaders Spring Boot compatíveis, incluindo a rota direta do JDK 8 e a continuação do JAR retido /proc/self/fd/N no Linux/JDK 17Exige um portador @type alcançável pelo parser, classloader Boot/TCCL compatível, saída de rede, SafeMode/IgnoreAutoType desativados e um JAR exato do atacante. A rota moderna de DTO fixo adicionalmente precisa de um canal de valor genérico (o laboratório usa List<Object>), procfs Linux, um descritor retido e alinhamento exato de nomes; não é universal em todos os JDKs, classloaders ou SOs
2F1/F45 — execução de comando via TemplatesImplExecução de comando marcadora através da API de DTO fixo, incluindo uma propriedade ignorada do corpo da requisiçãoExige política de servidor enfraquecida: admissão de classes, AutoType e preenchimento de campos privados ou caminhos equivalentes; as configurações padrão intactas bloqueiam
3F70/C016 — buffering sem limites e expansão GZIPCaminhos de byte/InputStream tipado e DTO anotado expandem ou fazem buffer sem limite de saída; OOME em Java com heap restrito foi reproduzidoSão necessários alcance ao endpoint/esquema e a bytes controlados pelo atacante; indisponibilidade em toda a produção não foi estabelecida
4F18/C089 — esgotamento de pilha do thread do parserValores comuns de objeto profundamente aninhados podem produzir StackOverflowError no parsing padrãoImpacto na disponibilidade do thread da requisição; não é uma quebra invariável da JVM ou do serviço inteiro
5F120/C162 — SSRF HTTP de esquema fixo/carregamento de recurso localJEditorPane/JTextPane.page controlados pelo corpo da requisição realizam requisições HTTP e podem carregar conteúdo file: limitado no estado do DocumentExige que a aplicação declare o tipo Swing; nenhum roubo automático de resposta ou RCE foi comprovado
6F118/C160 — falha de autorização/integridade de dados por colisão de hashUma colisão distinta de FNV-1a-64 em Unicode pode se ligar a uma constante de enumeração privilegiada ou direcionar mutação JSONPath para o setter errado do beanExige uma colisão utilizável e confiança a jusante ou uma operação exposta de mutação JSONPath; nenhuma admissão de classe ou RCE
7F121/C163 — alcance JNDI fixo do JdbcRowSetA ordem exata dos setters causou uma conexão JNDI/LDAP de saída selecionada pelo corpoA evidência para em uma conexão: sem resposta de naming, object factory, carregamento de bytecode ou RCE
8F2/F45 — resolução DNS padrãoA resolução de hostname controlada pelo atacante funciona na configuração padrão e por meio de uma propriedade ignorada do DTO fixoApenas interação DNS/OOB, não SSRF HTTP genérico ou RCE

Consulte findings/FINDINGS.md para rótulos de validação, pré-requisitos, achados de nível inferior, prioridades de remediação e limites negativos explícitos.

⚠️ Uso somente autorizado

Este repositório é para educação, pesquisa defensiva e testes autorizados de sistemas que você possui ou para os quais tem permissão explícita de testar. A publicação em host, quando suportada para a rede interna do laboratório moderno, deve ser feita apenas em 127.0.0.1; os scripts conduzem o teste inteiramente dentro dessa rede isolada. O laboratório moderno não possui primitiva de execução de processos e define apenas um marcador fixo dentro da JVM. O laboratório legado com JDK 8 executa id e grava sua saída em /tmp/PWNED; mantenha-o isolado. Não aponte o exploit legado ou a sonda ativa para sistemas não autorizados.

Analise seu próprio ambiente

O diretório scanner/ fornece quatro ferramentas Python 3 sem dependências (sem instalações via pip).

  • fjdetect.py — inspeciona passivamente corpos de requisição JSON decodificados ou logs JSON estruturados em busca de sementes remote-JAR e sequências /proc/self/fd ou /dev/fd.
  • fjscan_static.py — inventaria jars/wars/ears para a combinação vulnerável (1.2.83 com verificação de conteúdo e metadados × conteúdo real das classes do Spring Boot loader). Versões 1.2.48–1.2.82 com sondas e candidatos apenas por metadados/nome de arquivo são relatados separadamente para revisão. Compatível com gate de CI (código de saída 2 em EXPOSED).
  • fjscan_probe.py — verificação ativa e segura de alcance: dispara o @type contra um canário que você controla (listener embutido ou Burp Collaborator / interactsh) e correlaciona o callback de busca de recurso. Seu listener embutido retorna um 404 vazio; configure listeners externos de forma equivalente. Um callback não prova carregamento de classe ou RCE.
  • fjpayload.py — gera corpos de busca de recurso remoto para testes manuais; use apenas um listener vazio/404 quando a execução não for pretendida.
# 1) passive request/log inspection
python3 scanner/fjdetect.py --ndjson gateway.jsonl

# 2) inventory build artifacts / unpacked images (parallel)
python3 scanner/fjscan_static.py /path/to/artifacts --threads 16
Baixar ferramenta