Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
cve-2017-12945 — Exploit für CVE-2017-12945. | Kitploit
Tools/GitHubGitHub/aress31/cve-2017-12945
SchwachstellenanalyseExploitationWebanwendungs-ExploitationPenetrationstestsCommand and ControlRemote-Access-Tool
GitHubaress31/cve-2017-12945

cve-2017-12945

Exploit für CVE-2017-12945.

Repository anzeigen
41vor 6 JahrenNoch nicht geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

CVE-2017-12945

Exploit für CVE-2017-12945

Eine (entfernte) (authentifizierte) (blinde) OS-Command-Injection-Schwachstelle existiert in Mersive Solstice Pods - einer drahtlosen Kollaborations- und Präsentationsplattform von Mersive Technologies Inc. - die Firmware-Versionen vor 2.8.4 ausführen, wie auf der Herstellerwebsite bestätigt/gemeldet wurde, siehe Screenshot unten. Infolgedessen kann ein authentifizierter Angreifer beliebige Befehle (mit Root-Rechten) auf verwundbaren Mersive Solstice Pods ausführen, indem er ihnen manipulierte HTTP-Anfragen sendet.

changelog

Diese Schwachstelle existiert aufgrund der fehlenden serverseitigen Validierung von Eingaben/Parametern. Einige vom Benutzer kontrollierte Eingaben/Parameter werden direkt als Argumente an eine public static String runShellCommand(String command)-Methode übergeben, die dazu dient, Betriebssystembefehle im Kontext des Root-Benutzers auszuführen. Diese unsichere Konfiguration würde es einem Angreifer ermöglichen, verwundbare Geräte vollständig zu kompromittieren.

Referenzen

Mitre-CVE-Referenz:

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

Änderungsprotokoll des Herstellers:

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

Betroffene Versionen

Mersive Solstice Pods, die Firmware-Versionen vor 2.8.4 ausführen.

Betroffene Komponenten

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

Angriffsvektoren

Um diese Schwachstelle auszunutzen, müsste ein authentifizierter Angreifer eine speziell präparierte Anfrage an Geräte senden, die eine verwundbare Firmware-Version (vor 2.8.4) ausführen. Diese Anfrage könnte entweder direkt über die Weboberfläche des Geräts selbst (über das Formular set static IP address) gesendet werden oder alternativ über ein Befehlszeilentool wie cURL.

In beiden Fällen müsste dem Payload ein Sonderzeichen vorangestellt werden, das /bin/sh anweist, aufeinanderfolgende Befehle auszuführen, z. B. das Zeichen ; oder &, damit der Payload nach Abschluss des ursprünglichen/legitimen Befehls ausgeführt wird.

Der Parameter staticIP, der neben dem Parameter gateway einer der mehreren verwundbaren Parameter ist, wird serverseitig nicht validiert und stattdessen direkt als Argument an die Methode static void SetStaticIP(String ipAddr) übergeben, die ihn wiederum als Argument an die Methode public static String runShellCommand(String command) weitergibt.

Diese Konfiguration würde es einem authentifizierten Angreifer ermöglichen, beliebige Befehle auf verwundbaren Geräten im Kontext des Root-Benutzers auszuführen.

Lizenz

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.

Tool herunterladen