
Exploit para CVE-2021-30180 direcionado ao framework Apache Dubbo RPC, permitindo execução remota de código através de requisições RPC maliciosas em versões vulneráveis.
Apache Dubbo é um framework RPC open-source de alto desempenho baseado em Java. Visite o site oficial para início rápido e documentações, bem como o wiki para notícias, perguntas frequentes e notas de versão.
Estamos agora coletando informações de usuários do Dubbo para nos ajudar a melhorar ainda mais o Dubbo. Apoie-nos gentilmente acrescentando suas informações em issue#1012: Procuram-se: quem está usando o Dubbo, obrigado :)

O trecho de código a seguir vem do Dubbo Samples. Você pode clonar o projeto de exemplo e entrar no subdiretório dubbo-samples-api antes de prosseguir.
# git clone https://github.com/apache/dubbo-samples.git
# cd dubbo-samples/java/dubbo-samples-api
Há um arquivo README no diretório dubbo-samples-api. Recomendamos consultar os exemplos nesse diretório seguindo as instruções abaixo:
<properties>
<dubbo.version>2.7.8</dubbo.version>
</properties>
<dependencies>
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo</artifactId>
<version>${dubbo.version}</version>
</dependency>
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo-dependencies-zookeeper</artifactId>
<version>${dubbo.version}</version>
<type>pom</type>
</dependency>
</dependencies>
package org.apache.dubbo.samples.api;
public interface GreetingsService {
String sayHi(String name);
}
Veja api/GreetingsService.java no GitHub.
package org.apache.dubbo.samples.provider;
import org.apache.dubbo.samples.api.GreetingsService;
public class GreetingsServiceImpl implements GreetingsService {
@Override
public String sayHi(String name) {
return "hi, " + name;
}
}
Veja provider/GreetingsServiceImpl.java no GitHub.
package org.apache.dubbo.samples.provider;
import org.apache.dubbo.config.ApplicationConfig;
import org.apache.dubbo.config.RegistryConfig;
import org.apache.dubbo.config.ServiceConfig;
import org.apache.dubbo.samples.api.GreetingsService;
import java.util.concurrent.CountDownLatch;
public class Application {
private static String zookeeperHost = System.getProperty("zookeeper.address", "127.0.0.1");
public static void main(String[] args) throws Exception {
ServiceConfig<GreetingsService> service = new ServiceConfig<>();
service.setApplication(new ApplicationConfig("first-dubbo-provider"));
service.setRegistry(new RegistryConfig("zookeeper://" + zookeeperHost + ":2181"));
service.setInterface(GreetingsService.class);
service.setRef(new GreetingsServiceImpl());
service.export();
System.out.println("dubbo service started");
new CountDownLatch(1).await();
}
}
Veja provider/Application.java no GitHub.
# mvn clean package
# mvn -Djava.net.preferIPv4Stack=true -Dexec.mainClass=org.apache.dubbo.samples.provider.Application exec:java
package org.apache.dubbo.samples.client;
import org.apache.dubbo.config.ApplicationConfig;
import org.apache.dubbo.config.ReferenceConfig;
import org.apache.dubbo.config.RegistryConfig;
import org.apache.dubbo.samples.api.GreetingsService;
public class Application {
private static String zookeeperHost = System.getProperty("zookeeper.address", "127.0.0.1");
public static void main(String[] args) {
ReferenceConfig<GreetingsService> reference = new ReferenceConfig<>();
reference.setApplication(new ApplicationConfig("first-dubbo-consumer"));
reference.setRegistry(new RegistryConfig("zookeeper://" + zookeeperHost + ":2181"));
reference.setInterface(GreetingsService.class);
GreetingsService service = reference.get();
String message = service.sayHi("dubbo");
System.out.println(message);
}
}
Veja consumer/Application.java no GitHub.
# mvn clean package
# mvn -Djava.net.preferIPv4Stack=true -Dexec.mainClass=org.apache.dubbo.samples.client.Application exec:java
O consumidor exibirá hi, dubbo na tela.
Se você quiser experimentar os recursos de ponta, pode compilar com os seguintes comandos. (Java 1.8 é necessário para compilar o branch master)
mvn clean install
Lista de e-mails:
Erros: Issues
Gitter: Canal Gitter
Twitter: @ApacheDubbo
Veja CONTRIBUTING para detalhes sobre como enviar patches e o fluxo de trabalho de contribuição.
Good first issue ou Help wanted.Por favor, siga o modelo para relatar quaisquer problemas.
Por favor, relate vulnerabilidades de segurança para nós de forma privada.
dubbo para reunir todos os projetos relevantes do Dubbo que ainda não estão no grupo apache.O software Apache Dubbo é licenciado sob a Apache License Versão 2.0. Consulte o arquivo LICENSE para obter detalhes.