
डॉकर-आधारित प्रयोगशाला वातावरण जो CVE-2014-0160 (हार्टब्लीड) का शोषण करके nginx वेब सर्वरों से मेमोरी लीक करने के लिए है, जिसमें पेलोड स्क्रिप्ट और Snort IDS का पता लगाने के नियम शामिल हैं।
यह रिपॉजिटरी एक कंटेनर बनाने पर केंद्रित है जो nginx का शोषण करने के लिए Heartbleed तकनीक का उपयोग करके आसान वातावरण प्रदान करती है:

CVE-2014-0160 समस्या तब उत्पन्न होती है जब OpenSSL लाइब्रेरी, TLS हार्टबीट फ़ंक्शन प्रदान करते हुए, 64kb बफर आकार के कारण अतिरिक्त मेमोरी लीक कर देती है जिससे सर्वर मेमोरी की संवेदनशील जानकारी लीक हो जाती है।
वेबऐप संवेदनशील संदेशों को संसाधित कर रहा है जो nginx द्वारा मेमोरी में कैश किए जाते हैं।
हम यह जाँच कर शोषण करते हैं कि क्या वातावरण TLS हार्टबीट का समर्थन करता है:
openssl s_client -connect : -tlsdebug
ध्यान दें: आधुनिक OpenSSL संस्करण TLS हार्टबीट प्रोटोकॉल का समर्थन नहीं कर सकते हैं, कृपया समर्थित संस्करण का उपयोग करें।
Heartbleed एक आउट-ऑफ-बाउंड्स रीड त्रुटि है जो यादृच्छिक होती है। सर्वर 64KB सन्निकट मेमोरी लौटाता है।
एक हार्टबीट का हेडर (RFC6520) 18 03 02 00
Heartbleed लैब बनाने के लिए docker build का उपयोग करें:
docker build -t heartbleed-lab .
docker run heartbleed-lab -p port:8443
वेबऐप का डिफ़ॉल्ट पोर्ट 8443 पर सेव किया जाता है।
पेलोड heartbleed.py का उपयोग करके परीक्षण करें। हम देख सकते हैं कि पेलोड हमें hexdump के रूप में परिणाम लौटाता है।
उदाहरण डंप में हम देख सकते हैं कि अभी भेजा गया अनुरोध और अधिकांश मेमोरी सेल 0x00 हैं। पेलोड यादृच्छिक होने के कारण, वांछित परिणाम लीक करने के लिए हमें इसे कई बार चलाना होगा।
हम memory.py चलाकर nginx पर अनुरोध भेज सकते हैं ताकि वह मेमोरी में स्टोर हो जाए, और फिर result.txt में दिखाए गए अनुसार लीक किया गया परिणाम प्राप्त कर सकते हैं।
चूंकि हम जानते हैं कि हमलावर संदेश लीक करने के लिए हार्टबीट अनुरोध का उपयोग करेगा:
alert tcp any any -> any 443 (msg:"Heartbeat request"; content:"|18 03 02 00|"; rawbytes;sid:100000)
Snort IDS का उपयोग करके घुसपैठ का पता लगाएं।