
वास्तविक मामलों में पाई गई कमजोरियों वाला वेब एप्लिकेशन, पेंटेस्ट और बग बाउंटी कार्यक्रमों दोनों में।
वेब हैकिंग प्लेग्राउंड एक नियंत्रित वेब हैकिंग वातावरण है। इसमें वास्तविक मामलों में पाई जाने वाली कमज़ोरियाँ शामिल हैं, दोनों पेंटेस्ट और बग बाउंटी प्रोग्राम में। उद्देश्य यह है कि उपयोगकर्ता उनके साथ अभ्यास कर सकें, और उन्हें पहचानना और शोषण करना सीख सकें।
अन्य रुचि के विषयों को भी संबोधित किया जाएगा, जैसे: कस्टम पेलोड बनाकर फ़िल्टर को बायपास करना, विभिन्न कमज़ोरियों का शोषण करके चेन्ड हमलों को निष्पादित करना, प्रूफ-ऑफ-कॉन्सेप्ट स्क्रिप्ट विकसित करना, आदि।
एप्लिकेशन का स्रोत कोड दृश्यमान है। हालांकि, लैब का दृष्टिकोण ब्लैक बॉक्स है। इसलिए, चुनौतियों को हल करने के लिए कोड की समीक्षा नहीं की जानी चाहिए।
इसके अतिरिक्त, यह ध्यान दिया जाना चाहिए कि फ़ज़िंग (दोनों पैरामीटर और निर्देशिकाएँ) और ब्रूट फोर्स हमले इस लैब में कोई लाभ प्रदान नहीं करते हैं।
इस लैब को करने के लिए Kali Linux का उपयोग करने की अनुशंसा की जाती है। वर्चुअल मशीन का उपयोग करने के मामले में, VMware Workstation Player हाइपरवाइज़र का उपयोग करना उचित है।
पर्यावरण Docker और Docker Compose पर आधारित है, इसलिए दोनों को स्थापित करना आवश्यक है।
Kali Linux पर Docker स्थापित करने के लिए, निम्नलिखित कमांड चलाएँ:
sudo apt update -y
sudo apt install -y docker.io
sudo systemctl enable docker --now
अन्य Debian-आधारित वितरणों पर Docker स्थापित करने के लिए, निम्नलिखित कमांड चलाएँ:
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
sudo systemctl enable docker --now
Docker Compose स्थापित करने के लिए, निम्नलिखित कमांड चलाएँ:
sudo apt install -y docker-compose
नोट: M1 का उपयोग करने के मामले में इमेज बनाने से पहले निम्नलिखित कमांड निष्पादित करने की अनुशंसा की जाती है:
export DOCKER_DEFAULT_PLATFORM=linux/amd64
अगला चरण रिपॉजिटरी को क्लोन करना और Docker इमेज बनाना है:
git clone https://github.com/takito1812/web-hacking-playground.git
cd web-hacking-playground
sudo docker-compose build
साथ ही, Foxy Proxy ब्राउज़र एक्सटेंशन स्थापित करने की अनुशंसा की जाती है, जो आपको आसानी से प्रॉक्सी सेटिंग्स बदलने की अनुमति देता है, और Burp Suite, जिसका उपयोग हम HTTP अनुरोधों को इंटरसेप्ट करने के लिए करेंगे।
हम Burp Suite को प्रॉक्सी के रूप में उपयोग करने के लिए Foxy Proxy में एक नया प्रोफ़ाइल बनाएंगे। ऐसा करने के लिए, हम Foxy Proxy विकल्पों पर जाते हैं, और निम्नलिखित कॉन्फ़िगरेशन के साथ एक प्रॉक्सी जोड़ते हैं:
एक बार जब आपकी ज़रूरत की सभी चीज़ें स्थापित हो जाती हैं, तो आप निम्नलिखित कमांड के साथ पर्यावरण को डिप्लॉय कर सकते हैं:
git clone https://github.com/takito1812/web-hacking-playground.git
cd web-hacking-playground
sudo docker-compose up -d
यह Flask में विकसित दो एप्लिकेशन कंटेनर बनाएगा जो पोर्ट 80 पर हैं:
कंटेनरों के IP को /etc/hosts फ़ाइल में जोड़ना आवश्यक है, ताकि उन्हें नाम से एक्सेस किया जा सके और एक्सप्लॉइट सर्वर कमज़ोर वेब एप्लिकेशन के साथ संचार कर सके। ऐसा करने के लिए, निम्नलिखित कमांड चलाएँ:
sudo sed -i '/whp-/d' /etc/hosts
echo "$(sudo docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' whp-socially) whp-socially" | sudo tee -a /etc/hosts
echo "$(sudo docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' whp-exploitserver) whp-exploitserver" | sudo tee -a /etc/hosts
एक बार यह हो जाने के बाद, कमज़ोर एप्लिकेशन को http://whp-socially और एक्सप्लॉइट सर्वर को http://whp-exploitserver से एक्सेस किया जा सकता है।
एक्सप्लॉइट सर्वर का उपयोग करते समय, उपरोक्त URLs का उपयोग किया जाना चाहिए, IP के बजाय डोमेन नाम का उपयोग करना चाहिए। यह कंटेनरों के बीच सही संचार सुनिश्चित करता है।
हैकिंग के संबंध में, हमलावर के सर्वर का प्रतिनिधित्व करने के लिए, स्थानीय Docker IP का उपयोग किया जाना चाहिए, क्योंकि लैब बाहरी सर्वरों जैसे Burp Collaborator, Interactsh आदि को अनुरोध भेजने के लिए नहीं है। एक Python http.server का उपयोग वेब सर्वर का अनुकरण करने और HTTP इंटरैक्शन प्राप्त करने के लिए किया जा सकता है। ऐसा करने के लिए, निम्नलिखित कमांड चलाएँ:
sudo python3 -m http.server 80
पर्यावरण तीन चरणों में विभाजित है, प्रत्येक में अलग-अलग कमज़ोरियाँ हैं। यह महत्वपूर्ण है कि वे क्रम में किए जाएँ, क्योंकि बाद के चरणों में कमज़ोरियाँ पिछले चरणों की कमज़ोरियों पर आधारित होती हैं। चरण हैं:
नीचे प्रत्येक चरण की कमज़ोरियों के लिए स्पॉइलर हैं। यदि आपको सहायता की आवश्यकता नहीं है, तो आप इस अनुभाग को छोड़ सकते हैं। दूसरी ओर, यदि आप नहीं जानते कि कहाँ से शुरू करें, या जाँचना चाहते हैं कि क्या आप सही रास्ते पर हैं, तो आप उस अनुभाग का विस्तार कर सकते हैं जो आपकी रुचि रखता है।
इस चरण में, क्रॉस-साइट स्क्रिप्टिंग (XSS) के माध्यम से किसी विशिष्ट उपयोगकर्ता के सत्र को चुराया जा सकता है, जो जावास्क्रिप्ट कोड को निष्पादित करने की अनुमति देता है। ऐसा करने के लिए, पीड़ित को उपयोगकर्ता के संदर्भ में एक URL तक पहुँचने में सक्षम होना चाहिए, इस व्यवहार को एक्सप्लॉइट सर्वर के साथ अनुकरण किया जा सकता है।
इस चरण को हल करने के संकेत हैं:
इस चरण में, एक टोकन उत्पन्न किया जा सकता है जो व्यवस्थापक के रूप में पहुँच की अनुमति देता है। यह एक विशिष्ट JSON वेब टोकन (JWT) हमला है, जिसमें विशेषाधिकार बढ़ाने के लिए टोकन पेलोड को संशोधित किया जा सकता है।
इस चरण को हल करने का संकेत यह है कि एक एंडपॉइंट है जो, एक JWT दिए जाने पर, एक मान्य सत्र कुकी लौटाता है।
इस चरण में, सर्वर साइड टेम्पलेट इंजेक्शन (SSTI) कमज़ोरी के माध्यम से /flag फ़ाइल को पढ़ा जा सकता है। ऐसा करने के लिए, आपको एप्लिकेशन को सर्वर पर Python कोड चलाने के लिए प्राप्त करना होगा। सर्वर पर सिस्टम कमांड निष्पादित करना संभव है।
इस चरण को हल करने के संकेत हैं:
कमज़ोर कार्यक्षमता दो-कारक प्रमाणीकरण द्वारा सुरक्षित है। इसलिए, SSTI का शोषण करने से पहले, OTP कोड अनुरोध को बायपास करने का एक तरीका खोजा जाना चाहिए। ऐसे समय होते हैं जब एप्लिकेशन उन अनुरोधों पर भरोसा करता है जो उसी सर्वर से किए जाते हैं और HTTP हेडर इस स्थिति में एक महत्वपूर्ण भूमिका निभाते हैं।
SSTI ब्लाइंड है, इसका मतलब है कि सर्वर पर निष्पादित कोड का आउटपुट सीधे प्राप्त नहीं होता है। Python smtpd मॉड्यूल आपको एक SMTP सर्वर बनाने की अनुमति देता है जो प्राप्त संदेशों को मानक आउटपुट पर प्रिंट करता है:
sudo python3 -m smtpd -n -c DebuggingServer 0.0.0.0:25
एप्लिकेशन Flask का उपयोग करता है, इसलिए यह अनुमान लगाया जा सकता है कि टेम्पलेट इंजन Jinja2 है क्योंकि यह आधिकारिक Flask दस्तावेज़ द्वारा अनुशंसित है और व्यापक रूप से उपयोग किया जाता है। अंतिम फ़्लैग प्राप्त करने के लिए आपको एक Jinja2 संगत पेलोड प्राप्त करना होगा।
ईमेल संदेश में एक वर्ण सीमा है। इस सीमा को बायपास करने के तरीके के बारे में जानकारी इंटरनेट पर पाई जा सकती है।
प्रत्येक चरण के विस्तृत समाधान Solutions फ़ोल्डर में पाए जा सकते हैं।
निम्नलिखित संसाधन चरणों को हल करने में सहायक हो सकते हैं:
पुल अनुरोधों का स्वागत है। यदि आपको कोई बग मिलता है, तो कृपया एक इश्यू खोलें।