Skip to content
KitploitKITPLOIT
उपकरणब्लॉग
जमा करें
उपकरणब्लॉग
जमा करें

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

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

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

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

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
CVE-2019-25485 — R 3.4.4 में स्टैक-आधारित बफ़र ओवरफ़्लो। x86 पर पूर्ण शोषण, लेकिन प्रोग्राम बाधाओं के कारण x64 पर केवल गैजेट विश्लेषण के साथ RIP नियंत्रण। वही कमज़ोरी दो आर्किटेक्चरों में, जो अलग-अलग शोषण पथों की ओर ले जाती है। | Kitploit
उपकरण/GitHubGitHub/themalwareguardian/cve-2019-25485
भेद्यता विश्लेषणशोषणरिवर्स इंजीनियरिंगशेलकोडडीबगर्सलर्निंग और शिक्षापेलोड डेवलपमेंटबाइनरी शोषण
GitHub
themalwareguardian/cve-2019-25485

CVE-2019-25485

R 3.4.4 में स्टैक-आधारित बफ़र ओवरफ़्लो। x86 पर पूर्ण शोषण, लेकिन प्रोग्राम बाधाओं के कारण x64 पर केवल गैजेट विश्लेषण के साथ RIP नियंत्रण। वही कमज़ोरी दो आर्किटेक्चरों में, जो अलग-अलग शोषण पथों की ओर ले जाती है।

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

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

सभी देखें →

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

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

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

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

🐞 CVE-2019-25485: R 3.4.4 - स्टैक-आधारित बफर ओवरफ़्लो (x86 और x64)

R 3.4.4 में स्टैक-आधारित बफर ओवरफ़्लो। x86 पर पूर्ण शोषण, लेकिन x64 पर केवल RIP नियंत्रण गैजेट विश्लेषण के साथ प्रोग्राम बाधाओं के कारण। दो आर्किटेक्चर पर समान कमजोरी, जो अलग-अलग शोषण पथों की ओर ले जाती है।




📑 विषयसूची

  • यह रिपॉजिटरी क्यों मौजूद है
  • यह कमजोरी दिलचस्प क्यों है
  • संदर्भ और प्रभावित सॉफ़्टवेयर
  • कमजोरी के बारे में
  • क्रैश को ट्रिगर करना
  • शोषण



🎓 यह रिपॉजिटरी क्यों मौजूद है

यह रिपॉजिटरी उस सामग्री का हिस्सा है जिसका उपयोग मैं मेमोरी करप्शन शोषण सिखाते समय करता हूँ (अपने नियमित काम के अलावा, मैं विभिन्न साइबर सुरक्षा पाठ्यक्रमों में भी पढ़ाता हूँ जहाँ मैं रिवर्स इंजीनियरों की अगली पीढ़ी को प्रशिक्षित करने में मदद करता हूँ)।

CVE-2019-25485 वह मामला है जिसका उपयोग मैं तब करता हूँ जब मैं चाहता हूँ कि छात्र दो अलग-अलग आर्किटेक्चर पर समान कमजोरी पर काम करें और प्रत्यक्ष रूप से देखें कि उनके बीच क्या बदलता है। R 3.4.4 x86 और x64 दोनों संस्करणों में आता है, और दोनों में बिल्कुल वही ओवरफ़्लो मौजूद है, वही GUI फ़ील्ड, वही इनपुट हैंडलर, वही क्रैश। दोनों को यहाँ अलग-अलग अभ्यासों के रूप में दस्तावेज़ीकृत और शोषित किया गया है:

  • x86 संस्करण क्लासिक वेनिला EIP ओवरराइट पद्धति का अनुसरण करता है। ओवरफ़्लो EIP तक पहुँचता है, एक JMP ESP गैजेट ASLR के बिना एक मॉड्यूल में पाया जाता है, EIP ओवरराइट के बाद शेलकोड रखा जाता है, और एक काम करने वाला रिवर्स शेल प्राप्त होता है। यह एक साफ और सीधा शोषण है जो स्टैक-आधारित बफर ओवरफ़्लो के मूल सिद्धांतों को प्रदर्शित करता है।
  • x64 संस्करण RIP नियंत्रण तक पहुँचता है और ऑफसेट की पुष्टि करता है, लेकिन पूर्ण RCE प्राप्त नहीं होता है। यह जानबूझकर है और अभ्यास का बिंदु है। x64 शोषण प्रयास पूरी तरह से गैजेट खोज प्रक्रिया का दस्तावेज़ीकरण करता है, विश्लेषण करता है कि इस विशिष्ट संदर्भ में प्रत्येक गैजेट श्रेणी क्यों विफल होती है, इनपुट हैंडलर द्वारा लगाए गए नल बाइट बाधा की व्याख्या करता है, और ROP श्रृंखला संरचना का वर्णन करता है जो DEP को बायपास करने के लिए आवश्यक होगी और यह क्यों नहीं बनाई जा सकती है, इस इनपुट वेक्टर की बाधाओं को देखते हुए। इस एकल कमजोरी से पूर्ण शोषण का एकमात्र शेष सैद्धांतिक पथ JOP, जंप-ओरिएंटेड प्रोग्रामिंग होगा, जो RET के बजाय JMP में समाप्त होने वाले गैजेट को श्रृंखलित करता है और नियंत्रण प्रवाह के लिए स्टैक पर निर्भर नहीं करता है। RIP ओवरराइट के बाद किसी भी राइट करने योग्य नियंत्रित क्षेत्र के बिना मैन्युअल रूप से JOP श्रृंखला का निर्माण करना एक उन्नत खुली चुनौती है जो इस अभ्यास के दायरे से परे है। विफलता पद्धति में एक अंतर नहीं है। यह सीख है।



💡 यह कमजोरी दिलचस्प क्यों है

R 3.4.4 एक सांख्यिकीय कंप्यूटिंग एप्लिकेशन है, न कि कोई नेटवर्क सेवा या ब्राउज़र। ओवरफ़्लो डेस्कटॉप GUI फ़ील्ड के माध्यम से ट्रिगर होता है, जिसका अर्थ है कि हमला सतह मेरे द्वारा पढ़ाए जाने वाले हर दूसरे मामले से पूरी तरह से अलग है। इस मामले को शिक्षण के लिए उपयोगी बनाने वाली बातें:

  • कोई नेटवर्क घटक नहीं। पेलोड को GUI फ़ील्ड में पेस्ट किया जाता है, जो एक अलग प्रकार की बाधाओं को प्रस्तुत करता है, विशेष रूप से GUI इनपुट हैंडलर कमजोर कॉपी ऑपरेशन तक पहुँचने से पहले बाइट्स को कैसे प्रोसेस करता है।
  • RIP नियंत्रण की पुष्टि की गई है। ओवरफ़्लो RIP तक पहुँचता है और ऑफसेट पाया जाता है। यह ऐसा मामला नहीं है जहाँ कमजोरी तक नहीं पहुँचा जा सकता। इंस्ट्रक्शन पॉइंटर का नियंत्रण पूरी तरह से प्रदर्शित किया गया है।
  • कैननिकल एड्रेस प्रवर्तन शास्त्रीय दृष्टिकोण को तोड़ता है। x86 पर आप EIP को ओवरराइट करते हैं और शेलकोड जोड़ते हैं। x64 पर RIP के ऊपरी बाइट्स को \x00\x00 होना चाहिए ताकि पता कैननिकल हो, और वे नल बाइट्स गैजेट पते के तुरंत बाद इनपुट को समाप्त कर देते हैं। ओवरराइट के बाद शेलकोड या ROP श्रृंखला मानों के लिए कोई स्थान नहीं है।
  • नल बाइट रूपांतरण ROP को अवरुद्ध करता है। GUI फ़ील्ड नल बाइट्स को बफर में कॉपी करने से पहले स्पेस में बदल देता है। प्रत्येक x64 पते में ऊपरी आधे में नल बाइट्स होते हैं। कोई भी गैजेट पता ROP श्रृंखला मान के रूप में स्टैक पर नहीं रखा जा सकता, वे सभी दूषित होकर आते हैं।
  • DEP प्रत्यक्ष निष्पादन को अवरुद्ध करता है। भले ही शेलकोड बफर तक पहुँचने का कोई रास्ता मिल जाए, DEP लागू है और स्टैक पर निष्पादन को अवरुद्ध करता है।
  • गैजेट खोज पूरी तरह से दस्तावेज़ीकृत है। प्रत्येक लोड किए गए मॉड्यूल से गैजेट डंप करने, प्रकार के अनुसार फ़िल्टर करने और यह तर्क करने की प्रक्रिया कि प्रत्येक गैजेट क्यों विफल होता है, चरण दर चरण दस्तावेज़ीकृत है। यह मुख्य कौशल है जो प्रत्येक शोषण डेवलपर को चाहिए।
  • VirtualProtect के लिए ROP श्रृंखला कंकाल समझाया गया है। छात्र देखते हैं कि DEP को बायपास करने के लिए वास्तव में क्या आवश्यक होगा, कॉलिंग कन्वेंशन क्यों मायने रखता है, और इस विशिष्ट श्रृंखला को इनपुट बाधाओं को देखते हुए क्यों नहीं बनाया जा सकता।



🔍 संदर्भ और प्रभावित सॉफ़्टवेयर

R एक सांख्यिकीय कंप्यूटिंग और ग्राफिक्स वातावरण है जो Windows, macOS और Linux के लिए उपलब्ध है। कमजोरी GUI प्राथमिकताएँ संवाद में है, विशेष रूप से Language for menus and messages फ़ील्ड में, जो उपयोगकर्ता इनपुट को एक निश्चित आकार के स्टैक बफर में कॉपी करता है बिना इसकी लंबाई की जाँच किए।

प्रमुख तकनीकी विवरण:

  • कमजोरी का प्रकार: स्टैक-आधारित बफर ओवरफ़्लो
  • प्रभावित संस्करण: R 3.4.4 x86_x64
  • प्रभावित समापन बिंदु: Edit -> GUI Preferences -> Language for menus and messages
  • कमजोर घटक: GUI प्राथमिकताएँ इनपुट हैंडलर
  • आवश्यक प्रमाणीकरण: नहीं (स्थानीय एप्लिकेशन)
  • प्रभाव: x86 - रिमोट कोड निष्पादन | x64 - नियंत्रण प्रवाह की पुष्टि



⚠️ कमजोरी के बारे में

R 3.4.4 Language for menus and messages फ़ील्ड को प्रोसेस करता है, आपूर्ति की गई स्ट्रिंग को एक निश्चित आकार के स्टैक बफर में कॉपी करके इसकी लंबाई की जाँच किए बिना। कमजोर लॉजिक का एक सरलीकृत संस्करण इस तरह दिखता है:

root@kitploit:~
char language_buffer[256];

strcpy(language_buffer, user_input);

पर्याप्त लंबी स्ट्रिंग भेजने से कॉपी बफर के अंत से आगे लिखती है, स्टैक को दूषित करती है जब तक कि सहेजा गया रिटर्न पता अधिलेखित न हो जाए। जब फ़ंक्शन वापस आता है, CPU स्टैक से हमलावर-नियंत्रित मान को RIP में लोड करता है और उस पर कूदने का प्रयास करता है।

x64 पर, Windows किसी भी कूद से पहले कैननिकल पता सत्यापन लागू करता है। एक गैर-कैननिकल मान जैसे 0x4141414141414141 RIP लोड होने से पहले तत्काल एक्सेस उल्लंघन को ट्रिगर करता है, जिसका अर्थ है कि क्रैश x86 से अलग दिखता है, कोई साफ RIP = 4141414141414141 नहीं। ऑफसेट को RIP से सीधे पढ़ने के बजाय क्रैश के बाद स्टैक से चक्रीय पैटर्न पढ़कर पाया जाना चाहिए।




💥 क्रैश को ट्रिगर करना

क्रैश को भाषा फ़ील्ड में एक लंबी स्ट्रिंग पेस्ट करके पुन: प्रस्तुत किया जा सकता है। किसी प्रमाणीकरण की आवश्यकता नहीं है। पेलोड उत्पन्न करने के लिए Python का उपयोग करने का उदाहरण:

root@kitploit:~
import struct

payload = b'A' * 400

with open('payload.txt', 'wb') as f:
	f.write(payload)

R 3.4.4 x64 खोलें Edit -> GUI प्राथमिकताएँ payload.txt की सामग्री को Language for menus and messages में पेस्ट करें OK पर क्लिक करें




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

💣 शोषण

इस रिपॉजिटरी का उद्देश्य केवल क्रैश प्रदर्शित करना नहीं है, बल्कि दोनों आर्किटेक्चर पर पूर्ण शोषण प्रक्रिया से गुजरना है, यह दस्तावेज़ीकृत करना कि x86 पर क्या काम करता है, x64 पर क्या टूटता है, और अधिक महत्वपूर्ण बात, क्यों।

मुख्य README को साफ रखने के लिए, विस्तृत शोषण नोट्स, स्क्रिप्ट और डीबगर चरण इस रिपॉजिटरी के Vulnerability 📂 फ़ोल्डर के अंदर रखे गए हैं, जो अलग-अलग x86 और x64 उपफ़ोल्डरों में व्यवस्थित हैं।

वहाँ आपको दोनों आर्किटेक्चर के लिए पूर्ण कार्यप्रवाह मिलेगा:

x86 - पूर्ण शोषण:

  • क्रैश की पहचान करने के लिए भाषा फ़ील्ड का फ़ज़िंग करना।
  • स्टैक पर EIP की सटीक स्थिति का पता लगाने के लिए ऑफसेट खोज।
  • पेलोड को दूषित करने वाले बाइट्स की पहचान करने के लिए खराब वर्ण विश्लेषण।
  • stats.dll में एक JMP ESP गैजेट का पता लगाना, एक मॉड्यूल जो ASLR या SafeSEH के बिना संकलित है।
  • शेलकोड प्लेसमेंट और निष्पादन, पूर्ण रिवर्स शेल प्राप्त।

x64 - RIP नियंत्रण और शोषण विश्लेषण:

  • DLL लोड घटनाओं से लगातार रुकावटों से बचने के लिए x64dbg को कॉन्फ़िगर करना।
  • सटीक क्रैश आकार खोजने के लिए तीन चरणों में भाषा फ़ील्ड का फ़ज़िंग करना।
  • RIP से सीधे पढ़ने के बजाय स्टैक से चक्रीय पैटर्न पढ़कर RIP ऑफसेट ढूँढना।
  • स्वचालित नल बाइट पैडिंग के साथ 6-बाइट ओवरराइट का उपयोग करके RIP नियंत्रण की पुष्टि करना।
  • मूल इनपुट बाधा के रूप में नल बाइट से स्पेस रूपांतरण की पहचान करना।
  • rp++ का उपयोग करके सभी लोड किए गए R मॉड्यूल से गैजेट डंप करना और PowerShell के साथ फ़िल्टर करना।
  • प्रत्येक गैजेट श्रेणी, CALL RBX, CALL RSP, POP RSP, SUB RSP, PUSH RSP का विश्लेषण करना, और यह दस्तावेज़ीकृत करना कि इस विशिष्ट संदर्भ में प्रत्येक क्यों विफल होता है।
  • VirtualProtect को कॉल करने और DEP को बायपास करने के लिए आवश्यक ROP श्रृंखला संरचना की व्याख्या करना, और यह क्यों नहीं बनाई जा सकती नल बाइट बाधा को देखते हुए।
  • एकमात्र शेष सैद्धांतिक पथ के रूप में JOP का दस्तावेज़ीकरण करना और यह एक खुली चुनौती क्यों बनी हुई है।