
Lenovo डायग्नोस्टिक्स ड्राइवर EoP - मनमाना R/W
Lenovo Diagnostics Driver के लिए गलत एक्सेस नियंत्रण एक निम्न-विशेषाधिकार प्राप्त उपयोगकर्ता को डिवाइस IOCTL जारी करके मनमानी भौतिक/वर्चुअल मेमोरी read/write करने की क्षमता प्रदान करता है।
इसके लिए ch3rn0byl का धन्यवाद (और मैंने पूरी तरह से 100% उसके दो फ़ंक्शन उधार लिए हैं)।
IOCTL 0x222000:
IOCTL 0x222008/0x22200C:
IOCTL 0x222010:
IOCTL 0x222014:
MmMapIoSpace के माध्यम से Write
यह IOCTL इनपुट बफर में दिए गए पॉइंटर से एक मान को मैप की गई भौतिक मेमोरी में कॉपी करता है
MmPteBase और अन्य पूर्वापेक्षाओं को हल करने के लिए, भौतिक मेमोरी रेंज 0x1000 - 0x10000 में 8 शून्य बाइट्स की खोज करके एक भौतिक "swap" स्थान पाया जाता है।
एक बार वह स्थान मिल जाने पर, वर्चुअल मेमोरी को IOCTL 0x222014 के माध्यम से उस swap स्थान में कॉपी किया जाता है और IOCTL 0x222010 का उपयोग करके वापस पढ़ा जाता है।
अभी के लिए, सभी वर्चुअल reads इसी "swap" स्थान का उपयोग करके किए जाते हैं।
क्या यह वर्चुअल r/w करने का सबसे अच्छा तरीका है? संभवतः नहीं।
क्या यह काम करता है? हाँ।
ओह, और अपने खुद के ऑफसेट का ध्यान रखें -- यह Windows 11 21H2 पर HVCI अक्षम के साथ परीक्षण किया गया था।