hacktricks/network-services-pentesting/11211-memcache
2024-02-09 11:16:10 +00:00
..
memcache-commands.md Translated ['network-services-pentesting/11211-memcache/README.md', 'net 2024-02-09 11:16:10 +00:00
README.md Translated ['network-services-pentesting/11211-memcache/README.md', 'net 2024-02-09 11:16:10 +00:00

11211 - पेंटेस्टिंग मेमकैश

जानें AWS हैकिंग को शून्य से हीरो तक htARTE (HackTricks AWS Red Team Expert) के साथ!

HackTricks का समर्थन करने के अन्य तरीके:

प्रोटोकॉल सूचना

wikipedia से:

मेमकैश (उच्चारण: मेम-कैश्ड, मेम-कैश-डी) एक सामान्य उद्दिष्ट वितरित मेमरी कैशिंग सिस्टम है। यह अक्सर डाटाबेस ड्राइवन वेबसाइटों को तेज करने के लिए उपयोग किया जाता है जिसमें डेटा और ऑब्ज

PORT      STATE SERVICE
11211/tcp open  unknown

जांच

मैन्युअल

Memcache इंस्टेंस में सहेजी गई सभी जानकारी को बाहर लेने के लिए आपको करना होगा:

  1. स्लैब्स ढूंढें जिनमें सक्रिय आइटम्स हैं
  2. पहले पहचाने गए स्लैब्स की कुंजी नामें प्राप्त करें
  3. कुंजी नामें प्राप्त करके सहेजी गई डेटा को बाहर लें

ध्यान रखें कि यह सेवा केवल एक कैश है, इसलिए डेटा दिखाई देने और गायब होने की संभावना है।

echo "version" | nc -vn -w 1 <IP> 11211      #Get version
echo "stats" | nc -vn -w 1 <IP> 11211        #Get status
echo "stats slabs" | nc -vn -w 1 <IP> 11211  #Get slabs
echo "stats items" | nc -vn -w 1 <IP> 11211  #Get items of slabs with info
echo "stats cachedump <number> 0" | nc -vn -w 1 <IP> 11211  #Get key names (the 0 is for unlimited output size)
echo "get <item_name>" | nc -vn -w 1 <IP> 11211  #Get saved info

#This php will just dump the keys, you need to use "get <item_name> later"
sudo apt-get install php-memcached
php -r '$c = new Memcached(); $c->addServer("localhost", 11211); var_dump( $c->getAllKeys() );'

मैनुअल2

sudo apt install libmemcached-tools
memcstat --servers=127.0.0.1 #Get stats
memcdump --servers=127.0.0.1 #Get all items
memccat  --servers=127.0.0.1 <item1> <item2> <item3> #Get info inside the item(s)

स्वचालित

nmap -n -sV --script memcached-info -p 11211 <IP>   #Just gather info
msf > use auxiliary/gather/memcached_extractor      #Extracts saved data
msf > use auxiliary/scanner/memcached/memcached_amp #Check is UDP DDoS amplification attack is possible

मेमकैश कुंजियों को डंप करना

मेमकैश के क्षेत्र में, डेटा को स्लैब्स द्वारा संगठित करने में सहायक प्रोटोकॉल मेमकैश के लिए विशेष कमांड होते हैं, हालांकि ध्यान देने योग्य प्रतिबंध हैं:

  1. कुंजियाँ केवल स्लैब क्लास द्वारा डंप की जा सकती हैं, जो समान सामग्री के आकार की कुंजियों को समूहित करता है।
  2. प्रति स्लैब क्लास के लिए एक पृष्ठ की सीमा होती है, जो 1MB डेटा के समान होती है।
  3. यह सुविधा अनौपचारिक है और किसी भी समय बंद की जा सकती है, जैसा कि समुदाय फोरम में चर्चा की गई है।

केवल 1MB डेटा को डंप करने की सीमा, संभावित गीगाबाइटों के डेटा से, विशेष रूप से महत्वपूर्ण है। हालांकि, यह कार्यक्षमता अभी भी विशेष आवश्यकताओं पर निर्भर करती है कि कुंजी उपयोग पैटर्न में अंतर्दृष्टि प्रदान कर सकती है। उन लोगों के लिए जो यांत्रिकियों में कम रुचि रखते हैं, उपकरण खंड में एक यात्रा उपकरण उपलब्ध है जो व्यापक डंपिंग के लिए है। वैकल्पिक रूप से, मेमकैश्ड सेटअप के साथ सीधा बातचीत के लिए टेलनेट का उपयोग करने की प्रक्रिया नीचे दी गई है।

कैसे काम करता है

मेमकैश की स्मृति संगठन महत्वपूर्ण है। "-vv" विकल्प के साथ मेमकैश को प्रारंभ करने पर, यह उत्पन्न करते हैं, जैसा नीचे दिखाया गया है:

$ memcached -vv
slab class   1: chunk size        96 perslab   10922
[...]

वर्तमान में मौजूद सभी स्लैब्स को प्रदर्शित करने के लिए निम्नलिखित कमांड का उपयोग किया जाता है:

stats slabs

एकल कुंजी को मेमकैश्ड 1.4.13 में जोड़ना दिखाता है कि स्लैब क्लासें कैसे पूरी होती हैं और प्रबंधित की जाती हैं। उदाहरण के लिए:

set mykey 0 60 1
1
STORED

की जोड़ने के बाद "stats slabs" कमांड का निष्पादन स्लैब उपयोग के विस्तृत सांख्यिकी देता है:

stats slabs
[...]

यह आउटपुट सक्रिय स्लैब प्रकार, उपयोग किए गए चंक्स, और परिचालन सांख्यिकी को दर्शाता है, जो पठन और लेखन कार्यों की कुशलता के बारे में अंदाजे प्रदान करता है।

एक और उपयोगी कमांड, "stats items", निकास, मेमोरी सीमाएं, और आइटम जीवनचक्र पर डेटा प्रदान करता है:

stats items
[...]

डंपिंग कुंजियाँ

1.4.31 से पहले संस्करणों के लिए, कुंजियाँ स्लैब क्लास का उपयोग करके डंप किए जाते हैं:

stats cachedump <slab class> <number of items to dump>

उदाहरण के लिए, क्लास #1 में एक कुंजी डंप करने के लिए:

stats cachedump 1 1000
ITEM mykey [1 b; 1350677968 s]
END

मेमकैश कुंजियों को डंप करना (संस्करण 1.4.31+)

मेमकैश संस्करण 1.4.31 और उससे ऊपर, एक नया, सुरक्षित तरीका डंप कुंजियों के लिए एक उत्पादन वातावरण में पेश किया गया है, जो रिलीज नोट्स में विस्तार से विवरणित है। इस दृष्टिकोण से व्यापक आउटपुट उत्पन्न होता है, इसलिए 'nc' कमांड का उपयोग करने की सिफारिश की जाती है। उदाहरण हैं:

echo 'lru_crawler metadump all' | nc 127.0.0.1 11211 | head -1
echo 'lru_crawler metadump all' | nc 127.0.0.1 11211 | grep ee6ba58566e234ccbbce13f9a24f9a28

डंपिंग टूल्स

Table यहाँ से.

प्रोग्रामिंग भाषाएँ टूल्स कार्यक्षमता
PHP सरल स्क्रिप्ट कुंजी नामों को प्रिंट करता है।
Perl सरल स्क्रिप्ट कुंजी और मानों को प्रिंट करता है।
Ruby सरल स्क्रिप्ट कुंजी नामों को प्रिंट करता है।
Perl memdump CPAN मॉड्यूल में उपकरण Memcached-libmemcached ached/)
PHP memcache.php Memcache मॉनिटरिंग GUI जो भी कुंजी डंप करने की अनुमति देता है
libmemcached peep आपकी memcached प्रक्रिया को ठंडा कर देता है!!! इसका उपयोग करते समय सावधान रहें। फिर भी इसका उपयोग करके आप 1MB सीमा को घेरे बिना वास्तव में सभी कुंजी डंप कर सकते हैं।

समस्या निवारण

1MB डेटा सीमा

ध्यान दें कि memcached 1.4 से पहले, डिफ़ॉल्ट अधिकतम स्लैब साइज के कारण आप 1MB से अधिक विशाल ऑब्जेक्ट स्टोर नहीं कर सकते।

कभी भी टाइमआउट > 30 दिन सेट न करें!

यदि आप किसी कुंजी को एक टाइमआउट सेट करने का प्रयास करते हैं जो अनुमत मान से अधिक हो, तो आपको उम्मीद की चीज नहीं मिल सकती क्योंकि तब memcached उस मान को एक यूनिक्स टाइमस्टैम्प के रूप में देखेगा। और यदि टाइमस्टैम्प पिछले में है तो यह कुछ भी नहीं करेगा। आपका कमांड चुपचाप विफल हो जाएगा।

तो यदि आप अधिकतम जीवनकाल का उपयोग करना चाहते हैं तो 2592000 निर्दिष्ट करें। उदाहरण:

set my_key 0 2592000 1
1

ओवरफ्लो पर गायब हो रहे कुंजी

यहां डॉक्यूमेंटेशन के बावजूद कुछ 64 बिट ओवरफ्लो करने पर "incr" का उपयोग किया जाने से मान्यता गायब हो जाती है। इसे फिर से "add"/"set" का उपयोग करके बनाया जाना चाहिए।

प्रतिलिपि

memcached स्वयं प्रतिलिपि का समर्थन नहीं करता। यदि आप वास्तव में इसे आवश्यकता है तो आपको 3 वीं पक्ष के समाधान का उपयोग करना होगा:

  • repcached: मल्टी-मास्टर असिंक्रन प्रतिलिपि (memcached 1.2 पैच सेट)
  • Couchbase memcached interface: CouchBase का मेमकैश्ड ड्रॉप-इन के रूप में उपयोग करें
  • yrmcds: memcached संगत मास्टर-स्लेव कुंजी मूल्य स्टोर
  • twemproxy (अका nutcracker): मेमकैश्ड समर्थन के साथ प्रॉक्सी

आदेश चीट-शीट

{% content-ref url="memcache-commands.md" %} memcache-commands.md {% endcontent-ref %}

शोडन

  • port:11211 "STAT pid"
  • "STAT pid"

संदर्भ

जीरो से हीरो तक AWS हैकिंग सीखें htARTE (HackTricks AWS Red Team Expert) के साथ!

HackTricks का समर्थन करने के अन्य तरीके: