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
CVE-2026-33439 — Primeira implementação de exploit divulgada publicamente para CVE-2026-33439 (RCE pré-autenticação no OpenAM via desserialização de jato.clientSession). | Kitploit
Ferramentas/GitHubGitHub/themalwareguardian/cve-2026-33439
Análise de VulnerabilidadesAnálise de CódigoExploraçãoEngenharia ReversaExploração de Aplicações WebAnálise de MalwareTestes de PenetraçãoAprendizado e EducaçãoDesenvolvimento de Payloads
Exploração de Binários
Labs e Prática
GitHubthemalwareguardian/cve-2026-33439

CVE-2026-33439

Primeira implementação de exploit divulgada publicamente para CVE-2026-33439 (RCE pré-autenticação no OpenAM via desserialização de jato.clientSession).

Ver Repositório
2137há 5 mesesAinda não revisado

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 →
Compartilhar

🐞 CVE-2026-33439: RCE pré-autenticação no OpenAM via desserialização de jato.clientSession

Percepção humana + análise assistida por IA + engenharia reversa + advisory → exploit

Primeira implementação de exploit compartilhada publicamente para CVE-2026-33439

Vulnerabilidade de desserialização Java não autenticada no ForgeRock OpenAM permitindo execução remota completa de código via objetos de sessão JATO manipulados. O mesmo rio flui duas vezes: corrigiram o jato.pageSession (CVE-2021-35464) e esqueceram o jato.clientSession (CVE-2026-33439). Uma cadeia de gadgets de desserialização não pede credenciais.




📑 Índice

  • Visão Geral
  • A Linhagem do CVE-2021-35464
  • Análise da Vulnerabilidade CVE-2026-33439
    📂
    • Causa Raiz
    • Versões Afetadas
    • Superfície de Ataque
  • A Cadeia de Gadgets
    📂
    • Desserialização Java 101
    • Encoder.decodeHttp64
    • Detalhes Internos da Cadeia de Gadgets
  • Ambiente de Laboratório
    📂
    • Arquitetura
    • Configuração
    • Acesso
  • Exploração
    📂
    • Pré-requisitos
    • Descoberta e Reconhecimento
    • Entendendo a Codificação
    • Construindo o Exploit
    • Entrega do Payload
    • Uso da Ferramenta PoC
  • Mitigação
  • Referências



🎯 Visão Geral

CVE-2026-33439 é uma vulnerabilidade de Execução Remota de Código pré-autenticação no OpenIdentityPlatform OpenAM (versões anteriores a 16.0.6). A vulnerabilidade decorre da desserialização Java insegura do parâmetro HTTP jato.clientSession dentro de ClientSession.deserializeAttributes(), que chama Encoder.deserialize() → ApplicationObjectInputStream.readObject() sem nenhuma whitelist de classes aplicada.

Um atacante não autenticado envia uma solicitação HTTP GET ou POST manipulada contendo um objeto Java serializado para qualquer endpoint JATO ViewBean cujo JSP renderize tags <jato:form>. Ao recebê-la, o servidor desserializa o objeto sem validação, acionando uma cadeia de gadgets construída inteiramente com classes empacotadas no WAR do OpenAM - sem necessidade de bibliotecas externas - e executando comandos arbitrários do SO como o usuário do processo da aplicação.

Vetor CVSS 4.0: AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N → 9.3 Crítico

Vetor CVSS 3.1: AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H → 9.8 Crítico




🧬 A Linhagem do CVE-2021-35464

Esta vulnerabilidade é uma regressão direta da correção incompleta aplicada após o CVE-2021-35464.

  • CVE-2021-35464 (ForgeRock AM / OpenAM): RCE pré-autenticação via desserialização insegura do parâmetro jato.pageSession. Amplamente explorado em ambientes reais; listado na CISA KEV. A correção introduziu WhitelistObjectInputStream dentro de ConsoleViewBeanBase.deserializePageAttributes() - uma subclasse personalizada de ObjectInputStream que verifica cada nome de classe contra uma allowlist fixa de ~40 classes seguras antes de instanciá-la.

  • CVE-2026-33439 (OpenAM ≤ 16.0.5): A correção foi aplicada apenas ao jato.pageSession. O parâmetro jato.clientSession - tratado por um caminho de código completamente separado em ClientSession.deserializeAttributes() - nunca foi corrigido e ainda usa Encoder.deserialize() → ApplicationObjectInputStream sem filtro, que chama ObjectInputStream.readObject() sem whitelist de classes.

A primitiva de ataque é a mesma. O sink de desserialização é diferente. Apenas o nome do parâmetro mudou.




🔬 Análise da Vulnerabilidade CVE-2026-33439

Causa Raiz

O JATO serializa o estado da visão da interface para parâmetros HTTP chamados jato.pageSession e jato.clientSession. Quando uma solicitação chega, o OpenAM desserializa esses parâmetros para restaurar o estado da interface antes de renderizar a resposta. Os dois parâmetros seguem caminhos de código completamente diferentes.

O caminho de código corrigido (pós-CVE-2021-35464) para jato.pageSession:```java // PATCHED - ConsoleViewBeanBase.deserializePageAttributes() ObjectInputStream ois = new WhitelistObjectInputStream(new ByteArrayInputStream(decoded)); // class whitelist enforced - gadget chains blocked Object obj = ois.readObject();

O caminho de código não corrigido para jato.clientSession (vulnerável):```java
// ClientSession.java
protected ClientSession(RequestContext context) {
	this.encodedSessionString =
		context.getRequest().getParameter("jato.clientSession");
}

protected void deserializeAttributes() {
	if (this.encodedSessionString != null
		&& this.encodedSessionString.trim().length() > 0) {
		this.setAttributes(
			(Map) Encoder.deserialize(
				// VULNERABLE - URL-safe base64 decode then plain ObjectInputStream
				Encoder.decodeHttp64(this.encodedSessionString), false)
		);
	}
}

Encoder.deserialize() constrói um ApplicationObjectInputStream simples - uma subclasse de ObjectInputStream sem filtragem de classes. Qualquer classe no classpath da JVM pode ser instanciada. A desserialização é acionada durante a renderização de JSP sempre que uma tag < jato:form > é renderizada:``` getClientSession() → hasAttributes() → getEncodedString() → isValid() → ensureAttributes() → deserializeAttributes()

---

<div id="vulnerability_affected"/>

### ***Versões Afetadas***

| Produto                     | Vulnerável                                      | Corrigido  |
|-----------------------------|-------------------------------------------------|--------|
| OpenIdentityPlatform OpenAM | ≤ 16.0.5                                        | 16.0.6 |
| ForgeRock AM (downstream)   | Potencialmente afetado dependendo da linhagem do patch | -      |

---

<div id="vulnerability_attacksurface"/>

### ***Superfície de Ataque***

Qualquer endpoint JATO ViewBean cujo JSP contenha uma tag *< jato:form >* é explorável antes da autenticação:

| Endpoint                  | Propósito                           |
|---------------------------|--------------------------------------|
| /ui/PWResetUserValidation | Redefinição de senha - entrada de identidade do usuário |
| /ui/PWResetQuestion       | Redefinição de senha - perguntas de segurança |

Os endpoints de redefinição de senha são o alvo principal; são publicamente acessíveis por design e têm garantia de renderizar tags *< jato:form >*.



---
---
---



<div id="gadgetchain"/>

## ***⚙️ A Cadeia de Gadgets***
Baixar ferramenta