<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) प्राप्त करें
* हमारे विशेष [**NFTs**](https://opensea.io/collection/the-peass-family) कलेक्शन, [**The PEASS Family**](https://opensea.io/collection/the-peass-family) खोजें
* **शामिल हों** 💬 [**डिस्कॉर्ड समूह**](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 सबमिट करके।
[दस्तावेज़ से](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`।\
इसके अलावा, _**redis.conf**_ फ़ाइल में पैरामीटर `masteruser` में **एक उपयोगकर्ता** कॉन्फ़िगर किया जा सकता है।
इस तरह के मामलों में आपको **मान्य प्रमाणों** को खोजने की **आवश्यकता** होगी ताकि आप रेडिस के साथ बातचीत कर सकें इसलिए आप इसे [**ब्रूट-फ़ोर्स**](../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)
आप यहाँ से भी **रीयल टाइम में Redis कमांड्स को मॉनिटर** कर सकते हैं जो कमांड **`monitor`** के साथ चलाया जा सकता है या **25 सबसे धीमे क्वेरी** को प्राप्त कर सकते हैं **`slowlog get 25`**
और अधिक रोचक जानकारी के लिए यहाँ अधिक Redis कमांड्स के बारे में जानकारी प्राप्त करें: [https://lzone.de/cheat-sheet/Redis](https://lzone.de/cheat-sheet/Redis)
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` त्रुटि मिलती है, तो यह इसलिए हो सकता है कि कुंजी कुछ और हो सकती है जैसे कि एक स्ट्रिंग या एक पूर्णांक नहीं है और इसे प्रदर्शित करने के लिए विशेष ऑपरेटर की आवश्यकता होती है।
**नपम के साथ डेटाबेस डंप करें** [**रेडिस-डंप**](https://www.npmjs.com/package/redis-dump) **या पायथन** [**रेडिस-उपयोगिताएं**](https://pypi.org/project/redis-utils/)
[**रेडिस-रोग सर्वर**](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)। आपको **वेबसाइट फ़ोल्डर** का **पथ** पता होना चाहिए:
उदाहरण के लिए, [**इस व्रिटअप**](https://www.neteye-blog.com/2022/05/cyber-apocalypse-ctf-2022-red-island-writeup/) का पालन करते हुए, आप देख सकते हैं कि हमलावर ने एक **एचटीएमएल में रेव शेल इंजेक्ट किया** जिसे **नंजक्स टेम्पलेट इंजन द्वारा व्याख्या किया गया था:**
ध्यान दें कि **कई टेम्पलेट इंजन कैश** में टेम्पलेट को **मेमोरी** में स्टोर किया जाता है, इसलिए यदि आप उन्हें ओवरराइट करते हैं, तो नया टेम्पलेट **क्रियान्वित नहीं होगा**। इन मामलों में, या तो डेवलपर ने स्वचालित पुनरावृत्ति सक्रिय छोड़ दी है या आपको सेवा पर डीओएस करने की आवश्यकता है (और उम्मीद करें कि यह स्वचालित रूप से पुनः लॉन्च होगा)।
उदाहरण [यहाँ से](https://blog.adithyanak.com/oscp-preparation-guide/enumeration)
कृपया ध्यान दें कि **`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) से निर्देशों का पालन करते हुए आप **किसी भी कमांड को निषेधात्मक रूप से चलाने के लिए एक रेडिस मॉड्यूल को कंपाइल** कर सकते हैं।
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) आप देख सकते हैं कि रेडिस **EVAL** कमांड का उपयोग **लुआ कोड सैंडबॉक्स** को चलाने के लिए करता है। लिंक किए गए पोस्ट में आप देख सकते हैं कि **इसे****दुरुपयोग** कैसे किया जा सकता है उसका उपयोग करके, लेकिन [शायद](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) देखें!
* [**आधिकारिक PEASS & HackTricks स्वैग**](https://peass.creator-spring.com) प्राप्त करें
* हमारे विशेष [**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 रेपो में PR जमा करके अपने हैकिंग ट्रिक्स साझा करें।