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

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

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

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

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

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
CVE-2026-23111 — लिनक्स कर्नेल nf_tables Use-After-Free (CVE-2026-23111) — LPE PoC | Kitploit
उपकरण/GitHubGitHub/baba01hacker666/cve-2026-23111
विशेषाधिकार वृद्धिमेमोरी फोरेंसिकभेद्यता विश्लेषणशोषणरिवर्स इंजीनियरिंगपेपर और शोधलर्निंग और शिक्षाबाइनरी शोषण
GitHubbaba01hacker666/cve-2026-23111

CVE-2026-23111

लिनक्स कर्नेल nf_tables Use-After-Free (CVE-2026-23111) — LPE PoC

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

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

सभी देखें →

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

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

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

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

CVE-2026-23111 PoC

Linux Kernel nf_tables Use-After-Free (Local Privilege Escalation) poc by baba01hacker

भेद्यता सारांश

  • CVE: CVE-2026-23111
  • प्रकार: Use-After-Free (CWE-416)
  • CVSS: 7.8 (HIGH)
  • घटक: net/netfilter/nf_tables_api.c — nft_map_catchall_activate()
  • मूल कारण: उल्टी genmask जाँच लेन-देन रद्द होने के दौरान श्रृंखला संदर्भ काउंटर लीक का कारण बनती है

प्रभावित कर्नेल संस्करण

संस्करण श्रेणीनिश्चित में
6.19-rc1 से 6.19-rc86.19-rc9+
6.13 से 6.18.96.18.10
6.7 से 6.12.696.12.70
6.4.1 से 6.5.xEOL (कोई स्थिर समाधान नहीं)
6.3.10 से 6.3.xEOL
6.0.x, 6.2.xEOL
6.1.36 से 6.1.1626.1.163
5.15.121 से 5.15.1995.15.200
5.10.188+, 5.4.262+, 4.19.316+विविध LTS

भेद्यता विवरण

CVE-2026-23111 एक nf_tables use-after-free है जो nft_map_catchall_activate() में उल्टी पीढ़ी-मास्क जाँच के कारण होता है। विफल लेन-देन के रोलबैक के दौरान, कैचऑल वर्डिक्ट-मैप तत्व जो NFT_MSG_DELSET द्वारा निष्क्रिय किए गए थे, उन्हें पुनः सक्रिय किया जाना चाहिए ताकि NFT_GOTO श्रृंखला संदर्भ जैसे संदर्भ बहाल हो सकें। कैचऑल सक्रियण पथ ने इसके बजाय सक्रिय तत्वों को छोड़ दिया और निष्क्रिय तत्वों को संसाधित किया, जिससे निष्क्रिय कैचऑल तत्व बहाल नहीं हुए।

सही गैर-कैचऑल सक्रियण तर्क है:

if (nft_set_elem_active(ext, iter->genmask))
    return 0; /* सक्रिय को छोड़ें, निष्क्रिय प्रक्रिया */

असुरक्षित कैचऑल पथ ने विपरीत स्थिति का उपयोग किया:

if (!nft_set_elem_active(ext, genmask))
    continue; /* निष्क्रिय को छोड़ें, सक्रिय प्रक्रिया */

जब एक हटाए गए pipapo वर्डिक्ट मैप को वापस रोल किया जाता है, तो यह nft_setelem_data_activate() को निष्क्रिय कैचऑल तत्व के लिए चलने से रोकता है। NFT_JUMP/NFT_GOTO वर्डिक्ट डेटा के लिए, nft_data_hold() द्वारा ली गई श्रृंखला संदर्भ इसलिए बहाल नहीं होती है। निरस्त/टॉगल/हटाने के अनुक्रम को दोहराने से chain->use शून्य हो सकता है जबकि किसी अन्य नियम में अभी भी श्रृंखला का एक वैध वर्डिक्ट संदर्भ मौजूद है। बाद में DELCHAIN श्रृंखला को मुक्त कर सकता है जबकि यह अभी भी पहुँच योग्य है, UAF बनाता है।

ट्रिगर प्रवाह

टेबल, बेस चेन, पीड़ित श्रृंखला, और कैचऑल NFT_GOTO के साथ pipapo वर्डिक्ट मैप बनाएं -> पीड़ित
        |
बैच 1: pipapo सेट हटाएं, फिर एक लेन-देन त्रुटि को बाध्य करें
        |
निरस्त पथ nft_map_catchall_activate() को कॉल करता है, लेकिन उल्टी जाँच निष्क्रिय कैचऑल को छोड़ देती है
        |
कैचऑल निष्क्रिय रहता है और पीड़ित श्रृंखला संदर्भ गणना बहाल नहीं होती है
        |
बैच 2: पीढ़ी कर्सर को टॉगल करने के लिए एक सौम्य लेन-देन करें
        |
बैच 3: pipapo सेट को सफलतापूर्वक हटाएं, पीड़ित श्रृंखला संदर्भ को फिर से कम करें
        |
बैच 4: पीड़ित श्रृंखला को हटाएं जबकि बेस-चेन वर्डिक्ट अभी भी इसका संदर्भ देता है
        |
Use-after-free जब पैकेट मूल्यांकन या नियम डंप लटकते वर्डिक्ट संदर्भ का अनुसरण करता है

अपस्ट्रीम फिक्स नकारात्मकता को हटाना है ताकि nft_map_catchall_activate() nft_mapelem_activate() से मेल खाए: सक्रिय तत्वों को छोड़ दिया जाता है, निष्क्रिय तत्वों को फिर से सक्रिय किया जाता है, और रद्द हैंडलिंग के दौरान वर्डिक्ट/ऑब्जेक्ट संदर्भ बहाल किए जाते हैं।

केवल परीक्षण

python3 CVE-2026-23111-checker.py --detailed
python3 CVE-2026-23111-checker.py --json

PoC एक-लाइनर चलाएँ

wget https://raw.githubusercontent.com/Baba01hacker666/CVE-2026-23111/refs/heads/master/exploit_full.c && gcc -Wall -O2 -o exploit_full exploit_full.c -lnftnl -lmnl && ./exploit_full -d

v2 फ़ॉलबैक एक-लाइनर

यदि पूर्ण/v1 PoC लक्ष्य कर्नेल पर विफल होता है तो इसका उपयोग करें।

wget https://raw.githubusercontent.com/Baba01hacker666/CVE-2026-23111/refs/heads/master/exploit_v2.c && gcc -Wall -O2 -o exploit_v2 exploit_v2.c -lnftnl -lmnl && ./exploit_v2 -d

स्थानीय निर्माण

यदि कंपाइलर libmnl/libmnl.h या libnftnl हेडर नहीं ढूँढ पाता है तो पहले निर्माण निर्भरताएँ स्थापित करें:

scripts/install-build-deps.sh
# or
make deps
make          # शोषण का निर्माण करें (केवल PoC)
make v2       # v2 शोषण का निर्माण करें (FuzzingLabs दृष्टिकोण — v1 विफल होने पर प्रयास करें)
make full     # पूर्ण LPE शोषण का निर्माण करें
make v3       # v3 कैलिब्रेटेड eval-path संस्करण का निर्माण करें
make run-d    # डीबग आउटपुट के साथ PoC चलाएँ
make run-v2-d # डीबग आउटपुट के साथ v2 चलाएँ
make run-v3   # v3 उपयोग/सहायता दिखाएँ
make run-full # पूर्ण LPE चलाएँ

शोषण चरण

चरण 1: UAF ट्रिगर ✅ कार्यशील

एक कैचऑल तत्व (गोटो पीड़ित श्रृंखला) के साथ एक pipapo मैप सेट बनाता है, फिर DELSET निरस्त के दौरान उल्टी genmask बग का उपयोग करके chain->use को दूषित करता है। पीढ़ी काउंटर को आगे बढ़ाने के बाद, DELCHAIN लटकते संदर्भों के बावजूद सफल होता है, श्रृंखला को मुक्त करता है।

चरण 2: KASLR लीक ✅ कार्यशील

UAF के बाद, chain->name मेमोरी मुक्त हो जाती है। हम /proc/self/stat खोलकर मुक्त स्लैब कैश स्लॉट को पुनः प्राप्त करने के लिए seq_operations संरचनाएँ (32 बाइट) स्प्रे करते हैं। NFT_MSG_GETRULE के माध्यम से बेस चेन के तत्काल वर्डिक्ट नियम को वापस पढ़ने से पुनः प्राप्त श्रृंखला नाम डंप होता है, जिससे कर्नेल फंक्शन पॉइंटर्स लीक हो जाते हैं। पॉइंटर सत्यापन सुनिश्चित करता है कि केवल विहित कर्नेल टेक्स्ट पते स्वीकार किए जाते हैं।

चरण 3: हीप पता लीक ✅ कार्यशील

लंबे श्रृंखला नाम (140 बाइट → kmalloc-cg-192) के साथ UAF को फिर से ट्रिगर करता है, फिर मेमोरी को पुनः प्राप्त करने के लिए nft_rule ऑब्जेक्ट स्प्रे करता है। लीक हुए list_head पॉइंटर प्रत्यक्ष मानचित्र क्षेत्र में हीप पतों को प्रकट करते हैं।

चरण 4: नियंत्रण प्रवाह अपहरण और ROP 🔧 फ्रेमवर्क पूर्ण

  • दो 192-बाइट नियम नकली nft_expr_ops और nft_rule_blob के लिए नियंत्रित डेटा के साथ स्प्रे किए गए
  • चरण 3 से हीप पते का उपयोग नकली ब्लॉब → नकली expr_ops पॉइंटर को जोड़ने के लिए किया गया
  • मुक्त श्रृंखला के blob_gen_0 को ओवरराइट करने के लिए 128-बाइट तालिका उपयोगकर्ता डेटा स्प्रे
  • ROP श्रृंखला: commit_creds(&init_cred) → switch_task_namespaces → swapgs; iretq
  • ROP गैजेट /proc/kcore से स्वचालित रूप से स्कैन किए गए
  • अपहृत expr->ops->eval को लागू करने के लिए बेस चेन के माध्यम से ट्रिगर पैकेट भेजा गया

v2 शोषण (FuzzingLabs दृष्टिकोण)

v2 शोषण (exploit_v2.c) FuzzingLabs लेख में वर्णित तकनीकों का उपयोग करता है और इसका उपयोग तब किया जा सकता है जब v1 PoC विफल हो। मुख्य अंतर:

घटकv1 (exploit.c)v2 (exploit_v2.c)
UAF ट्रिगरएकल सेट + तत्काल गोटो नियमदो सेट (FuzzingLabs शैली) + लुकअप नियम
KASLR रीडबैकNFT_MSG_GETRULE (नियम डंप)NFT_MSG_GETELEM (तत्व डंप) + GETRULE फ़ॉलबैक
हीप लीकnft_rule स्प्रे + list_head लीकinit_ipc_ns मनमाना-पढ़ने की श्रृंखला
ROP होस्टnft_rules + तालिका उपयोगकर्ता डेटाmsg_msg-2k (2048-बाइट संदेश)
अपहरण ट्रिगरतत्काल गोटो पर पैकेट evalजीवित सेट कैचऑल पर पैकेट eval
विशेषाधिकार वृद्धिcommit_creds + switch_task_namespacesmodprobe_path ओवरराइट + SELinux अक्षम
वापसी पथswapgs; iretqmsleep() (कर्नेल में रहता है)

v2 लीक श्रृंखला (init_ipc_ns मनमाना पढ़ना)

init_ipc_ns + 0x118  →  msg_ids.xa_head  →  msg_queue (टैग किया गया पॉइंटर)
msg_queue + 0xc0     →  q_messages.next  →  msg_msg हीप पता

प्रत्येक चरण मुक्त श्रृंखला संरचना का उपयोग मनमाना-पढ़ने के आदिम के रूप में करता है: तालिका उपयोगकर्ता डेटा (128 बाइट) kmalloc-cg-128 में मुक्त nft_chain को पुनः प्राप्त करता है, और ऑफसेट 0x40 (जहाँ chain->name रहता है) पर रखा गया एक कर्नेल पता SET_B तत्व डंप के दौरान कर्नेल द्वारा डीरेफरेंस किया जाता है।

v3 हीप कैलिब्रेशन और ROP श्रृंखला (modprobe_path)

v3 हीप चरण ऑफसेट-पूर्वानुमानित है न कि सच्चा बाइनरी-सुरक्षित मनमाना-पढ़ने-वाया-eval आदिम। अंतिम स्प्रे चलाने से पहले लक्ष्य को कैलिब्रेट करें:

grep msg_msg /proc/slabinfo
# kmalloc-cg-2048 ऑब्जेक्ट घनत्व के साथ क्रॉस-रेफरेंस करें, फिर इसके साथ चलाएँ:
./exploit_v3 --msg-msg-addr 0xffff...
# या, जब मान लीक कर्नेल बेस के सापेक्ष ज्ञात हो:
./exploit_v3 --msg-msg-delta 0x...

सटीक कर्नेल बिल्ड के विरुद्ध nftables संरचना ऑफसेट सत्यापित करें:

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