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

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

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

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

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

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
उपकरण/GitHubGitHub/rayanziani/bootjack
एम्बेडेड सिस्टम सुरक्षापैकेट स्निफिंग और विश्लेषणभेद्यता विश्लेषणशोषणशेलकोडनेटवर्क सुरक्षाहार्डवेयर और IoT सुरक्षापेलोड डेवलपमेंटफर्मवेयर विश्लेषणबाइनरी शोषण
GitHub
15 दिन पहलेअभी तक समीक्षित नहीं

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

सभी देखें →

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

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

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

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

Bootjack

EDK II UEFI PXE ICMP त्रुटि ओवरफ़्लो (CVE-2026-97631) के लिए एक्सप्लॉइट टूलिंग: स्पूफ़्ड ICMP पैकेट तैयार करता है, एक नकली EFI_EVENT स्थापित करता है, और UART के माध्यम से DXE मेमोरी डंप करता है।

रिपॉजिटरी देखें

CVE-2026-97631: प्री-बूट DXE मेमोरी रीडर

EDK II PXE Base Code ड्राइवर ICMP त्रुटि ओवरफ़्लो के लिए टूलिंग (NetworkPkg/UefiPxeBcDxe, GHSA-99cj-7hg9-mp4m, CVSS 4.0 9.5)।

PXE बूट के दौरान ड्राइवर एक ICMP त्रुटि संदेश को एक निश्चित 504-बाइट बफ़र में कॉपी करता है। इससे लंबा संदेश उस बफ़र से आगे, DXE पूल में, एक रैखिक राइट बन जाता है। चूँकि राइट गंतव्य बफ़र का ही पता है, पेलोड स्थिति-स्वतंत्र (position independent) है: डेटाग्राम का बाइट i &Mode->IcmpError + i पर पहुँचता है। ओवरफ़्लो एक नकली EFI_EVENT स्थापित करता है; DXE कोर इसे सामान्य CoreSignalEvent पथ के माध्यम से डिस्पैच करता है; पेलोड एक स्नैपशॉट से इवेंट को पुनर्स्थापित करता है, ऑपरेटर द्वारा चुनी गई मेमोरी रेंजों को ट्रैवर्स करता है, और EFI_SUCCESS लौटाता है ताकि बूट जारी रहे।

प्रभाव-क्षेत्र (Blast radius) फ़र्मवेयर की अपनी DXE मेमोरी के भीतर ही रहता है। कोई फ़्लैश राइट नहीं, कोई स्थायित्व (persistence) तंत्र नहीं, कोई OS आर्टिफ़ैक्ट नहीं।

लेआउट

include/pxe_layout.h   EFI_PXE_BASE_CODE_ICMP_ERROR, IEVENT offsets, wire structs
include/craft.h        one packet = one primitive
include/graft.h        counterfeit event + payload parameter block
include/layout.h       the overflow region (single source of truth)
src/payload.S          ring-0 payload: restore, walk ranges, stream out
src/craft.c            packet construction, IPv4 + IPv6
src/graft.c            IEVENT overlay, parameter block
src/layout.c           overflow assembly, shared by sender and simulator
src/main.c             pxeinj: sniff xid, probe, send
src/net.c              raw L3 transport, DHCP xid sniffer
src/recv.c             pxerecv: serial collector, dump + map
sim/sim.c              host harness that proves the chain
tools/fw_offsets.py    pool offsets from a debug firmware build

बिल्ड

पेलोड:

as --64 -o build/payload.o src/payload.S
ld -Ttext=0 -e payload_start --oformat elf64-x86-64 -o build/payload.elf build/payload.o
objcopy -O binary --only-section=.text build/payload.elf build/payload.bin

परिणाम 378 बाइट्स है, स्थिति-स्वतंत्र, कोई पुनर्स्थापन नहीं।

प्रेषक और प्राप्तकर्ता POSIX (AF_PACKET, IP_HDRINCL, termios) हैं और Linux पर make के साथ बनते हैं। सिम्युलेटर Makefile.win के माध्यम से MSVC के साथ बनता है:

cl /nologo /W3 /O2 /Iinclude /Fe:build\sim.exe sim\sim.c src\craft.c src\graft.c src\layout.c

सिम्युलेटर द्वारा सिद्ध श्रृंखला

build/sim.exe एक नकली पूल पेज को मैप करता है, ओवरफ़्लो को वहाँ लिखता है जहाँ कमज़ोर memcpy लिखता, जाँचता है कि परिणामी IEVENT पेलोड को डिस्पैच करेगा, पेलोड को वास्तविक मशीन कोड के रूप में कॉल करता है, और फिर सत्यापित करता है:

  • इवेंट बाइट-दर-बाइट पुनर्स्थापित होता है
  • डंप किए गए बाइट्स स्रोत रेंज के बराबर हैं
  • ओपन/क्लोज़ फ़्रेम अक्षुण्ण हैं, इसलिए एक कटा हुआ डंप पहचाना जा सकता है
  • एक मृत UART कॉल को हैंग नहीं करता
  • ICMP डेटाग्राम चेकसम सत्यापित होते हैं और ओवरफ़्लो उसी ऑफ़सेट पर पहुँचता है जहाँ से ड्राइवर कॉपी करता है
  • एम्बेडेड BOOTP xid शब्दशः बचा रहता है

लेआउट, ABI, फ़्रेमिंग और पैकेट निर्माण पर 26 जाँचें। यह सिद्ध करता है कि भाग एक-दूसरे से सहमत हैं। यह किसी विशिष्ट फ़र्मवेयर के पूल पते को सिद्ध नहीं करता, जो एक रनटाइम आवंटन है।

संचालन

दो मोड, क्रम में उपयोग किए जाते हैं।

प्रोब: केवल वैध पथ, कोई आउट-ऑफ़-बाउंड्स राइट नहीं।

pxeinj --target 10.0.0.50 --spoof 10.0.0.1 --sniff --probe --send

एक 504-बाइट, सुगठित ICMP त्रुटि। वही spoof, वही एम्बेडेड BOOTP ट्रांज़ैक्शन, वही सब कुछ। यदि क्लाइंट बूट होता रहता है, तो त्रुटि स्वीकार कर ली गई और कमज़ोर कॉपी लूप तक पहुँच गया। गैर-विनाशकारी पुष्टि, और इसे किसी pool पते की आवश्यकता नहीं है।

Overflow: तीन चीज़ें मौजूद होने तक बनाने से इनकार करता है: pool आधार (tools/fw_offsets.py), प्राचीन इवेंट बाइट्स (--shadow), और कम से कम एक रेंज।

pxeinj --target 10.0.0.50 --spoof 10.0.0.1 --xid 0xdeadbeef \
       --pool-base 0x7f12345000 --payload build/payload.bin \
       --ranges ranges.txt --shadow shadow.bin --uart 0x3f8 --send

pxerecv -d /dev/ttyUSB0 -o dump.bin -m dump.map

ranges.txt में प्रति पंक्ति एक START-END होता है, हेक्स में बिना 0x के; आकार और समय बजट के लिए ranges.example.txt देखें। v6 ओवरफ़्लो पथ अक्षम है: प्रोब v6 पर काम करता है, लेकिन राइट नहीं करता, जब तक कि पैच किए गए स्रोत से v6 कॉपी बाउंड को फिर से प्राप्त न किया जाए।

यह शांत क्यों है

  • पेलोड के अंदर कोई Boot Services आवंटन, लॉगिंग, या लॉक नहीं
  • कोई IDT/GDT/CR/MSR संपादन नहीं, कोई इंटरप्ट हुक नहीं, कोई डिबग रजिस्टर नहीं
  • डंप शुरू होने से पहले ऑब्जेक्ट बहाल किया जाता है, बाद में नहीं
  • आउटपुट पोल्ड UART है, इसलिए फर्मवेयर-प्रबंधित बफ़र में कुछ नहीं जाता
  • सामान्य नोटिफ़ाई पथ पर EFI_SUCCESS लौटाता है, इसलिए बूट आगे बढ़ता है
  • इवेंट का SignalLink स्व-संगत है, इसलिए सूची वॉक असर्ट नहीं करता

अवशिष्ट निशान इस बग में अंतर्निहित हैं: इवेंट को उस समय सिग्नल किया गया जब सामान्य रूप से नहीं किया जाता, पूल पेज गंदा रहता है, और यदि प्लेटफ़ॉर्म TPM के साथ DXE को मापता है तो PCR मान वही रहता है जो बूट शुरू होने पर था। इससे आगे कुछ भी इस बग की विशेषता नहीं है।

कोड में सुरक्षा रेल

  • --send आवश्यक है; डिफ़ॉल्ट एक ड्राई रन है
  • ओवरफ़्लो --pool-base, --payload, --shadow और एक गैर-रिक्त रेंज सूची के बिना बिल्ड होने से इंकार करता है। इनमें से प्रत्येक के पास फर्मवेयर को भ्रष्ट करने का एक विशिष्ट तरीका है यदि अनुमान लगाया जाए, इसलिए कोई भी वैकल्पिक नहीं है
  • --shadow में अपेक्षित ऑफ़सेट पर एक EFI_EVENT सिग्नेचर होना चाहिए, जो एक ही जाँच में शून्य-भरे फ़ाइल और गलत --event-off को पकड़ लेता है, डिस्पैच समय पर नहीं
  • प्रोब एक अलग मोड है और सीमा से बाहर नहीं लिख सकता
  • UART पोल सीमित है, इसलिए अनुपस्थित 16550 बूट को हैंग नहीं कर सकता; एक बार अनुमान समाप्त होने पर UART छोड़ दिया जाता है और RAM सिंक, यदि कोई हो, जारी रहता है
  • क्लोज़ फ़्रेम ट्रंकेशन को मौन के बजाय दृश्यमान बनाता है

सीमाएँ

  • Mode->IcmpError का पूल पता एक रनटाइम आवंटन है और प्रति फर्मवेयर बिल्ड भिन्न होता है। इसे लिंक मैप से प्राप्त नहीं किया जा सकता। tools/fw_offsets.py ऑफ़सेट देता है; बेस को लक्ष्य फर्मवेयर पर मापा जाना चाहिए, उदाहरण के लिए DEBUG_POOL ट्रेस से, और फिर कैश किया जाना चाहिए।
  • sizeof(EFI_PXE_BASE_CODE_MODE) और offsetof(..., IcmpError) edk2 रिलीज़ के बीच बदलते हैं। tools/fw_offsets.py में डिफ़ॉल्ट प्रारंभिक बिंदु हैं, भरोसेमंद मान नहीं।
  • दोषपूर्ण कॉपी बाउंड की गणना किस सटीक अभिव्यक्ति से की जाती है, यह एडवाइज़री में नहीं बताया गया है, और फ़िक्स (#13302) इसे बदलता है। ओवरफ़्लो ऑफ़सेट पर भरोसा करने से पहले लक्ष्य ट्री में दो DpcHandle फ़ंक्शन पढ़ें।
  • इवेंट को बहाल करने के लिए ओवरफ़्लो से पहले लिया गया स्नैपशॉट आवश्यक है। इसके बिना रिस्टोर शून्य लिखता है और कोर की सिग्नल सूची में एक भ्रष्ट इवेंट छोड़ देता है, जिसमें अगला CoreSignalEvent चलता है। इस कारण से टूल --shadow के बिना बिल्ड होने से इंकार करता है।
टूल डाउनलोड करें