<summary><strong>जानें AWS हैकिंग को शून्य से हीरो तक</strong><ahref="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
* यदि आप अपनी **कंपनी का विज्ञापन HackTricks में** देखना चाहते हैं या **HackTricks को PDF में डाउनलोड** करना चाहते हैं तो [**सब्सक्रिप्शन प्लान्स देखें**](https://github.com/sponsors/carlospolop)!
* [**आधिकारिक PEASS & HackTricks स्वैग**](https://peass.creator-spring.com) प्राप्त करें
[दस्तावेज़ से](https://redis.io/topics/introduction): Redis एक ओपन सोर्स (बीएसडी लाइसेंस), इन-मेमोरी **डेटा संरचना स्टोर** के रूप में उपयोग किया जाता है, जो एक **डेटाबेस**, कैश और संदेश ब्रोकर के रूप में उपयोग किया जाता है।
डिफ़ॉल्ट रेडिस उपयोग करता है एक प्लेन-टेक्स्ट आधारित प्रोटोकॉल, लेकिन आपको ध्यान में रखना होगा कि यह **ssl/tls** भी लागू कर सकता है। यहाँ से [Redis को ssl/tls के साथ चलाना सीखें](https://fossies.org/linux/redis/TLS.md)।
रेडिस एक **टेक्स्ट आधारित प्रोटोकॉल** है, आप **सॉकेट में कमांड भेज सकते हैं** और वापस आने वाले मान पढ़ सकते हैं। याद रखें कि रेडिस **ssl/tls** का उपयोग करके भी चल सकता है (लेकिन यह बहुत अजीब है)।
**पहला कमांड** जो आप प्रयास कर सकते हैं वह है **`info`**। यह Redis इंस्टेंस की जानकारी के साथ आउटपुट वापस कर सकता है या कुछ इस प्रकार का आउटपुट वापस आ सकता है:
**डिफ़ॉल्ट रूप से** रेडिस को **पहुंचा** जा सकता है **बिना प्रमाणों** के। हालांकि, इसे **केवल पासवर्ड, या उपयोगकर्ता नाम + पासवर्ड** का समर्थन करने के लिए **कॉन्फ़िगर** किया जा सकता है।\
आप _**redis.conf**_ फ़ाइल में `requirepass` पैरामीटर के साथ **एक पासवर्ड सेट कर सकते हैं** या सेवा पुनः आरंभ होने तक अस्थायी रूप से इसे कनेक्ट करके और चलाकर: `config set requirepass p@ss$12E45`।\
इस तरह के मामलों में आपको रेडिस के साथ बातचीत करने के लिए मान्य प्रमाणों को खोजने की **आवश्यकता** होगी, ताकि आप इसे [**ब्रूट-फ़ोर्स**](../generic-methodologies-and-resources/brute-force.md#redis) कर सकें।\
**यदि आप मान्य प्रमाण पता लगा लेते हैं तो आपको सत्र का प्रमाणीकरण करने की आवश्यकता** होगी जब आप कनेक्शन स्थापित कर लेते हैं:
यदि Redis सर्वर **अनाम संयोजन** की अनुमति देता है या यदि आपने मान्य क्रेडेंशियल्स प्राप्त किए हैं, तो निम्नलिखित **कमांड** का उपयोग करके सेवा के लिए जांच प्रक्रिया प्रारंभ कर सकते हैं:
एक 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`**
रीडिस में **डेटाबेस संख्याएँ 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) स्वचालित रूप से Redis(<=5.0.5) में एक इंटरैक्टिव शैल या रिवर्स शैल प्राप्त कर सकता है।
जानकारी [**यहाँ से**](https://web.archive.org/web/20191201022931/http://reverse-tcp.xyz/pentest/database/2017/02/09/Redis-Hacking-Tips.html)। आपको **वेबसाइट फ़ोल्डर** का **पथ** पता होना चाहिए:
पिछले खंड में की तरह, आप किसी एचटीएमएल टेम्पलेट फ़ाइल को अधिक लिख सकते हैं जो एक टेम्पलेट इंजन द्वारा व्याख्या किया जाएगा और एक शेल प्राप्त कर सकते हैं।
उदाहरण के लिए, [**इस व्रिटअप**](https://www.neteye-blog.com/2022/05/cyber-apocalypse-ctf-2022-red-island-writeup/) का पालन करते हुए, आप देख सकते हैं कि हमलावर ने एक **एचटीएमएल में रेव शेल इंजेक्ट किया** जिसे **नंजक्स टेम्पलेट इंजन द्वारा व्याख्या** किया गया था:
कृपया ध्यान दें कि **कई टेम्पलेट इंजन कैश** में टेम्पलेट को **मेमोरी** में स्टोर किया जाता है, इसलिए यदि आप उन्हें ओवरराइट करते हैं, तो नया वाला **नहीं चलाया जाएगा**। इस प्रकार के मामलों में, या तो डेवलपर ने स्वचालित पुनरावृत्ति सक्रिय छोड़ दी है या आपको सेवा पर डीओएस करना होगा (और उम्मीद करें कि यह स्वचालित रूप से पुनः लॉन्च होगा)।
कृपया ध्यान दें कि **`config get dir`** परिणाम किसी अन्य मैन्युअल एक्सप्लॉइट कमांड के बाद बदल सकता है। सुझाव दिया जाता है कि आप इसे रन करें जल्दी से रेडिस में लॉगिन करने के बाद। **`config get dir`** के आउटपुट में आप **रेडिस उपयोगकर्ता** का **होम** (सामान्यत: _/var/lib/redis_ या _/home/redis/.ssh_) पा सकते हैं, और जानकारी होने पर आप यह जान जाते हैं कि आप कहां `authenticated_users` फ़ाइल लिख सकते हैं जिसके माध्यम से आप ssh के माध्यम से **रेडिस उपयोगकर्ता के साथ** पहुंच सकते हैं। यदि आपको अन्य मान्य उपयोगकर्ता के होम का पता है जिसमें आपके पास लेखनीय अनुमति है, तो आप इसका दुरुपयोग भी कर सकते हैं:
1. [https://github.com/n0b0dyCN/RedisModules-ExecuteCommand](https://github.com/n0b0dyCN/RedisModules-ExecuteCommand) से निर्देशों का पालन करते हुए आप **किसी भी कमांड को निषेधात्मक रूप से चलाने के लिए एक रेडिस मॉड्यूल को कंपाइल** कर सकते हैं।
[**यहाँ**](https://www.agarri.fr/blog/archives/2014/09/11/trying\_to\_hack\_redis\_via\_http\_requests/index.html) आप देख सकते हैं कि रेडिस **EVAL** कमांड का उपयोग **लुआ कोड सैंडबॉक्स** को चलाने के लिए करता है। लिंक किए गए पोस्ट में आप देख सकते हैं कि इसे **dofile** फ़ंक्शन का उपयोग करके कैसे दुरुपयोग किया जा सकता है, लेकिन [शायद](https://stackoverflow.com/questions/43502696/redis-cli-code-execution-using-eval) यह अब और संभव नहीं है। चाहे तो, यदि आप **लुआ** सैंडबॉक्स को बाईपास कर सकते हैं तो आप सिस्टम पर **निर्देशित** कमांड चला सकते हैं। इसके अलावा, उसी पोस्ट से आप कुछ **DoS** कारणों के विकल्प देख सकते हैं।
मास्टर रेडिस सभी ऑपरेशन अपने आप स्लेव रेडिस में स्वचालित रूप से सिंक्रनाइज़ कर देता है, जिसका मतलब है कि हम व्यक्तिगत रूप से नियंत्रित रेडिस के रूप में सुरक्षा रेडिस को एक स्लेव रेडिस के रूप में देख सकते हैं, जो हमारे नियंत्रण में है, फिर हम अपने रेडिस में कमांड दर्ज कर सकते हैं।
यदि आप **स्पष्ट पाठ** अनुरोध **रेडिस को** भेज सकते हैं, तो आप इसके साथ **संवाद कर सकते हैं** क्योंकि रेडिस अनुरोध को पंक्ति द्वारा पढ़ेगा और उसे उन पंक्तियों के लिए केवल त्रुटियां देगा जिन्हें वह समझता नहीं है:
इसलिए, अगर आप एक वेबसाइट में **SSRF vuln** खोजते हैं और आप कुछ **हेडर्स** (शायद CRLF vuln के साथ) या **POST parameters** को **नियंत्रित** कर सकते हैं, तो आप Redis को विषयास्पद कमांड भेज सकेंगे।
**Gitlab11.4.7** में एक **SSRF** वंलरेबिलिटी और एक **CRLF** खोजे गए थे। **SSRF** वंलरेबिलिटी **आयात प्रोजेक्ट से URL कार्यक्षमता** में थी जब एक नया प्रोजेक्ट बनाया जा रहा था और इसे अनियमित IPs तक पहुंचने की अनुमति दी गई थी \[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` योजना के साथ नहीं।_
<summary><strong>जानें AWS हैकिंग को शून्य से हीरो तक</strong><ahref="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong> के साथ!</strong></summary>
* यदि आप अपनी **कंपनी का विज्ञापन HackTricks में देखना चाहते हैं** या **HackTricks को PDF में डाउनलोड करना चाहते हैं** तो [**सब्सक्रिप्शन प्लान्स देखें**](https://github.com/sponsors/carlospolop)!
* हमारे विशेष [**NFTs**](https://opensea.io/collection/the-peass-family) संग्रह [**The PEASS Family**](https://opensea.io/collection/the-peass-family) खोजें
* **शामिल हों** 💬 [**Discord समूह**](https://discord.gg/hRep4RUj7f) या [**टेलीग्राम समूह**](https://t.me/peass) या हमें **ट्विटर** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)** पर फॉलो** करें।
* **HackTricks** और [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos में PRs सबमिट करके अपने हैकिंग ट्रिक्स साझा करें।