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

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