Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
cve-2017-12945 — Exploit pour CVE-2017-12945. | Kitploit
Outils/GitHubGitHub/aress31/cve-2017-12945
Analyse des VulnérabilitésExploitationExploitation d'Applications WebTests d'IntrusionCommandement et ContrôleOutil d'Accès à Distance
GitHubaress31/cve-2017-12945

cve-2017-12945

Exploit pour CVE-2017-12945.

Voir le dépôt
41il y a 6 ansPas encore vérifié

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

CVE-2017-12945

Exploit pour CVE-2017-12945

Une vulnérabilité d'injection de commandes OS (à distance) (authentifiée) (aveugle) existe dans les Mersive Solstice Pods - une plateforme de collaboration et de présentation sans fil conçue par Mersive Technologies Inc. - exécutant des versions du firmware antérieures à 2.8.4, comme reconnu/rapporté sur le site web du fournisseur, voir la capture d'écran ci-dessous. Par conséquent, un adversaire authentifié peut exécuter des commandes arbitraires (avec les privilèges root) sur les Mersive Solstice Pods vulnérables en leur envoyant des requêtes HTTP spécialement conçues.

changelog

Cette vulnérabilité existe en raison de l'absence de validation des entrées/paramètres côté serveur. Certaines entrées/paramètres contrôlés par l'utilisateur sont directement passés comme arguments à une méthode public static String runShellCommand(String command) conçue pour exécuter des commandes OS dans le contexte de l'utilisateur root. Cette configuration non sécurisée permettrait à un adversaire de compromettre entièrement les appareils vulnérables.

Références

Référence CVE Mitre :

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

Journal des modifications du fournisseur :

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

Versions concernées

Mersive Solstice Pods exécutant des versions du firmware antérieures à 2.8.4.

Composants concernés

  • 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 "";
   }
}

Vecteurs d'attaque

Pour exploiter cette vulnérabilité, un adversaire authentifié devrait envoyer une requête spécialement conçue aux appareils exécutant une version vulnérable du firmware (antérieure à 2.8.4). Cette requête pourrait être envoyée directement depuis l'interface web de l'appareil (à partir du formulaire set static IP address) lui-même, ou bien, elle pourrait être envoyée à l'aide d'un utilitaire en ligne de commande tel que cURL.

Dans les deux cas, la charge utile devrait être précédée d'un caractère spécial demandant à /bin/sh d'exécuter des commandes consécutives, par exemple le caractère ; ou &, afin que la charge utile soit exécutée après l'achèvement de la commande d'origine/légitime.

Le paramètre staticIP, qui est l'un des multiples paramètres vulnérables avec le paramètre gateway, n'est pas validé côté serveur et est plutôt directement passé comme argument à la méthode static void SetStaticIP(String ipAddr) qui, à son tour, le passe comme argument à la méthode public static String runShellCommand(String command).

Cette configuration permettrait à un adversaire authentifié d'exécuter des commandes arbitraires sur les appareils vulnérables dans le contexte de l'utilisateur root.

Licence

Copyright (C) 2019 Alexandre Teyar

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

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

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

Télécharger l’outil