* क्या आप किसी **साइबर सुरक्षा कंपनी** में काम करते हैं? क्या आप अपनी **कंपनी को HackTricks में विज्ञापित** देखना चाहते हैं? या क्या आपको **PEASS की नवीनतम संस्करण या HackTricks को PDF में डाउनलोड करने का उपयोग** करने की आवश्यकता है? [**सदस्यता योजनाएं**](https://github.com/sponsors/carlospolop) की जांच करें!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family) की खोज करें, हमारा विशेष संग्रह [**NFTs**](https://opensea.io/collection/the-peass-family)
* [**आधिकारिक PEASS & HackTricks swag**](https://peass.creator-spring.com) प्राप्त करें
* [**💬**](https://emojipedia.org/speech-balloon/) [**Discord समूह**](https://discord.gg/hRep4RUj7f) या [**टेलीग्राम समूह**](https://t.me/peass) में **शामिल हों** या मुझे **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)** का पालन करें**.
प्रतिस्पर्धा सूचकांक के साथ प्रत्यामित बग के प्रत्यामित बग के साथ प्रत्यामित बग के साथ प्रत्यामित बग के साथ प्रत्यामित बग के साथ प्रत्यामित बग के साथ प्रत्यामित बग के साथ प्रत्यामित बग के साथ प्रत्यामित बग के साथ प्रत्यामित बग के साथ प्रत्यामित बग के साथ प्रत्यामित बग के साथ प्रत्यामित बग के साथ प्रत्यामित बग के साथ प्रत्यामित बग के साथ प्रत्यामित बग के साथ प्रत्यामित बग के साथ प्रत्यामित बग के साथ प्रत्यामित बग के साथ प्रत्यामित बग के साथ प्रत्यामित बग के साथ प्रत्यामित बग के साथ प्रत्यामित बग के साथ प्रत्यामित बग के साथ प्रत्यामित बग के साथ प्रत्यामित बग के साथ प्रत्यामित बग के साथ प्रत्यामित बग के साथ प्रत्यामित बग के साथ प्रत्यामित बग के साथ प्रत्यामित बग के साथ प्रत्यामित बग के साथ प्रत्यामित बग के साथ प्रत्यामित बग के साथ प्रत्यामित बग के साथ प्रत्यामित बग के साथ प्रत्यामित बग के साथ प्रत्यामित बग के साथ प्रत्यामित बग के साथ प्रत्यामित बग के साथ प्रत्यामित बग के साथ प्रत्यामित बग के साथ प्रत्यामित बग के साथ प्रत्यामित बग के साथ प्रत्यामित बग के साथ प्रत्यामित बग के साथ प्रत्यामित बग के साथ प्रत्यामित बग के साथ प्रत्यामित बग के साथ प्रत्यामित बग के साथ प्रत्यामित बग के साथ प्रत्यामित बग के साथ प्रत्यामित बग के साथ प्रत्यामित बग के साथ प्रत्यामित बग के साथ प्रत्यामित बग के साथ प्रत्यामित बग के साथ प्रत्यामित बग के साथ प्रत्यामित बग के साथ प्रत्यामित बग के साथ प्रत्यामित बग के साथ प्रत्यामित बग के साथ प्रत्यामित बग के साथ प्रत्यामित बग के साथ प्रत्यामित बग के साथ प्रत्यामित बग के साथ प्रत्यामित बग के साथ प्रत्यामित बग के साथ प्रत्यामित बग के साथ प्रत्यामित बग के साथ प्रत्यामित बग के साथ प्रत्यामित बग के साथ प्रत्यामित बग के साथ प्रत<E0A4B0><E0A4A4>
Redis एक **टेक्स्ट आधारित प्रोटोकॉल** है, आप बस **सॉकेट में कमांड भेज सकते हैं** और वापस मिलने वाले मान पठनीय होंगे। यहां याद रखें कि Redis **ssl/tls** का उपयोग करके चला सकता है (लेकिन यह बहुत अजीब होगा)।
**डिफ़ॉल्ट रूप से** Redis को **पासवर्ड के बिना** एक्सेस किया जा सकता है। हालांकि, इसे **कॉन्फ़िगर** किया जा सकता है कि यह केवल पासवर्ड, या उपयोगकर्ता नाम + पासवर्ड का समर्थन करे।\
आप _**redis.conf**_ फ़ाइल में `requirepass` पैरामीटर के साथ एक पासवर्ड **सेट कर सकते हैं** या सेवा पुनरारंभ होने तक अस्थायी रूप से इससे कनेक्ट करके चला सकते हैं: `config set requirepass p@ss$12E45`।\
इसके अलावा, _**redis.conf**_ फ़ाइल में पैरामीटर `masteruser` में एक **उपयोगकर्ता नाम** कॉन्फ़िगर किया जा सकता है।
यदि केवल पासवर्ड कॉन्फ़िगर किया गया है तो उपयोग किया जाने वाला उपयोगकर्ता नाम "**default**" होता है।\
इसके अलावा, ध्यान दें कि Redis के बाहर से यह जानने का कोई **तरीका नहीं है** कि क्या Redis केवल पासवर्ड या उपयोगकर्ता+पासवर्ड के साथ कॉन्फ़िगर किया गया है।
इस तरह के मामलों में आपको Redis के साथ इंटरैक्ट करने के लिए **मान्य प्रमाणिकरण खोजने की आवश्यकता** होगी, इसलिए आप [**ब्रूट-फ़ोर्स**](../generic-methodologies-and-resources/brute-force.md#redis) करने का प्रयास कर सकते हैं।\
**यदि आप मान्य प्रमाणिकरण पाएंगे तो कनेक्शन स्थापित करने के बाद अधिकारीकरण सत्र** को प्रमाणित करने के लिए निम्नलिखित कमांड का उपयोग करें:
यदि Redis इंस्टेंस **गैर नामचीन** कनेक्शन स्वीकार कर रहा है या आपने कुछ **मान्य प्रमाणिकरण** पाया है, तो आप निम्नलिखित कमांड के साथ सेवा की जाँच करना शुरू कर सकते हैं:
**अन्य Redis कमांड** [**यहां**](https://redis.io/topics/data-types-intro) **और** [**यहां**](https://lzone.de/cheat-sheet/Redis)** मिल सकते हैं।**\
ध्यान दें कि **एक इंस्टेंस के Redis कमांडों को नामांकित** या _redis.conf_ फ़ाइल में हटा दिया जा सकता है। उदाहरण के लिए, इस पंक्ति से FLUSHDB कमांड हटा दिया जाएगा:
यहां Redis सेवा को सुरक्षित रूप से कॉन्फ़िगर करने के बारे में और अधिक जानकारी है: [https://www.digitalocean.com/community/tutorials/how-to-install-and-secure-redis-on-ubuntu-18-04](https://www.digitalocean.com/community/tutorials/how-to-install-and-secure-redis-on-ubuntu-18-04)
आप यहां रेडिस कमांड्स को वास्तविक समय में मॉनिटर कर सकते हैं **`monitor`** कमांड के साथ या शीर्ष **25 सबसे धीमे क्वेरी** को प्राप्त कर सकते हैं **`slowlog get 25`** के साथ।
Redis में **डेटाबेस संख्याएं 0 से शुरू होती हैं**। आप यह जान सकते हैं कि क्या कोई भी उपयोग में है या नहीं `info` कमांड के आउटपुट में "Keyspace" चंक में:
उस उदाहरण में **डेटाबेस 0 और 1** का उपयोग किया जा रहा है। **डेटाबेस 0 में 4 कुंजी हैं और डेटाबेस 1 में 1 है**। डिफ़ॉल्ट रूप से Redis डेटाबेस 0 का उपयोग करेगा। उदाहरण के लिए डेटाबेस 1 को डंप करने के लिए आपको निम्न कार्रवाई करनी होगी:
यदि आप `GET <KEY>` चलाते समय निम्नलिखित त्रुटि `-WRONGTYPE Operation against a key holding the wrong kind of value` प्राप्त करते हैं, तो इसका मतलब है कि कुंजी कुछ और हो सकती है जो स्ट्रिंग या पूर्णांक से अलग है और इसे प्रदर्शित करने के लिए एक विशेष ऑपरेटर की आवश्यकता होती है।
[**redis-rogue-server**](https://github.com/n0b0dyCN/redis-rogue-server) आपको स्वचालित रूप से रेडिस(<=5.0.5) में एक इंटरैक्टिव शेल या रिवर्स शेल प्राप्त करने में मदद कर सकता है।
[**यहां**](https://web.archive.org/web/20191201022931/http://reverse-tcp.xyz/pentest/database/2017/02/09/Redis-Hacking-Tips.html) से जानकारी मिली है। आपको **वेबसाइट फ़ोल्डर का पथ** पता होना चाहिए:
यदि वेबशेल एक्सेस अस्वीकृति होती है, तो आप बैकअप के बाद डेटाबेस को खाली कर सकते हैं और पुनः प्रयास कर सकते हैं, ध्यान दें कि डेटाबेस को पुनर्स्थापित करें।
पिछले खंड में की तरह, आप किसी भी html टेम्पलेट फ़ाइल को अधिष्ठानित करने और शैल मिलाने के लिए एक टेम्पलेट इंजन द्वारा व्याख्या की जा रही है और एक शैल प्राप्त कर सकते हैं।
उदाहरण के लिए, [**इस व्राइटअप**](https://www.neteye-blog.com/2022/05/cyber-apocalypse-ctf-2022-red-island-writeup/) का पालन करते हुए, आप देख सकते हैं कि हमलावर ने **nunjucks टेम्पलेट इंजन** द्वारा व्याख्या की जाने वाली **html में एक रेव शैल डाली है:**
ध्यान दें कि **कई टेम्पलेट इंजन कैश** में टेम्पलेट्स को **मेमोरी में** कैश किया जाता है, इसलिए यदि आप उन्हें अधिलेखित करते हैं, तो नया टेम्पलेट **क्रियान्वित नहीं होगा**। इस प्रकार के मामलों में, या तो डेवलपर ने स्वचालित पुनरारंभ सक्रिय छोड़ दी है या आपको सेवा पर डीओएस करने की आवश्यकता होगी (और उम्मीद करेंगे कि यह स्वचालित रूप से पुनरारंभ होगा)।
कृपया ध्यान दें कि **`config get dir`** परिणाम को अन्य मैन्युअल अभिशोषण कमांड के बाद बदला जा सकता है। रेडिस में लॉगिन करने के बाद इसे पहले चलाने की सलाह दी जाती है। **`config get dir`** के आउटपुट में आप **रेडिस उपयोगकर्ता** के **होम** (आमतौर पर _/var/lib/redis_ या _/home/redis/.ssh_) का पता लगा सकते हैं, और इसे जानकर आप जानते हैं कि आप कहां लिख सकते हैं `authenticated_users` फ़ाइल को ssh के माध्यम से एक्सेस करने के लिए **रेडिस उपयोगकर्ता** के साथ। यदि आप अन्य मान्य उपयोगकर्ता के होम को जानते हैं जहां आपके पास लिखने की अनुमति है, तो आप इसका दुरुपयोग भी कर सकते हैं:
**इस तकनीक को यहां स्वचालित रूप से किया जा सकता है:** [https://github.com/Avinash-acid/Redis-Server-Exploit](https://github.com/Avinash-acid/Redis-Server-Exploit)
1. [https://github.com/n0b0dyCN/RedisModules-ExecuteCommand](https://github.com/n0b0dyCN/RedisModules-ExecuteCommand) के निर्देशों का पालन करके आप **किसी भी आरबिट्रे कमांड को निष्पादित करने के लिए एक रेडिस मॉड्यूल को कंपाइल** कर सकते हैं।
2. फिर आपको कंपाइल किए गए मॉड्यूल को **अपलोड करने का कोई तरीका** चाहिए।
3.`MODULE LOAD /path/to/mymodule.so` के साथ **रनटाइम में अपलोड किए गए मॉड्यूल** लोड करें।
4. यह सुनिश्चित करने के लिए **लोड किए गए मॉड्यूल की सूची** देखें: `MODULE LIST`
[**यहां**](https://www.agarri.fr/blog/archives/2014/09/11/trying\_to\_hack\_redis\_via\_http\_requests/index.html) आप देख सकते हैं कि Redis लुआ कोड सैंडबॉक्स को निष्पादित करने के लिए **EVAL** कमांड का उपयोग करता है। लिंक किए गए पोस्ट में आप देख सकते हैं कि इसे **dofile** फ़ंक्शन का उपयोग करके **दुरुपयोग** कैसे किया जाता है, लेकिन [शायद](https://stackoverflow.com/questions/43502696/redis-cli-code-execution-using-eval) अब यह संभव नहीं है। फिर भी, यदि आप लुआ सैंडबॉक्स को **बाईपास** कर सकते हैं, तो आप सिस्टम पर **आरबिट्रे** कमांड निष्पादित कर सकते हैं। इसके अलावा, उसी पोस्ट से आप कुछ **DoS करने के विकल्प** देख सकते हैं।
मास्टर रेडिस सभी ऑपरेशन स्वचालित रूप से स्लेव रेडिस में सिंक्रनाइज़ होते हैं, जिसका मतलब है कि हम वंशवादी रेडिस को एक स्लेव रेडिस के रूप में मान सकते हैं, जो हमारे नियंत्रण में होता है, फिर हम अपने रेडिस में कमांड दर्ज कर सकते हैं।
यदि आप **स्पष्ट पाठ** अनुरोध **Redis को** भेज सकते हैं, तो आप इसके साथ **संवाद कर सकते हैं** क्योंकि Redis अनुरोध को पंक्ति-पंक्ति पढ़ेगा और उसे समझने में असमझित पंक्तियों पर केवल त्रुटियों के साथ प्रतिक्रिया देगा:
इसलिए, यदि आपको एक वेबसाइट में **SSRF vuln** मिलता है और आप कुछ **हेडर्स** (संभवतः CRLF vuln के साथ) या **POST parameters** को **नियंत्रित** कर सकते हैं, तो आप Redis को विचारशक्ति कमांड भेज सकेंगे।
**Gitlab11.4.7** में एक **SSRF** दुर्बलता और एक **CRLF** मिला। **SSRF** दुर्बलता नए परियोजना बनाने के समय **URL से परियोजना आयात करने की क्षमता** में थी और इसके द्वारा एकांतरिक IP तक पहुंच दी जा सकती थी \[0:0:0:0:0:ffff:127.0.0.1] (यह 127.0.0.1 तक पहुंच करेगा), और **CRLF** vuln केवल **URL** में **%0D%0A** वर्ण जोड़कर उपयोग किया गया।
इसलिए, इन दुर्बलताओं का दुरुपयोग करके **Redis इंस्टेंस** के साथ बातचीत करना संभव था जो **gitlab** से **कतारें प्रबंधित करता है** और उन कतारों का दुरुपयोग करके **कोड निष्पादन प्राप्त** करना संभव था। Redis कतार दुरुपयोग पेलोड है:
_किसी कारण से (जैसा कि इस जानकारी को लिए गया था जैसे_ [_https://liveoverflow.com/gitlab-11-4-7-remote-code-execution-real-world-ctf-2018/_](https://liveoverflow.com/gitlab-11-4-7-remote-code-execution-real-world-ctf-2018/) _में लिखा है) यह उत्पीड़न `git` योजना के साथ काम कर रहा था और `http` योजना के साथ नहीं।_
* क्या आप किसी **साइबर सुरक्षा कंपनी** में काम करते हैं? क्या आप अपनी कंपनी को **HackTricks में विज्ञापित** देखना चाहते हैं? या क्या आपको **PEASS की नवीनतम संस्करण या HackTricks को PDF में डाउनलोड करने की अनुमति** चाहिए? [**सदस्यता योजनाएं**](https://github.com/sponsors/carlospolop) की जांच करें!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family) की खोज करें, हमारा विशेष [**NFT संग्रह**](https://opensea.io/collection/the-peass-family)
* [**आधिकारिक PEASS & HackTricks swag**](https://peass.creator-spring.com) प्राप्त करें
* [**💬**](https://emojipedia.org/speech-balloon/) [**Discord समूह**](https://discord.gg/hRep4RUj7f) या [**टेलीग्राम समूह**](https://t.me/peass) में **शामिल** हों या मुझे **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)** का पालन करें।**