Skip to content
KitploitKITPLOIT
उपकरणएक्सप्लॉइटब्लॉग
Log in
जमा करें
उपकरणएक्सप्लॉइटब्लॉग
जमा करें

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

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

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

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

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
CVE-2019-13272 — CVE-2019-13272 के लिए गहन विश्लेषण और एक्सप्लॉइट, जो Linux कर्नेल ptrace विशेषाधिकार वृद्धि भेद्यता है। इसमें कोड वॉकथ्रू और एक्सप्लॉइटेशन परिदृश्य शामिल है। | Kitploit
उपकरण/GitHubGitHub/datntsec/cve-2019-13272
विशेषाधिकार वृद्धिभेद्यता विश्लेषणशोषणलर्निंग और शिक्षाबाइनरी शोषण
GitHubdatntsec/cve-2019-13272

CVE-2019-13272

CVE-2019-13272 के लिए गहन विश्लेषण और एक्सप्लॉइट, जो Linux कर्नेल ptrace विशेषाधिकार वृद्धि भेद्यता है। इसमें कोड वॉकथ्रू और एक्सप्लॉइटेशन परिदृश्य शामिल है।

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

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

सभी देखें →

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

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

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

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

CVE-2019-13272

PTRACE_TRACEME CVE-2019-13272 स्थानीय विशेषाधिकार वृद्धि भेद्यता विश्लेषण

PTRACE_TRACEME Linux कर्नेल में एक विशेषाधिकार वृद्धि भेद्यता है, जिसे जैन हॉर्न ने जुलाई 2019 में खोजा था।

भेद्यता विश्लेषण:

Ptrace एक सिस्टम कॉल है, यह एक ऐसी विधि प्रदान करता है जो एक प्रोसेस (tracer) को दूसरे प्रोसेस (tracee) के निष्पादन की प्रक्रिया का निरीक्षण और नियंत्रण करने, उसके core image और रजिस्टरों की जाँच और परिवर्तन करने की अनुमति देता है, मुख्य रूप से इसका उपयोग डीबगिंग में break point सेट करने और सिस्टम कॉल प्रक्रिया को ट्रैक करने के लिए किया जाता है।``` c 1 396 kernel/ptrace.c <<ptrace_attach>> ptrace_link(task, current); 2 469 kernel/ptrace.c <<ptrace_traceme>> ptrace_link(current, current->real_parent);

ट्रेस संबंध स्थापित करने के दो तरीके हैं:
  - प्रोसेस fork फ़ंक्शन को कॉल करेगा और उसकी child प्रोसेस tracee को आरंभ करने के लिए `PTRACE_TRACEME` (कर्नेल में `ptrace_traceme` फ़ंक्शन के अनुरूप) कॉल करेगी।
  - प्रोसेस किसी अन्य प्रोसेस को trace करने के लिए एक tracer आरंभ करने हेतु `PTRACE_ATTACH` या `PTRACE_SEIZE` (कर्नेल में `ptrace_attach` फ़ंक्शन के अनुरूप) कॉल करता है।
  
चाहे कोई भी तरीका उपयोग किया जाए, tracer और tracee के बीच trace संबंध स्थापित करने के लिए अंततः `ptrace_link` फ़ंक्शन ही कॉल किया जाता है
- `ptrace_attach` के लिए `ptrace_link` में पारित दो पैरामीटर हैं 'task' (tracee) और 'current' (tracer)
- `ptrace_traceme` के लिए `ptrace_link` में पारित दो पैरामीटर हैं 'current' (tracee) और 'current->real_parent' (tracer)

यहां, हमें यह ध्यान रखना होगा कि `ptrace_link` फ़ंक्शन को कॉल करते समय उपरोक्त दोनों तरीकों में tracer और tracee के रूप में पारित होने वाले दो पैरामीटर क्या हैं, क्योंकि कमजोरी `ptrace_link` फ़ंक्शन में होगी।``` c
static void ptrace_link(struct task_struct *child, struct task_struct *new_parent)
{
        rcu_read_lock();
        __ptrace_link(child, new_parent, __task_cred(new_parent));
        rcu_read_unlock();
}

void __ptrace_link(struct task_struct *child, struct task_struct *new_parent,
                   const struct cred *ptracer_cred)
{
        BUG_ON(!list_empty(&child->ptrace_entry));
        list_add(&child->ptrace_entry, &new_parent->ptraced); // 1. thêm chính nó vào hàng đợi 
                                                                 // ptraced của process cha
        child->parent = new_parent; // 2. Lưu địa chỉ của process cha trong con trỏ parent
        child->ptracer_cred = get_cred(ptracer_cred); // 3. Lưu ptracer_cred lại, ta cần tập trung 
                                                          // vào biến này vì lỗi nằm ở đây
}

ट्रेस संबंध स्थापित करने की कुंजी यह है कि tracee tracer के cred को रिकॉर्ड करता है और उसे अपने 'ptracer_cred' चर में संग्रहीत करता है।

'ptracer_cred' की अवधारणा 2016 में एक पैच द्वारा पेश की गई थी, ptrace: Capture the ptracer's creds not PT_PTRACE_CAP। 'ptracer_cred' को पेश करने का उद्देश्य सुरक्षा जांच करना है जब tracee setuid executable को लोड करने के लिए exec निष्पादित करता है।

हमें इस सुरक्षा जांच की आवश्यकता क्यों है?

exec परिवार प्रक्रिया की image को अद्यतन कर सकता है। यदि निष्पादन योग्य फ़ाइल का setuid bit सेट है, तो जब निष्पादन योग्य फ़ाइल चलाई जाती है, प्रक्रिया का euid निष्पादन योग्य फ़ाइल के स्वामी के uid में संशोधित हो जाता है। प्रक्रिया के विशेषाधिकार exec को कॉल करने वाले उपयोगकर्ता के विशेषाधिकारों से अधिक होते हैं, और इस प्रकार के setuid executable को चलाने से विशेषाधिकार वृद्धि (escalation) का प्रभाव होगा।

कल्पना करें, यदि exec निष्पादित करने वाली प्रक्रिया स्वयं एक tracee है, तो setuid executable निष्पादित करके विशेषाधिकार वृद्धि करने के बाद, इसका tracer किसी भी समय इसके (tracee के) रजिस्टरों और मेमोरी को संशोधित कर सकता है, और यदि कम विशेषाधिकार वाला tracer उच्च विशेषाधिकार वाले tracee को नियंत्रित कर सकता है, तो tracer tracee के माध्यम से अनधिकृत कार्य कर सकता है।

हालाँकि, kernel में ऐसे अधिकार से परे व्यवहार की अनुमति नहीं दी जाती है, इसलिए ट्रेस संबंध स्थापित करते समय, tracee को tracer का cred (अर्थात ptracer_cred) संग्रहीत करना आवश्यक है। यदि tracee एक exec प्रक्रिया निष्पादित करता है, तो यह जाँच करेगा कि चलाई गई निष्पादन योग्य फ़ाइल का setuid bit सेट है या नहीं। यदि सेट है, तो यह 'ptracer_cred' के विशेषाधिकारों की जाँच करेगा। यदि विशेषाधिकार संतोषजनक नहीं हैं, तो setuid bit का निष्पादन विशेषाधिकार (फ़ाइल स्वामी का विशेषाधिकार) exec निष्पादित करने के लिए उपयोग नहीं किया जाएगा, बल्कि इसे मूल उपयोगकर्ता के विशेषाधिकारों के साथ निष्पादित किया जाएगा।

इस प्रक्रिया के code का विश्लेषण इस प्रकार है (इस लेख का code विश्लेषण v4.19-rc8 पर आधारित है)।``` python do_execve -> __do_execve_file -> prepare_binprm -> bprm_fill_uid -> security_bprm_set_creds ->cap_bprm_set_creds -> ptracer_capable ->selinux_bprm_set_creds ->(apparmor_bprm_set_creds) ->(smack_bprm_set_creds) ->(tomoyo_bprm_set_creds)

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