
The Super Vulnerable Java Application (SVJA), जैसा कि Roniel और DaRon पॉडकास्ट शो में प्रदर्शित किया गया है, एक Apache Struts एप्लीकेशन है जिसे कई अत्यधिक सामान्य कमजोरियों को समाहित करने के लिए डिज़ाइन किया गया है। अन्य "जानबूझकर कमजोर" सॉफ़्टवेयर के विपरीत, यह सॉफ़्टवेयर सामान्य कमजोरियों का उसी तरह अनुकरण करने के लिए डिज़ाइन किया गया है जिस तरह वे अक्सर देखी जाती हैं, न कि न तो अत्यधिक सरल तरीके से और न ही अधिक "कैप्चर द फ्लैग" (capture the flag) तरीके से। यह सॉफ़्टवेयर अर्ध-नियमित रूप से अपडेट किया जाता है और इसमें वृद्धि की जाती है, तथा पॉडकास्ट के भाग के रूप में कुछ कमजोरियों के प्रदर्शन भी शामिल होते हैं।
RDPS सुपर वल्नरेबल जावा एप्लिकेशन (RDPS Super Vulnerable Java Application) वास्तव में वही है -- एक सुपर वल्नरेबल जावा एप्लिकेशन जो सभी के लाभ के लिए बनाया गया है, ताकि विभिन्न प्रकार की सामान्य, अक्सर "जटिल" भेद्यताओं को देखा जा सके। यह सॉफ्टवेयर Roniel और DaRon Podcast Show (https://www.youtube.com/channel/UCbj1JFcSJeTuf3qf9GPRemA) के भाग के रूप में बनाया गया था, ताकि हम उन कई भेद्यताओं पर चर्चा कर सकें और दिखा सकें जिनका सामना हम अक्सर करते हैं, उन कई अन्य ऑनलाइन टूल्स की तुलना में अधिक यथार्थवादी तरीके से। उदाहरण शोषण देखने के लिए, कृपया हमारा पॉडकास्ट देखें।
कृपया याद रखें कि यह एप्लिकेशन कई चीजों के प्रति अत्यधिक असुरक्षित (vulnerable) होने के उद्देश्य से बनाया गया है। इसे कहाँ चलाते हैं, इस बारे में सावधान रहें, इसे कौन एक्सेस कर सकता है इसे सीमित करें (Tomcat सर्वर को केवल localhost पर और केवल आपकी व्यक्तिगत मशीन पर सुनना चाहिए)। यदि आप अपनी चीजों की उचित देखभाल नहीं कर सकते, और अपनी इसकी प्रति को हवा में छोड़ देते हैं ताकि कोई भी आपका सामान चुरा ले या आपकी मशीन से गंभीर रूप से समझौता कर ले, तो हम जिम्मेदार नहीं हैं। हम अनुशंसा करते हैं कि आप इसे एक वर्चुअल मशीन (VM) में चलाएँ जो सुरक्षित हो, जिसमें कोई संवेदनशील चीज़ न हो, और जिसका इंटरनेट से कोई कनेक्शन न हो। इस सिस्टम और इसके उदाहरण (instance) को ठीक से सुरक्षित करने में विफलता संभवतः आपके लिए एक बुरा दिन लेकर आएगी। उचित सुरक्षा के बिना आकस्मिक शारीरिक संबंधों की तरह, आप केवल अपने आप को ऐसी स्थिति में डाल रहे हैं जिस पर आपको कभी पछतावा हो सकता है। आपको चेतावनी दी गई है, लेकिन खेलने के लिए प्रोत्साहित भी किया जाता है ;-)
RDPS SVJA एक Java struts 2 एप्लिकेशन से बना है जो react चलाता है। इसे केवल mvn clean package चलाकर बनाया जाता है।
यह target में एक WAR बनाता है -- svja.war। बस WAR को अपने Tomcat webapps फ़ोल्डर में रखें। डिफ़ॉल्ट Tomcat बिल्ड में एप्लिकेशन तक पहुँचने के लिए http://127.0.0.1:8080/svja पर जाएँ।
यदि आप Tomcat 10 या उससे ऊपर चला रहे हैं, तो कृपया अपनी Tomcat context.xml कॉन्फ़िगरेशन फ़ाइल में <Loader jakartaConverter="TOMCAT" /> जोड़ें।
जो लोग इसे शुरू करने के लिए उपयोग करना चाहते हैं, उनके लिए रूट (http://127.0.0.1:8080/svja) में अब Swagger UI और एक बुनियादी OpenAPI स्पेसिफिकेशन (http://127.0.0.1:8080/svja/specification.yaml) उपलब्ध है, जिसे आप उपयोग कर सकते हैं। ध्यान दें कि स्पेसिफिकेशन, और इस प्रकार Swagger UI, केवल सतह को खरोंचता है (असुरक्षित डिसीरियलाइज़ेशन, आदि के बारे में यही सब कुछ है, है न?)।
नीचे सिस्टम में मौजूद कुछ प्रमुख भेद्यताएँ हैं, क्रिया (action) के अनुसार।
admin:admin (application administrator account)
bill:baker (privileged user account)
bob:barker (basic, read-only user account)
/api/authenticate?user.username=admin&user.password=admin
/api/authenticate?user.username=bill&user.password=baker
/api/authenticate?user.username=bob&user.password=barker
प्रमाणीकरण के बाद, आप JSON या Struts का उपयोग करके किसी भी क्रिया (action) को हिट कर सकते हैं।
GET /svja/api/authenticate?user.username=bill&user.password=baker HTTP/1.1
User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:88.0) Gecko/20100101 Firefox/88.0
Host: localhost
Accept: application/json, text/plain, */*
Accept-Language: en-GB,en;q=0.5
Accept-Encoding: gzip, deflate
Content-Length: 0
DNT: 1
Connection: close
Cache-Control: max-age=0
GET /svja/api/authenticate HTTP/1.1
User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:88.0) Gecko/20100101 Firefox/88.0
Host: localhost
Accept: application/json, text/plain, */*
Accept-Language: en-GB,en;q=0.5
Accept-Encoding: gzip, deflate
Content-Type: application/json
Content-Length: 61
DNT: 1
Connection: close
Cache-Control: max-age=0
{
"user": {
"username": "bill",
"password": "baker"
}
}
GET /svja/api/authenticate/federated?user.username=bill%40rdps.local&usernameTranslationRegex=%2F%40rdps%5B.%5Dlocal%2F%2F HTTP/1.1
User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:88.0) Gecko/20100101 Firefox/88.0
Host: localhost
Accept: application/json, text/plain, */*
Accept-Language: en-GB,en;q=0.5
Accept-Encoding: gzip, deflate
Content-Length: 0
DNT: 1
Connection: close
Cache-Control: max-age=0
GET /svja/api/authenticate/federated HTTP/1.1
User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:88.0) Gecko/20100101 Firefox/88.0
Host: localhost
Accept: application/json, text/plain, */*
Accept-Language: en-GB,en;q=0.5
Accept-Encoding: gzip, deflate
Content-Type: application/json
Content-Length: 61
DNT: 1
Connection: close
Cache-Control: max-age=0
{
"user": {
"username": "[email protected]"
},
"usernameTranslationRegex": "/@rdps[.]local//"
}
svjatoken बदलना याद रखें
GET /svja/api/projects?projectId=1 HTTP/1.1
Host: localhost
User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:88.0) Gecko/20100101 Firefox/88.0
Accept: application/json, text/plain, */*
Accept-Language: en-GB,en;q=0.5
Accept-Encoding: gzip, deflate
DNT: 1
Connection: close
Cookie: svjatoken=RaMu5vhFBgL8goV6Ja1ffLnpmcixNuAL7fUP;
Cache-Control: max-age=0
svjatoken बदलना याद रखें
GET /svja/api/projects HTTP/1.1
Host: localhost
User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:88.0) Gecko/20100101 Firefox/88.0
Accept: application/json, text/plain, */*
Accept-Language: en-GB,en;q=0.5
Accept-Encoding: gzip, deflate
Content-Type: application/json
Content-Length: 19
DNT: 1
Connection: close
Cookie: svjatoken=RaMu5vhFBgL8goV6Ja1ffLnpmcixNuAL7fUP;
Cache-Control: max-age=0
{
projectId:1
}
यह एक कार्य-प्रगति (work-in-progress) है और हमने कई और भेद्यताएँ तथा चीज़ें योजनाबद्ध की हैं (जिसमें एक सुपर वल्नरेबल फ्रंटएंड और अन्य सुपर वल्नरेबल एप्लिकेशन शामिल हैं) -- हर कुछ महीनों में हमसे दोबारा जुड़ें और अपडेट, नमूना शोषण और अन्य विचारों के लिए Roniel और DaRon Podcast Show देखें। हम आपको यह भी प्रोत्साहित करते हैं कि भेद्यताओं को कम करने या ठीक करने का तरीका निकालने की कोशिश करें... चीज़ों को तोड़ना आसान है... यह कम करना, ठीक करना और सुरक्षित करना कठिन है। शुभकामनाएँ और शुभ शिकार!