
पूर्ण श्रृंखला Chrome 71.0.3578.98 एक्सप्लॉइट
https://googleprojectzero.blogspot.com/2019/04/virtually-unlimited-memory-escaping.html
शोषण CVE-2019-7582 और CVE-2019-13768/P0 issue 1755
लक्ष्य Chrome 71.0.3578.98
मूल PoC को Windows 10 1909+ पर काम करने के लिए अपडेट करना आवश्यक था।
एक विशेष लक्ष्य मशीन पर विश्वसनीयता बढ़ाने के लिए भी आवश्यक था जहाँ मूल PoC की ~0% विश्वसनीयता थी (लेकिन दूसरे लक्ष्य पर ~100% थी)
wget https://bootstrap.pypa.io/pip/2.7/get-pip.py -o get-pip.py
python2 get-pip.py
pip2 install cherrypy
python2 server.py
मुक्त की गई वस्तु का प्रतिस्थापन नहीं हो रहा था, इसलिए आवंटित 0x140 आकार के ब्लॉकों की संख्या 0x88 से बढ़ाकर 0x8000 कर दी गई।
0x40404040000 पर पेज का आवंटन नहीं हो रहा था, इसलिए आवंटित पेजों की संख्या 0xc88 से बढ़ाकर 2*0xc88 कर दी गई।
ROP गैजेट mov rcx, rax ; mov rax, rcx ; add rsp, 28h ; ret Windows 1909 पर ntdll.dll में अब मौजूद नहीं है। इसके बजाय shell32.dll में ROP गैजेट mov rcx, rax ; test rcx, rcx ; setne al ; ret और mov rax, rcx ; add rsp, 0x28 ; ret का उपयोग किया जाता है।
pipe.producer.close() स्प्रे किए गए 0x140 आकार के ब्लॉकों को मुक्त करवा रहा था। मेमोरी बहुत जल्दी साफ हो रही थी। इसलिए फंक्शन कॉल को एक्सप्लॉइट पूरा होने तक विलंबित कर दिया गया।
शेलकोड को बदल दिया गया ताकि एक मनमाना कमांड (शेलकोड लंबाई 0x200 तक) का उपयोग किया जा सके। शेलकोड को संपादित करने के लिए या तो shellcode.asm को संशोधित करें और yasm -f bin -o shellcode.bin shellcode.asm चलाएँ या commandline स्ट्रिंग को shellcode.bin में hexedit करें। वर्तमान पेलोड कमांड calc है।