11211 - Pentesting Memcache
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
From wikipedia:
Memcached (उच्चारण: मेम-कैश्ड, मेम-कैश-डी) एक सामान्य-उद्देश्य वितरित मेमोरी कैशिंग प्रणाली है। इसका उपयोग अक्सर गतिशील डेटाबेस-चालित वेबसाइटों को तेज करने के लिए डेटा और वस्तुओं को RAM में कैश करके किया जाता है ताकि बाहरी डेटा स्रोत (जैसे डेटाबेस या API) को पढ़ने की संख्या को कम किया जा सके।
हालांकि Memcached SASL का समर्थन करता है, अधिकांश उदाहरण प्रमाणीकरण के बिना उजागर होते हैं।
डिफ़ॉल्ट पोर्ट: 11211
एक memcache उदाहरण के अंदर सहेजी गई सभी जानकारी को निकालने के लिए आपको:
स्लैब खोजें जिनमें सक्रिय आइटम हैं
पहले पहचाने गए स्लैब के की नाम प्राप्त करें
की नाम प्राप्त करके सहेजी गई डेटा को निकालें
याद रखें कि यह सेवा केवल एक कैश है, इसलिए डेटा प्रकट और गायब हो सकता है।
Memcache के क्षेत्र में, एक प्रोटोकॉल जो डेटा को स्लैब द्वारा व्यवस्थित करने में मदद करता है, संग्रहीत डेटा की जांच के लिए विशिष्ट कमांड मौजूद हैं, हालांकि उल्लेखनीय सीमाओं के साथ:
कुंजी केवल स्लैब वर्ग द्वारा निकाली जा सकती हैं, समान सामग्री आकार के कुंजियों को समूहित करते हुए।
प्रत्येक स्लैब वर्ग के लिए एक पृष्ठ की सीमा है, जो 1MB डेटा के बराबर है।
यह सुविधा अनौपचारिक है और इसे किसी भी समय बंद किया जा सकता है, जैसा कि समुदाय फोरम में चर्चा की गई है।
संभावित गीगाबाइट डेटा में से केवल 1MB निकालने की सीमा विशेष रूप से महत्वपूर्ण है। हालाँकि, यह कार्यक्षमता कुंजी उपयोग पैटर्न के बारे में अंतर्दृष्टि प्रदान कर सकती है, विशिष्ट आवश्यकताओं के आधार पर। जो लोग यांत्रिकी में कम रुचि रखते हैं, उनके लिए उपकरण अनुभाग पर व्यापक निकासी के लिए उपयोगिताएँ मिलती हैं। वैकल्पिक रूप से, memcached सेटअप के साथ सीधे बातचीत के लिए टेलनेट का उपयोग करने की प्रक्रिया नीचे वर्णित है।
Memcache की मेमोरी संगठन महत्वपूर्ण है। "-vv" विकल्प के साथ memcache शुरू करने से यह स्लैब वर्ग प्रकट होते हैं जो यह उत्पन्न करता है, जैसा कि नीचे दिखाया गया है:
सभी वर्तमान में मौजूद स्लैब्स को प्रदर्शित करने के लिए, निम्नलिखित कमांड का उपयोग किया जाता है:
Adding a single key to memcached 1.4.13 यह दर्शाता है कि स्लैब क्लासेस कैसे भरी और प्रबंधित की जाती हैं। उदाहरण के लिए:
"stats slabs" कमांड को कुंजी जोड़ने के बाद निष्पादित करने से स्लैब उपयोग के बारे में विस्तृत आंकड़े मिलते हैं:
यह आउटपुट सक्रिय स्लैब प्रकार, उपयोग किए गए चंक्स और संचालनात्मक सांख्यिकी को प्रकट करता है, जो पढ़ने और लिखने के संचालन की दक्षता के बारे में जानकारी प्रदान करता है।
एक और उपयोगी कमांड, "stats items", निष्कासन, मेमोरी प्रतिबंधों और आइटम जीवन चक्रों पर डेटा प्रदान करता है:
ये आँकड़े एप्लिकेशन कैशिंग व्यवहार के बारे में शिक्षित अनुमानों की अनुमति देते हैं, जिसमें विभिन्न सामग्री आकारों के लिए कैश दक्षता, मेमोरी आवंटन, और बड़े ऑब्जेक्ट्स को कैश करने की क्षमता शामिल है।
संस्करण 1.4.31 से पहले, कीज़ को स्लैब क्लास द्वारा डंप किया जाता है:
उदाहरण के लिए, क्लास #1 में एक कुंजी को डंप करने के लिए:
यह विधि स्लैब वर्गों के माध्यम से पुनरावृत्ति करती है, कुंजी मानों को निकालती है और वैकल्पिक रूप से डंप करती है।
memcache संस्करण 1.4.31 और उससे ऊपर, उत्पादन वातावरण में कुंजी डंप करने के लिए एक नया, सुरक्षित तरीका पेश किया गया है, जो रिलीज़ नोट्स में विस्तृत गैर-ब्लॉकिंग मोड का उपयोग करता है। यह दृष्टिकोण व्यापक आउटपुट उत्पन्न करता है, इसलिए दक्षता के लिए 'nc' कमांड का उपयोग करने की सिफारिश की जाती है। उदाहरणों में शामिल हैं:
Table from here.
libmemcached
आपके memcached प्रक्रिया को फ्रीज कर देता है!!! उत्पादन में इसका उपयोग करते समय सावधान रहें। फिर भी इसका उपयोग करते हुए आप 1MB सीमा को बायपास कर सकते हैं और वास्तव में सभी कुंजी को डंप कर सकते हैं।
ध्यान दें कि memcached 1.4 से पहले आप 1MB से बड़े ऑब्जेक्ट्स को स्टोर नहीं कर सकते हैं क्योंकि डिफ़ॉल्ट अधिकतम स्लैब आकार है।
यदि आप किसी कुंजी को एक टाइमआउट के साथ “सेट” या “ऐड” करने की कोशिश करते हैं जो अधिकतम अनुमत से बड़ा है, तो आपको वह नहीं मिल सकता है जिसकी आप अपेक्षा करते हैं क्योंकि memcached तब मान को एक यूनिक्स टाइमस्टैम्प के रूप में मानता है। यदि टाइमस्टैम्प अतीत में है तो यह बिल्कुल कुछ नहीं करेगा। आपका आदेश चुपचाप विफल हो जाएगा।
तो यदि आप अधिकतम जीवनकाल का उपयोग करना चाहते हैं तो 2592000 निर्दिष्ट करें। उदाहरण:
दस्तावेज़ में कहा गया है कि 64bit के ओवरफ्लो होने पर “incr” का उपयोग करने से मान गायब हो जाता है। इसे फिर से “add”/”set” का उपयोग करके बनाना आवश्यक है।
memcached स्वयं प्रतिकृति का समर्थन नहीं करता है। यदि आपको इसकी वास्तव में आवश्यकता है, तो आपको 3rd पार्टी समाधानों का उपयोग करना होगा:
repcached: मल्टी-मास्टर असिंक्रोनस प्रतिकृति (memcached 1.2 पैच सेट)
Couchbase memcached interface: CouchBase का उपयोग memcached ड्रॉप-इन के रूप में करें
yrmcds: memcached संगत मास्टर-गुलाम कुंजी मान भंडार
twemproxy (जिसे नटक्रैकर भी कहा जाता है): memcached समर्थन के साथ प्रॉक्सी
port:11211 "STAT pid"
"STAT pid"
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)