
CVE-2017-12945 के लिए एक्सप्लॉइट।
Mersive Solstice Pods में एक (रिमोट) (प्रमाणित) (ब्लाइंड) OS कमांड इंजेक्शन कमजोरी मौजूद है - जो Mersive Technologies Inc. द्वारा डिज़ाइन किया गया एक वायरलेस सहयोग और प्रस्तुति प्लेटफ़ॉर्म है - जो 2.8.4 से पहले के फर्मवेयर संस्करणों पर चलता है, जैसा कि विक्रेता की वेबसाइट पर स्वीकार/रिपोर्ट किया गया है, नीचे स्क्रीनशॉट देखें। परिणामस्वरूप, एक प्रमाणित हमलावर उन्हें क्राफ्टेड HTTP अनुरोध भेजकर कमजोर Mersive Solstice Pods पर मनमानी कमांड (रूट विशेषाधिकारों के साथ) चला सकता है।

यह कमजोरी सर्वर-साइड इनपुट/पैरामीटर सत्यापन की कमी के कारण मौजूद है। कुछ उपयोगकर्ता-नियंत्रित इनपुट/पैरामीटर सीधे public static String runShellCommand(String command) विधि में तर्क के रूप में पास किए जाते हैं, जिसे रूट उपयोगकर्ता के संदर्भ में OS कमांड निष्पादित करने के लिए डिज़ाइन किया गया है। यह असुरक्षित कॉन्फ़िगरेशन एक हमलावर को कमजोर उपकरणों से पूरी तरह समझौता करने की अनुमति देगा।
Mitre CVE संदर्भ:
विक्रेता परिवर्तन लॉग:
Mersive Solstice Pods 2.8.4 से पहले के फर्मवेयर संस्करणों पर चल रहे हैं।
com/mersive/solstice/server/EthernetInterface.java: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: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 "";
}
}
इस कमजोरी का फायदा उठाने के लिए, एक प्रमाणित हमलावर को कमजोर फर्मवेयर संस्करण (2.8.4 से पहले) चलाने वाले उपकरणों को एक विशेष रूप से तैयार अनुरोध भेजने की आवश्यकता होगी। यह अनुरोध या तो सीधे डिवाइस वेब इंटरफ़ेस (set static IP address फॉर्म) से भेजा जा सकता है, या वैकल्पिक रूप से, इसे cURL जैसी कमांड लाइन उपयोगिता का उपयोग करके भेजा जा सकता है।
किसी भी स्थिति में, पेलोड को एक विशेष वर्ण से पहले होना चाहिए जो /bin/sh को लगातार कमांड चलाने का निर्देश देता है, जैसे कि ; या & वर्ण, मूल/वैध कमांड के पूरा होने के बाद पेलोड को निष्पादित करने के लिए।
staticIP पैरामीटर, जो gateway पैरामीटर के साथ कई कमजोर पैरामीटरों में से एक है, सर्वर-साइड पर मान्य नहीं किया जाता है और इसके बजाय सीधे static void SetStaticIP(String ipAddr) विधि में तर्क के रूप में पास किया जाता है, जो बदले में इसे public static String runShellCommand(String command) विधि में तर्क के रूप में पास करता है।
यह कॉन्फ़िगरेशन एक प्रमाणित हमलावर को रूट उपयोगकर्ता के संदर्भ में कमजोर उपकरणों पर मनमानी कमांड चलाने की अनुमति देगा।
Copyright (C) 2019 Alexandre Teyar
Apache License, Version 2.0 ("लाइसेंस") के तहत लाइसेंस प्राप्त; आप इस फ़ाइल का उपयोग केवल लाइसेंस के अनुपालन में कर सकते हैं। आप लाइसेंस की एक प्रति प्राप्त कर सकते हैं:
http://www.apache.org/licenses/LICENSE-2.0
जब तक लागू कानून द्वारा आवश्यक न हो या लिखित रूप में सहमत न हो, लाइसेंस के तहत वितरित सॉफ़्टवेयर "जैसा है" आधार पर वितरित किया जाता है, बिना किसी प्रकार की स्पष्ट या निहित वारंटी या शर्तों के। विशिष्ट अनुमतियों और सीमाओं के लिए लाइसेंस देखें। limitations under the License.