🚨 CVE-2025-49844 (RediShell) - पूर्ण गाइड
⚠️ केवल सीखने के लिए, हैकिंग के लिए नहीं ;) ⚠️
नमस्ते! यह एक सरल टूल है जो मैंने लोगों को यह जाँचने में मदद करने के लिए बनाया है कि उनके Redis सर्वर इस बग के प्रति संवेदनशील हैं या नहीं। यह वास्तविक हमलों के लिए नहीं है - केवल सीखने और अपनी चीज़ों की सुरक्षा के लिए है।
यह सब किस बारे में है?
ठीक है मेरे प्यारे लोगों, यहाँ 2025 की सबसे दिलचस्प गड़बड़ियों में से एक है, CVE-2025-49844। मूल रूप से, अगर कोई आपके Redis सर्वर पर Lua स्क्रिप्ट चला सकता है, तो वे मेमोरी तक पहुँच प्राप्त कर सकते हैं।
महत्वपूर्ण बातें
- कितना बुरा?: बहुत बुरा (9.9/10)
- कौन प्रभावित है: Redis संस्करण 8.2.1 या उससे पुराना उपयोग करने वाला कोई भी व्यक्ति
- क्या होता है: कोड निष्पादन
- वे यह कैसे करते हैं: Lua स्क्रिप्टिंग के माध्यम से (जिसे Redis फैंसी डेटाबेस कामों के लिए उपयोग करता है)
चलिए शुरू करते हैं!
चरण 1: इस चीज़ को बनाएँ
# पहले, Go सामग्री तैयार करें
cd scanner
go mod tidy
# फिर स्कैनर बनाएँ
go build -o rscan redis-scanner.go
चरण 2: अपने सर्वर जाँचें
# एक सर्वर जाँचें
./rscan -host your-server.com -port 6379
# पासवर्ड के साथ जाँचें (यदि आपके पास है)
./rscan -host your-server.com -port 6379 -auth yourpassword
# एक साथ कई जाँचें
./rscan -host server1.com,server2.com,server3.com
# या फ़ाइल से जाँचें
./rscan -file hosts.txt
चरण 3: जो टूटा है उसे ठीक करें
# Lua स्क्रिप्टिंग बंद करें (यह हमले को रोकता है)
redis-cli ACL SETUSER default -@scripting
# या बस Redis को नवीनतम संस्करण में अपडेट करें
परिणामों का क्या मतलब है?
- 🚨 खतरा! - आपका Redis संवेदनशील है (पुराना संस्करण + Lua स्क्रिप्ट काम करती हैं)
- 🛡️ अच्छा! - आपका Redis सुरक्षित है (Lua अक्षम या नया संस्करण)
- ✅ बढ़िया! - आपका Redis सुरक्षित है (संस्करण 8.2.2 या नया)
- ❌ उफ़! - कनेक्ट नहीं हो सका या कुछ गलत हो गया
यह मेमोरी बग कैसे काम करता है
समस्या
इसे "use-after-free" बग कहा जाता है। मूल रूप से, Redis के पास एक मेमोरी प्रबंधन प्रणाली है जो कभी-कभी भ्रमित हो जाती है कि उसने कौन सी मेमोरी पहले ही साफ कर दी है।
यह कैसे काम करना चाहिए:
- 📝 Redis मेमोरी में कुछ डेटा बनाता है
- 🔍 उस डेटा का उपयोग किसी चीज़ के लिए करता है
- 🗑️ काम पूरा होने पर मेमोरी साफ करता है
- ✅ सब कुछ सुरक्षित और ठीक है
यह वास्तव में कैसे काम करता है (बग):
- 📝 Redis मेमोरी में कुछ डेटा बनाता है
- 🔍 उस डेटा का उपयोग किसी चीज़ के लिए करता है
- 🗑️ मेमोरी साफ करता है
- 🔍 डेटा का फिर से उपयोग करने की कोशिश करता है (लेकिन वह पहले ही जा चुका है!)
- 💥 सब कुछ टूट जाता है जिसका मज़े के लिए शोषण किया जाता है ;)
हैकर्स इसका उपयोग कैसे करते हैं
- वे किसे लक्षित करते हैं: Redis की Lua स्क्रिप्टिंग प्रणाली
- वे कौन से कमांड उपयोग करते हैं:
EVAL और EVALSHA (ये Lua स्क्रिप्ट चलाते हैं)
- वे क्या चाहते हैं: मेमोरी को अधिलेखित करना और मनमाना कोड चलाना
इसे कैसे ठीक करें
अभी यह करें (पहले 24 घंटे)
- अपने सभी Redis सर्वर खोजें (आपके पास जितना सोचते हैं उससे अधिक हो सकते हैं)
- उनके संस्करण जाँचें (8.2.1 या उससे पुराना कुछ भी खतरनाक है, आपको अपडेट करना होगा!)
- Lua स्क्रिप्ट बंद करें (यह हमले को तुरंत रोकता है)
- अपने अपग्रेड की योजना बनाएँ (यह असली समाधान है)
त्वरित समाधान (अभी हमला रोकें!)
# Lua स्क्रिप्ट बंद करें (यह हमले को रोकता है)
redis-cli ACL SETUSER default -@scripting
# या अपनी redis.conf फ़ाइल संपादित करें और यह पंक्ति जोड़ें:
disable-commands eval evalsha
# फिर Redis पुनः आरंभ करें
sudo systemctl restart redis
अपने नेटवर्क को सुरक्षित करें
# केवल विशिष्ट IP को Redis से कनेक्ट करने दें
iptables -A INPUT -p tcp --dport 6379 -s 10.0.0.0/8 -j ACCEPT
iptables -A INPUT -p tcp --dport 6379 -j DROP
# Redis को केवल विशिष्ट नेटवर्क इंटरफेस पर सुनने दें
bind 127.0.0.1 10.0.0.100
उचित पासवर्ड सेट करें
# एक मजबूत पासवर्ड सेट करें
redis-cli CONFIG SET requirepass "fuckredis1234ilovehacking!"
# सीमित अनुमतियों वाले उपयोगकर्ता बनाएँ
redis-cli ACL SETUSER appuser on >password +@read +@write -@scripting
redis-cli ACL SETUSER readonly on >password +@read -@scripting
Redis अपडेट करें (असली समाधान)
# पहले अपना डेटा बैकअप करें (हमेशा यह करें!)
sudo cp -r /var/lib/redis /var/lib/redis.backup.$(date +%Y%m%d)
# Redis को ठीक किए गए संस्करण में अपडेट करें
# Ubuntu/Debian पर:
sudo apt update && sudo apt install redis-server=8.2.2*
# CentOS/RHEL पर:
sudo yum update redis
# जाँचें कि यह काम कर गया
redis-server --version
जाँचें कि आपका समाधान वास्तव में काम करता है
सुनिश्चित करें कि स्क्रिप्ट अवरुद्ध हैं
# यदि आपका समाधान काम कर रहा है तो यह विफल होना चाहिए
redis-cli -a "YourPassword" EVAL "return 'test'" 0
# कहना चाहिए: (error) ERR unknown command 'EVAL'
अपनी नेटवर्क सुरक्षा जाँचें
# देखें कि Redis नेटवर्क से पहुँच योग्य है या नहीं
nmap -p 6379 your-redis-server
# जाँचें कि पासवर्ड आवश्यक है या नहीं
redis-cli -h your-redis-server -p 6379 ping
# पासवर्ड माँगना चाहिए
इस हमले को कैसे पहचानें
आपके नेटवर्क में संकेत
- Lua स्क्रिप्ट उपयोग के बढ़े हुए पैटर्न
- कोई बहुत बड़ी या जटिल स्क्रिप्ट भेज रहा है
- बहुत तेज़ी से चलने वाली बहुत सारी स्क्रिप्ट
- स्पष्ट रूप से संदिग्ध स्क्रिप्ट
आपके सर्वर पर संकेत
- Redis बार-बार क्रैश या पुनः आरंभ हो रहा है
- मेमोरी उपयोग ऊपर और/या नीचे उछल रहा है
- Redis अजीब नेटवर्क कनेक्शन बना रहा है
- ऐसी फ़ाइलें एक्सेस की जा रही हैं जो नहीं होनी चाहिए
अपने लॉग जाँचें
# अजीब Lua स्क्रिप्ट गतिविधि देखें
grep -i "eval\|evalsha" /var/log/redis/redis.log
# असफल लॉगिन प्रयास जाँचें
grep -i "auth" /var/log/redis/redis.log
# स्क्रिप्ट त्रुटियाँ देखें
grep -i "script" /var/log/redis/redis.log
इसका शोषण करना कितना कठिन है?
यह काफी जटिल है (यदि आप नहीं जानते कि क्या हो रहा है)
- आपको समझना होगा कि Redis अंदर से कैसे काम करता है
- मेमोरी ट्रिक्स: आपको Redis की मेमोरी प्रबंधन के साथ छेड़छाड़ करनी होगी
- Lua कौशल: आपको Lua स्क्रिप्ट लिखने में अच्छा होना चाहिए
- सही समय: आपको बग को बिल्कुल सही क्षण पर ट्रिगर करना होगा
वास्तविक शोषण कैसे दिखते हैं
- अजीब मेमोरी पैटर्न बनाएँ: Lua स्क्रिप्ट लिखें जो Redis को मेमोरी को विशिष्ट तरीकों से व्यवस्थित करने दें
- सफाई प्रक्रिया को धोखा दें: Redis को गलत समय पर मेमोरी साफ करने दें
- मेमोरी तोड़ें: Redis को ऐसी मेमोरी उपयोग करने दें जो पहले ही हटा दी गई है
- अपना कोड चलाएँ: टूटी हुई मेमोरी का उपयोग करके जो चाहें निष्पादित करें
यह वास्तव में कितना बुरा है?
यदि आप हैक हो जाते हैं तो क्या होता है
- पूर्ण अधिग्रहण: हैकर्स आपके सर्वर पर जो चाहें चला सकते हैं
- आपका सारा डेटा: वे आपके Redis डेटाबेस में सब कुछ देख सकते हैं
- अन्य सर्वरों में फैलाव: वे आपके सर्वर का उपयोग अन्य चीज़ों पर हमला करने के लिए कर सकते हैं
- छिपे रहना: वे आपके सोचने के बाद भी पहुँच बनाए रख सकते हैं कि आपने इसे ठीक कर लिया है
आपके व्यवसाय के लिए इसका क्या मतलब है
- डेटा लीक: आपकी सारी संवेदनशील जानकारी चोरी हो सकती है
- सब कुछ टूट जाता है: आपकी Redis सेवा काम करना बंद कर सकती है
- कानूनी परेशानी: डेटा की सुरक्षा न करने पर आप पर जुर्माना लग सकता है
- कोई आप पर भरोसा नहीं करता: ग्राहक पता चलने पर छोड़ सकते हैं
चलिए तकनीकी हो जाते हैं
Redis के कौन से हिस्से टूटे हैं
- Lua स्क्रिप्टिंग इंजन (
eval और evalsha कमांड)
- Redis मेमोरी कैसे प्रबंधित करता है
- कचरा संग्रह प्रणाली (अप्रयुक्त मेमोरी साफ करती है)
मेमोरी कैसे टूटती है
बग तब होता है जब:
- आप Lua में वस्तुओं के विशिष्ट पैटर्न बनाते हैं
- आप Redis की मेमोरी संदर्भ गणना के साथ छेड़छाड़ करते हैं
- आप Redis को गलत समय पर मेमोरी साफ करने के लिए मजबूर करते हैं
- आप Redis की मेमोरी प्रबंधन के समय का शोषण करते हैं
कौन से संस्करण प्रभावित हैं
- Redis संस्करण 8.2.1 और उससे पुराना
- कोई भी संस्करण जिसमें Lua स्क्रिप्टिंग चालू है
- यह बग लगभग 13 वर्षों से मौजूद है (ओह!)
शोषण कैसे दिखते हैं (सीखने के लिए)