hacktricks/network-services-pentesting/11211-memcache
Translator workflow 75e8745ba3 Translated to Hindi
2023-11-06 08:38:02 +00:00
..
memcache-commands.md Translated to Hindi 2023-11-06 08:38:02 +00:00
README.md Translated to Hindi 2023-11-06 08:38:02 +00:00

11211 - Memcache पेंटेस्टिंग

☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥

प्रोटोकॉल जानकारी

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

डिफ़ॉल्ट पोर्ट: 11211

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

इस मैनुअल में, हम मेमकैश (Memcache) सर्विस के बारे में और इसके पेंटेस्टिंग के लिए उपयोगी तकनीकों के बारे में चर्चा करेंगे।

मेमकैश क्या है?

मेमकैश एक खुदरा कुंजी-मान डेटाबेस है जो डेटा को कैश करने के लिए उपयोग किया जाता है। यह डेटाबेस डेटा को इन-मेमोरी में संग्रहीत करता है, जिससे डेटा को तेजी से एक्सेस किया जा सकता है। मेमकैश का उपयोग वेब एप्लिकेशन्स में डेटा के लिए क्वेरी करने के लिए किया जाता है, जिससे डेटा के लिए डेटाबेस क्वेरी करने की आवश्यकता नहीं होती है।

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

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

मेमकैश पेंटेस्टिंग के दौरान, हम निम्नलिखित तकनीकों का उपयोग कर सकते हैं:

  • मेमकैश सर्वर के संस्करण की पहचान करना
  • मेमकैश सर्वर के लिए डेटा की प्राप्ति करना
  • मेमकैश सर्वर के लिए डेटा को सेट करना
  • मेमकैश सर्वर के लिए डेटा को हटाना
  • मेमकैश सर्वर के लिए कीवर्ड के साथ डेटा की प्राप्ति करना
  • मेमकैश सर्वर के लिए स्टैटिस्टिक्स की प्राप्ति करना

इन तकनीकों का उपयोग करके, हम मेमकैश सर्वर की सुरक्षा की जांच कर सकते हैं और किसी भी संभावित अनुचित उपयोग को रोक सकते हैं।

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)

स्वचालित

Memcached सेवा को हैक करने के लिए, आपको स्वचालित तरीके का उपयोग करना चाहिए। यह आपको बहुत समय और मेहनत बचा सकता है। निम्नलिखित चरणों का पालन करें:

  1. आपको एक विशेष टूल की आवश्यकता होगी जो Memcached सेवा को हैक करने के लिए बनाया गया है। आपके डिस्ट्रीब्यूशन के अनुसार, आपको इस टूल को इंस्टॉल करना होगा।

  2. एक बार टूल स्थापित होने के बाद, आपको टर्मिनल में निम्नलिखित कमांड का उपयोग करना होगा:

memcrashed.py <target-ip> <target-port>

यह कमांड टारगेट IP और पोर्ट को लक्षित करता है और Memcached सेवा को हैक करने के लिए आवश्यक कार्रवाई करता है।

  1. इसके बाद, आपको इंतजार करना होगा जब तक कि टूल Memcached सेवा को हैक न कर दे या त्रुटि न दे। जब टूल सफलतापूर्वक समाप्त हो जाएगा, तो आपको उपयोगकर्ता नाम और पासवर्ड की जानकारी प्राप्त हो जाएगी।

इस तरीके का उपयोग करके, आप स्वचालित रूप से Memcached सेवा को हैक कर सकते हैं और उपयोगकर्ता नाम और पासवर्ड की जानकारी प्राप्त कर सकते हैं। यह आपको बहुत समय और मेहनत बचा सकता है।

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

Memcache की कुंजीयों को डंप करना

यदि आपका memcached संस्करण 1.4.31 से ऊपर है, तो अगले खंड को डंप करने के लिए उन्नत विधि के लिए पढ़ें।

मेमकैश प्रोटोकॉल कमांड प्रदान करता है जिसके द्वारा स्लैब्स (दिए गए आकार रेंज के डेटा के श्रेणियाँ) द्वारा संगठित डेटा में झांकने की सुविधा होती है। हालांकि, कुछ महत्वपूर्ण सीमाएं हैं:

  1. आप केवल स्लैब कक्षा प्रति कुंजी डंप कर सकते हैं (लगभग एक ही सामग्री के आकार वाली कुंजी)
  2. आप केवल स्लैब कक्षा प्रति एक पेज डंप कर सकते हैं (1MB का डेटा)
  3. यह एक अनौपचारिक सुविधा है जिसे कभी भी हटा दिया जा सकता है।

दूसरी सीमा संभवतः सबसे कठिन है क्योंकि कई गीगाबाइट के 1MB का कुछ नहीं होता है। फिर भी, यह उपयोगी हो सकता है कि आप अपनी कुंजीयों के एक सबसेट का उपयोग कैसे करते हैं देखें। लेकिन यह आपके उपयोग मामले पर निर्भर कर सकता है। यदि आपको तकनीकी विवरणों की परवाह नहीं है, तो आसानी से सब कुछ डंप करने की अनुमति देने वाले उपकरण खंड पर जानने के लिए छोड़ दें। वैकल्पिक रूप से निम्नलिखित मार्गदर्शिका का पालन करें और अपने memcached सेटअप के खिलाफ telnet का उपयोग करके कमांड का प्रयास करें। यह कैसे काम करता है पहले आपको यह जानना होगा कि मेमकैश अपनी मेमोरी को कैसे संगठित करता है। यदि आप मेमकैश को विकल्प " -vv " के साथ शुरू करते हैं, तो आप उसे बनाने वाली स्लैब कक्षाएं देखेंगे। उदाहरण के लिए

$ memcached -vv
slab class   1: chunk size        96 perslab   10922
slab class   2: chunk size       120 perslab    8738
slab class   3: chunk size       152 perslab    6898
slab class   4: chunk size       192 perslab    5461
[...]

उपरोक्त कॉन्फ़िगरेशन में मेमकैश 1MB के एकल स्लैब में 121 और 152 बाइट के बीच 6898 डेटा पीस रखेगा (6898*152). सभी स्लैब्स 1MB के आकार में होते हैं। वर्तमान में मौजूद सभी स्लैब्स को प्रिंट करने के लिए निम्नलिखित कमांड का उपयोग करें:

stats slabs

यदि आपने खाली मेमकैश 1.4.13 में एक एकल कुंजी जोड़ी है, तो

set mykey 0 60 1
1
STORED

अब आप "stats slabs" कमांड के लिए निम्नलिखित परिणाम देखेंगे:

stats slabs
STAT 1:chunk_size 96
STAT 1:chunks_per_page 10922
STAT 1:total_pages 1
STAT 1:total_chunks 10922
STAT 1:used_chunks 1
STAT 1:free_chunks 0
STAT 1:free_chunks_end 10921
STAT 1:mem_requested 71
STAT 1:get_hits 0
STAT 1:cmd_set 2
STAT 1:delete_hits 0
STAT 1:incr_hits 0
STAT 1:decr_hits 0
STAT 1:cas_hits 0
STAT 1:cas_badval 0
STAT 1:touch_hits 0
STAT active_slabs 1
STAT total_malloced 1048512
END

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

stats items
STAT items:1:number 1
STAT items:1:age 4
STAT items:1:evicted 0
STAT items:1:evicted_nonzero 0
STAT items:1:evicted_time 0
STAT items:1:outofmemory 0
STAT items:1:tailrepairs 0
STAT items:1:reclaimed 0
STAT items:1:expired_unfetched 0
STAT items:1:evicted_unfetched 0
END

हम पहले से क्या सोच सकते हैं... स्लैब कक्षा प्रति आँकड़े जानकारी के आधार पर हम अनुप्रयोग के व्यवहार के बारे में काफी कुछ सोच सकते हैं:

  1. विभिन्न सामग्री के लिए कैश अनुपात क्या है?
  • बड़े HTML चंकों का कैशिंग कैसी है?
  1. विभिन्न सामग्री के लिए हम कितना मेमोरी खर्च करते हैं?
  • साधारित संख्यात्मक काउंटर पर हम कितना खर्च करते हैं?
  • हमारे सत्र डेटा पर हम कितना खर्च करते हैं?
  • बड़े HTML चंकों पर हम कितना खर्च करते हैं?
  1. हम कितने बड़े ऑब्जेक्ट कैश कर सकते हैं?

बेशक, सवालों का उत्तर आपको अपने अनुप्रयोग के कैश ऑब्जेक्ट के बारे में जानने की आवश्यकता होती है. अब: कुंजी कैसे डंप करें? कुंजी को "स्टैट्स कैशडंप" कमांड का उपयोग करके स्लैब कक्षा प्रति डंप किया जा सकता है.

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

अपनी एकल कुंजी को क्लास #1 में डंप करने के लिए चलाएं

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

यहां "cachedump" प्रति पंक्ति एक आइटम लौटाता है। ब्रेसेज में पहला नंबर बाइट में आकार देता है, दूसरा समयचिह्न सृजन का देता है। दिए गए कुंजी नाम के आधार पर आप अब इसका मूल्य भी डंप कर सकते हैं।

get mykey
VALUE mykey 0 1
1
END

यह है: आप चाहें तो सभी स्लैब कक्षाओं पर इटरेट कर सकते हैं, कुंजी नामों को निकाल सकते हैं और यदि आवश्यक हो तो उनकी सामग्री को डंप कर सकते हैं।

मेमकैश कुंजी डंप करना (वर्जन 1.4.31+)

मेमकैश वर्जन 1.4.31 और इससे ऊपर मेमोरी कुंजीयों को डंप करने के लिए एक नया कमांड है जो गैर-ब्लॉकिंग मोड में काम करता है (पढ़ें https://github.com/memcached/memcached/wiki/ReleaseNotes1431 )। यह विधि उत्पादन में चलाने के लिए सुरक्षित है। आउटपुट संगठित नहीं है, लेकिन कुंजीयों को खोजने, उनके सटीक समाप्ति समय (EXP) और अंतिम उपयोग का समय (LA) पता करने के लिए पर्याप्त है। विशाल आउटपुट के कारण, 'nc' कमांड का उपयोग करना सिफारिश किया जाता है। उदाहरण:

echo 'lru_crawler metadump all' | nc 127.0.0.1 11211 | head -1
key=0dLLX%253Amemcache_test_key exp=1590718787 la=1590718487 cas=2238881166 fetch=yes

echo 'lru_crawler metadump all' | nc 127.0.0.1 11211 | grep ee6ba58566e234ccbbce13f9a24f9a28
key=VQRFX%253Aee6ba58566e234ccbbce13f9a24f9a28 exp=-1 la=1590386157 cas=1776204003 fetch=yes
key=0dLLX%253Aee6ba58566e234ccbbce13f9a24f9a28 exp=-1 la=1590712292 cas=2225524871 fetch=yes

EXP=-1 का मतलब है कि आइटम कभी समाप्त नहीं होता है। EXP=1590718787 (Fri May 29 02:19:47 GMT 2020) आइटम की समाप्ति की तिथि को यूनिक्स टाइमस्टैम्प में रखता है। LA=1590712292 (Mon May 25 05:55:57 GMT 2020) आइटम के अंतिम उपयोग की तिथि को यूनिक्स टाइमस्टैम्प में रखता है।

डंपिंग टूल्स

कभी-कभी वहां अलग-अलग डंपिंग टूल्स होते हैं जो मेमकैश कुंजीयों को प्रिंट करने में मदद करते हैं:

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

ट्रबलशूटिंग

1MB डेटा सीमा

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

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

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

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

set my_key 0 2592000 1
1

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

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

प्रतिलिपि

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

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

आदेश चीट-शीट

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

शोडन

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

संदर्भ

☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥
  • क्या आप किसी साइबर सुरक्षा कंपनी में काम करते हैं? क्या आप चाहते हैं कि आपकी कंपनी HackTricks में विज्ञापित की जाए? या क्या आपको PEASS के नवीनतम संस्करण या HackTricks को PDF में डाउनलोड करने की आवश्यकता है? सदस्यता योजनाएं की जांच करें!
  • The PEASS Family की खोज करें, हमारा विशेष NFT संग्रह
  • प्राप्त करें आधिकारिक PEASS और HackTricks swag
  • शामिल हों 💬 Discord समूह या टेलीग्राम समूह या मुझे ट्विटर पर फ़ॉलो करें 🐦@carlospolopm.
  • अपने हैकिंग ट्रिक्स को हमें PR के माध्यम से सबमिट करके hacktricks repo और hacktricks-cloud repo को साझा करें।