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

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

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

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

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

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
CVE-2023-32233-reproduction — CVE-2023-32233 का पुनरुत्पादन और मूल कारण विश्लेषण, जो एक Linux kernel nf_tables use-after-free है जो स्थानीय विशेषाधिकार वृद्धि को सक्षम बनाता है, PoC और शोषण नोट्स के साथ। | Kitploit
उपकरण/GitHubGitHub/adeadukagi/cve-2023-32233-reproduction
रक्षात्मक उपकरणविशेषाधिकार वृद्धिमेमोरी फोरेंसिकभेद्यता विश्लेषणशोषणपेपर और शोधलर्निंग और शिक्षाबाइनरी शोषण

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

सभी देखें →

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

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

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

सभी उपकरण देखें →
GitHub
adeadukagi/cve-2023-32233-reproduction

CVE-2023-32233-reproduction

CVE-2023-32233 का पुनरुत्पादन और मूल कारण विश्लेषण, जो एक Linux kernel nf_tables use-after-free है जो स्थानीय विशेषाधिकार वृद्धि को सक्षम बनाता है, PoC और शोषण नोट्स के साथ।

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

CVE-2023-32233 — nf_tables Use-After-Free: पुनरुत्पादन और मूल-कारण विश्लेषण

यह रेपो क्या है: CVE-2023-32233 का मेरा प्रत्यक्ष पुनरुत्पादन और अध्ययन, जो Linux kernel Netfilter nf_tables सबसिस्टम में एक use-after-free है जो स्थानीय विशेषाधिकार वृद्धि (local privilege escalation) की अनुमति देता है, जिसे मई 2023 में Patryk Sondej और Piotr Krysiuk द्वारा सार्वजनिक रूप से प्रकट किया गया था।

श्रेय: PoC (exploit.c) और मूल लेख @Liuk3r द्वारा हैं। इस रेपो में मेरा कार्य अपनी प्रयोगशाला (Ubuntu 23.04, kernel 6.2.0-20) में exploit का पुनरुत्पादन करना और नीचे मूल कारण तथा exploitation श्रृंखला का दस्तावेजीकरण करना है। सभी परीक्षण समर्पित प्रयोगशाला मशीनों पर किए गए थे।


मेरे विश्लेषण नोट्स

मूल कारण

nf_tables कॉन्फ़िगरेशन अपडेट को एक परमाणु बैच (atomic batch) के रूप में संसाधित करता है। एक ही बैच में पिछले ऑपरेशनों के स्थिति परिवर्तनों के विरुद्ध प्रत्येक ऑपरेशन का सत्यापन अपर्याप्त है। विशेष रूप से:

  1. एक nft_rule से शुरू करें जिसमें कुछ तत्वों वाले एक अनाम nft_set पर एक lookup एक्सप्रेशन हो।
  2. दो ऑपरेशनों वाला एक बैच भेजें:
    • NFT_MSG_DELRULE — नियम को हटाता है, जो अंतर्निहित रूप से lookup एक्सप्रेशन और अनाम nft_set को हटा देता है;
    • NFT_MSG_DELSETELEM — पहले से हटाए गए अनाम सेट के एक तत्व को हटाता है।
  3. बैच स्वीकार कर लिया जाता है। nf_tables_commit_release() संसाधनों को nf_tables_destroy_list पर कतारबद्ध करता है, जिसे बाद में nf_tables_trans_destroy_work() द्वारा संसाधित किया जाता है:
    • पहले nft_commit_release() → nf_tables_rule_destroy() → nft_lookup_destroy() → nft_set_destroy() → kvfree() nft_set को मुक्त करता है;

    • फिर, NFT_MSG_DELSETELEM के लिए, nf_tables_set_elem_destroy() nft_set_elem_ext() को कॉल करता है जो मुक्त किए गए nft_set को डीरेफरेंस करता है:

      static inline struct nft_set_ext *nft_set_elem_ext(const struct nft_set *set,
                                                         void *elem)
      {
          return elem + set->ops->elemsize;
      }
      

यदि set->ops->elemsize भ्रष्ट (corrupted) हो जाता है, तो हमलावर द्वारा चुना गया मेमोरी स्थान nft_set_ext के रूप में व्याख्यायित किया जाता है — यही वह आदिम (primitive) है जिस पर बाकी सब कुछ आधारित है।

Exploitation श्रृंखला (जैसा पुनरुत्पादित किया गया)

  1. पृष्ठभूमि वर्कर थ्रेड पर चल रहे nf_tables_trans_destroy_work() के विरुद्ध रेस जीतें: एक नियंत्रित विलंब के रूप में एक बड़ा set-destroy ऑपरेशन डालें, अन्य CPUs को व्यस्त रखें, और उसी CPU से मुक्त किए गए nft_set चंक को भिन्न प्रकार के nft_set (भिन्न elemsize) के साथ पुनःआवंटित करें → प्रकार भ्रम (type confusion)।
  2. भ्रष्ट nft_set_ext हेडर तैयार करें जिनमें सीमा से बाहर के ऑफ़सेट हों ताकि nf_tables_set_elem_destroy() आसन्न चंक्स को नष्ट करने के लिए nft_expr की सूची के रूप में चले।
  3. नियंत्रित NFTA_LOG_PREFIX के साथ nft_log एक्सप्रेशन स्प्रे करें; nft_log_destroy() priv->prefix को मुक्त करता है, जिससे kmalloc-{8..192} में एक अतिव्यापी आवंटन आदिम (overlapping allocation primitive) मिलता है (पहले NULL-बाइट-सीमित)।
  4. nft_object->udata के साथ पुनःदावा करें ताकि डैंगलिंग रीड पर NULL-बाइट प्रतिबंध हट जाए।
  5. दो स्टेटफुल एक्सप्रेशन प्रकारों के लिए nft_dynset तत्व स्प्रे:
    • nft_counter — nft_counter_ops लीक करता है → nf_tables.ko का आधार (मॉड्यूल के लिए KASLR को विफल करता है);
    • nft_quota — consumed पॉइंटर मनमाना रीड (NFT_MSG_GETSETELEM → nft_quota_do_dump() → NFTA_QUOTA_CONSUMED) और मनमाना राइट (nft_overquota() लूपबैक ट्रैफ़िक पर *priv->consumed में skb->len जोड़ता है) देता है।
  6. modprobe_path को अधिलेखित करें ("/sbin/modprobe" → "//tmp/modprobe") → हमलावर-नियंत्रित सामग्री के साथ रूट प्रक्रिया निष्पादन।

उल्लेखनीय है कि चुने गए आदिम (primitives) किसी भी ऐसी चीज़ से बचते हैं जिसे CFI अवरुद्ध करेगा — किसी भी चरण में अप्रत्यक्ष-कॉल हाइजैकिंग की आवश्यकता नहीं है।

रक्षात्मक निष्कर्ष

  • फिक्स: अपस्ट्रीम बैच ऑपरेशनों को पूर्ण लेनदेन स्थिति के विरुद्ध सत्यापित करता है; पैच किए गए कर्नेल अनाम सेट पर DELRULE+DELSETELEM अनुक्रम को अस्वीकार करते हैं। NVD प्रविष्टि में संदर्भित फिक्सिंग कमिट देखें।
  • बाधा बढ़ाने वाले उपाय: slab freelist हार्डनिंग (SLAB_FREELIST_HARDENED), INIT_ON_FREE, और प्रति-CPU slab पुनःउपयोग प्रतिबंध सभी चरण 1 पर हमला करते हैं; CFI (जहाँ मौजूद हो) चरण 3+ को सीमित करता है।
  • पहचान के विचार: अनाम सेट पर DELRULE+DELSETELEM वाले nf_tables बैच netlink संदेशों पर ऑडिट नियम; स्टैक में nft_set_elem_ext / nf_tables_trans_destroy_work के लिए क्रैश ट्राइएज।
  • हमला सतह में कमी: nftables को CAP_NET_ADMIN की आवश्यकता होती है, लेकिन अविशेषाधिकार प्राप्त उपयोगकर्ता नेमस्पेस इसे प्रदान करते हैं — यही कारण है कि kernel.unprivileged_userns_clone=0 एक सार्थक हार्डनिंग नॉब है।

पुनरुत्पादन गाइड

Ubuntu 23.04 (Lunar Lobster), kernel 6.2.0-20-generic के अंतर्गत परीक्षण किया गया।

बिल्ड निर्भरताएँ स्थापित करना

sudo apt install gcc libmnl-dev libnftnl-dev

बाइनरी बनाना

gcc -Wall -o exploit exploit.c -lmnl -lnftnl

प्रोफ़ाइल

अंतर्निहित प्रोफ़ाइल Ubuntu 23.04 बाइनरी कर्नेल (linux-image-6.2.0-20-generic 6.2.0-20.20) को लक्षित करती है। अन्य कर्नेल का परीक्षण करने के लिए, प्रतीकों को एक profile फ़ाइल में निकालें:

modprobe nf_tables
egrep ' (nft_counter_ops|nft_counter_destroy|free_percpu|modprobe_path)(\s|$)' /proc/kallsyms > profile

nft_counter_destroy() का मशीन-कोड लेआउट कंपाइलर और विकल्पों के साथ बदलता है; पूर्ण पैरामीटर संदर्भ (nft_counter_destroy_call_offset/mask/check) और रेस-ट्यूनिंग नॉब (race_lead_sleep आदि) के लिए ORIGIN.md देखें। निष्क्रिय बेयर-मेटल Intel सिस्टम पर रिपोर्ट की गई सफलता की संभावना ≥80% है; कुछ माइक्रोआर्किटेक्चर (जैसे Alder Lake) को अतिरिक्त ट्यूनिंग की आवश्यकता होती है।

सुरक्षा चेतावनी

सफल रन के बाद PoC कर्नेल को भ्रष्ट मेमोरी के साथ अस्थिर स्थिति में छोड़ देता है। केवल एक समर्पित, डिस्पोज़ेबल सिस्टम या VM स्नैपशॉट पर परीक्षण करें — कभी भी उस चीज़ पर नहीं जिसमें आपके लिए महत्वपूर्ण डेटा हो।


फ़ाइलें

  • exploit.c — PoC स्रोत (@Liuk3r द्वारा)
  • ORIGIN.md — मूल भेद्यता और exploitation लेख (Liuk3r द्वारा)
  • README.md — यह फ़ाइल: पुनरुत्पादन + मेरे विश्लेषण नोट्स

संदर्भ

  • NVD — CVE-2023-32233
  • Liuk3r/CVE-2023-32233 — मूल PoC और लेख
  • Theori — CVE-2023-32233: Linux Kernel Privilege Escalation Analysis

अनुसंधान एक पृथक प्रयोगशाला वातावरण में रक्षात्मक/शैक्षिक उद्देश्यों के लिए किया गया।

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