
Exploit para CVE-2021-30180 dirigido al marco RPC de Apache Dubbo, que permite la ejecución remota de código mediante solicitudes RPC manipuladas en versiones vulnerables.
Apache Dubbo es un framework RPC de código abierto de alto rendimiento basado en Java. Visite el sitio oficial para una guía de inicio rápido y documentación, así como la wiki para noticias, preguntas frecuentes y notas de las versiones.
Ahora estamos recopilando información de los usuarios de Dubbo para ayudarnos a mejorarlo aún más. Le agradecemos que nos apoye completando su información en el issue#1012: Wanted: who's using dubbo, ¡gracias! :)

El siguiente fragmento de código proviene de Dubbo Samples. Puede clonar el proyecto de ejemplo y entrar en el subdirectorio dubbo-samples-api antes de continuar.
# git clone https://github.com/apache/dubbo-samples.git
# cd dubbo-samples/java/dubbo-samples-api
Hay un archivo README en el directorio dubbo-samples-api. Recomendamos consultar los ejemplos de ese directorio siguiendo las instrucciones que se indican a continuación:
<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);
}
Consulte api/GreetingsService.java en 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;
}
}
Consulte provider/GreetingsServiceImpl.java en 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();
}
}
Consulte provider/Application.java en 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);
}
}
Consulte consumer/Application.java en GitHub.
# mvn clean package
# mvn -Djava.net.preferIPv4Stack=true -Dexec.mainClass=org.apache.dubbo.samples.client.Application exec:java
El consumidor mostrará hi, dubbo en pantalla.
Si desea probar las funciones más avanzadas, puede compilar con los siguientes comandos. (Se necesita Java 1.8 para compilar la rama master)
mvn clean install
Lista de correo:
Errores: Issues
Gitter: Canal de Gitter
Twitter: @ApacheDubbo
Consulte CONTRIBUTING para obtener detalles sobre cómo enviar parches y el flujo de trabajo de contribuciones.
Good first issue o Help wanted.Siga la plantilla para reportar cualquier problema.
Reporte las vulnerabilidades de seguridad a nosotros de forma privada.
dubbo para reunir todos los proyectos relevantes de Dubbo que aún no son apropiados para el grupo apacheEl software Apache Dubbo está licenciado bajo la Apache License Version 2.0. Consulte el archivo LICENSE para obtener más detalles.