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-2017-12945 — Exploit para CVE-2017-12945. | Kitploit
Ferramentas/GitHubGitHub/aress31/cve-2017-12945
Análise de VulnerabilidadesExploraçãoExploração de Aplicações WebTestes de PenetraçãoComando e ControleFerramenta de Acesso Remoto
GitHubaress31/cve-2017-12945

cve-2017-12945

Exploit para CVE-2017-12945.

Ver Repositório
41há 6 anosAinda 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-2017-12945

Exploit para CVE-2017-12945

Existe uma vulnerabilidade de injeção de comandos do sistema operativo (remota) (autenticada) (cega) nos Mersive Solstice Pods - uma plataforma sem fios de colaboração e apresentação concebida pela Mersive Technologies Inc. - que executam versões do firmware anteriores a 2.8.4, conforme reconhecido/comunicado no site do fornecedor, veja a captura de ecrã abaixo. Como resultado, um adversário autenticado pode executar comandos arbitrários (com privilégios de root) em Mersive Solstice Pods vulneráveis, enviando-lhes pedidos HTTP especialmente concebidos.

changelog

Esta vulnerabilidade existe devido à falta de validação de entradas/parâmetros do lado do servidor. Algumas entradas/parâmetros controlados pelo utilizador são passados diretamente como argumentos para um método public static String runShellCommand(String command) concebido para executar comandos do sistema operativo no contexto do utilizador root. Esta configuração insegura permitiria a um adversário comprometer totalmente dispositivos vulneráveis.

Referências

Referência CVE Mitre:

  • https://cve.mitre.org/cgi-bin/cvename.cgi?name=2017-12945

Registo de alterações do fornecedor:

  • https://documentation.mersive.com/content/pages/release-notes.htm

Versões afetadas

Mersive Solstice Pods que executam versões do firmware anteriores a 2.8.4.

Componentes afetados

  • com/mersive/solstice/server/EthernetInterface.java:
root@kitploit:~
static void SetPrefixLength(int prefixLength) {
    int value = -1 << (32 - prefixLength);
    try {
        Log.d("Ethernet", "complete: " + ServerDisplay.runShellCommand("ifconfig eth0 netmask " + InetAddress.getByAddress(new byte[]{(byte) (value >>> 24), (byte) ((value >> 16) & 255), (byte) ((value >> 8) & 255), (byte) (value & 255)}).getHostAddress()));
    } catch (Exception e) {
        e.printStackTrace();
    }
}

static void SetGateway(String gateway) {
    if (!gateway.equals(GetGateway())) {
        Log.d("Ethernet", "complete: " + ServerDisplay.runShellCommand("ip route del default"));
        Log.d("Ethernet", "complete: " + ServerDisplay.runShellCommand("ip route add default via " + gateway + " dev " + ETH0));
    }
}

static void SetStaticIP(String ipAddr) {
    Log.d("Ethernet", "complete: " + ServerDisplay.runShellCommand("ifconfig eth0 " + ipAddr));
}
  • com/mersive/solstice/server/ServerDisplay.java:
root@kitploit:~
public static String runShellCommand(String command) {
   return runShellCommand(command, true);
}

public static String runShellCommand(String command, boolean wait) {
   Log.d("Shell Command", command);
   try {
       Process process = Runtime.getRuntime().exec("shell-tunnel --client");
       DataOutputStream stdin = new DataOutputStream(process.getOutputStream());
       InputStream is = process.getInputStream();
       stdin.writeBytes(command + "\n");
       stdin.flush();
       stdin.writeBytes("exit\n");
       stdin.flush();
       if (wait) {
           process.waitFor();
       }
       byte[] buffer = new byte[1024];
       Arrays.fill(buffer, 0);
       return new String(buffer, 0, is.read(buffer));
   } catch (Exception e) {
       e.printStackTrace();
       return "";
   }
}

Vetores de ataque

Para explorar esta vulnerabilidade, um adversário autenticado teria de enviar um pedido especialmente concebido para dispositivos que executem uma versão vulnerável do firmware (anterior a 2.8.4). Este pedido poderia ser enviado diretamente a partir da própria interface web do dispositivo (através do formulário set static IP address) ou, em alternativa, poderia ser enviado usando um utilitário de linha de comandos como o cURL.

Em qualquer um dos casos, o payload teria de ser precedido por um caractere especial que instrui o /bin/sh a executar comandos consecutivos, por exemplo, o caractere ; ou &, para que o payload seja executado após a conclusão do comando original/legítimo.

O parâmetro staticIP, que é um dos vários parâmetros vulneráveis juntamente com o parâmetro gateway, não é validado no servidor e é, em vez disso, passado diretamente como argumento para o método static void SetStaticIP(String ipAddr), que por sua vez o passa como argumento para o método public static String runShellCommand(String command).

Esta configuração permitiria a um adversário autenticado executar comandos arbitrários em dispositivos vulneráveis no contexto do utilizador root.

Licença

Copyright (C) 2019 Alexandre Teyar

Licenciado sob a Apache License, Versão 2.0 (a "Licença"); não pode utilizar este ficheiro exceto em conformidade com a Licença. Pode obter uma cópia da Licença em

http://www.apache.org/licenses/LICENSE-2.0

Salvo quando exigido pela lei aplicável ou acordado por escrito, o software distribuído sob a Licença é distribuído numa base "COMO ESTÁ", SEM GARANTIAS OU CONDIÇÕES DE QUALQUER TIPO, expressas ou implícitas. Consulte a Licença para conhecer as permissões específicas e as limitações da Licença.

Baixar ferramenta