Skip to content
KitploitKITPLOIT
OutilsExploitsBlog
Log in
Soumettre
OutilsExploitsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

FluxContactConfidentialité© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
CVE-2021-43297-POC — Preuve de concept pour CVE-2021-43297, permettant l'exécution de code à distance dans Apache Dubbo <= 2.7.13 via la désérialisation Hessian-Lite. | Kitploit
Outils/GitHubGitHub/bitterzzzz/cve-2021-43297-poc
Analyse des VulnérabilitésExploitationExploitation d'Applications WebTests d'IntrusionDéveloppement de Charges Utiles
GitHubbitterzzzz/cve-2021-43297-poc

CVE-2021-43297-POC

Preuve de concept pour CVE-2021-43297, permettant l'exécution de code à distance dans Apache Dubbo <= 2.7.13 via la désérialisation Hessian-Lite.

Voir le dépôt
3987il y a 4 ansVérifié par Kitploit

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

CVE-2021-43297

Description de la vulnérabilité

Il existe un risque potentiel d'attaque RCE dans Dubbo Hessian-Lite 3.2.11 et les versions antérieures. Lorsque Hessian-Lite rencontre une exception de sérialisation, il affiche des informations associées, ce qui peut déclencher la méthode toString de certains Beans malveillants personnalisés, entraînant ainsi une attaque RCE.

Principe

Le POC initial ne pouvait réaliser une RCE que sur Apache Dubbo<=2.7.8, le principe est décrit dans l'article de先知(modifié après approbation). Après la soumission, des recherches supplémentaires ont permis de réaliser une RCE sur Apache Dubbo<=2.7.13, l'analyse du principe est disponible dans mon article de blog

L'effet est le suivant

Conditions d'utilisation du POC :

  • apache dubbo <= 2.7.13 ou la version correspondante d'alibaba dubbo
  • Connaître l'IP et le port du fournisseur dubbo, et pouvoir y accéder
  • Le fournisseur dubbo dispose d'une chaîne XBean
  • Le serveur du fournisseur dubbo autorise les requêtes HTTP GET sortantes

Installation de l'environnement et exécution du POC

  • Télécharger d'abord zookeeper
wget http://archive.apache.org/dist/zookeeper/zookeeper-3.3.3/zookeeper-3.3.3.tar.gz
tar zxvf zookeeper-3.3.3.tar.gz
cd zookeeper-3.3.3
cp conf/zoo_sample.cfg conf/zoo.cfg
  • Configuration
vim conf/zoo.cfg
# The number of milliseconds of each tick
tickTime=2000
# The number of ticks that the initial
# synchronization phase can take
initLimit=10
# The number of ticks that can pass between
# sending a request and getting an acknowledgement
syncLimit=5
# the directory where the snapshot is stored.
dataDir=/chemin/absolu/zookeeper-3.3.3/data
# the port at which the clients will connect
clientPort=2181
  • Modifier le chemin absolu, placer un fichier myid dans le répertoire data
mkdir data
touch data/myid
  • Démarrer zookeeper
cd /private/var/tmp/zookeeper-3.3.3/bin
./zkServer.sh start
  • Installer dubbo-samples-api
git clone https://github.com/apache/dubbo-samples.git
cd dubbo-samples/dubbo-samples-api
  • Modifier dubbo-samples/dubbo-samples-api/pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>org.example</groupId>
    <artifactId>dubbomytest</artifactId>
    <packaging>pom</packaging>
    <version>1.0-SNAPSHOT</version>
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>8</source>
                    <target>8</target>
                </configuration>
            </plugin>
        </plugins>
    </build>


    <properties>
        <source.level>1.8</source.level>
        <target.level>1.8</target.level>
        <dubbo.version>2.7.6</dubbo.version>
        <junit.version>4.12</junit.version>
        <docker-maven-plugin.version>0.30.0</docker-maven-plugin.version>
        <jib-maven-plugin.version>1.2.0</jib-maven-plugin.version>
        <maven-compiler-plugin.version>3.7.0</maven-compiler-plugin.version>
        <maven-failsafe-plugin.version>2.21.0</maven-failsafe-plugin.version>
        <image.name>${project.artifactId}:${dubbo.version}</image.name>
        <java-image.name>openjdk:8</java-image.name>
        <dubbo.port>20880</dubbo.port>
        <zookeeper.port>2181</zookeeper.port>
        <main-class>org.apache.dubbo.samples.provider.Application</main-class>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.apache.dubbo</groupId>
            <artifactId>dubbo</artifactId>
            <version>2.7.3</version>
        </dependency>
        <dependency>
            <groupId>org.apache.dubbo</groupId>
            <artifactId>dubbo-common</artifactId>
            <version>2.7.3</version>
        </dependency>

        <dependency>
            <groupId>org.apache.dubbo</groupId>
            <artifactId>dubbo-dependencies-zookeeper</artifactId>
            <version>2.7.3</version>
            <type>pom</type>
        </dependency>
        <dependency>
            <groupId>org.apache.xbean</groupId>
            <artifactId>xbean-naming</artifactId>
            <version>4.15</version>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>${junit.version}</version>
            <scope>test</scope>
        </dependency>

    </dependencies>

</project>
  • Paquet xbean

Il doit être installé à la fois côté fournisseur et localement, dépendance comme suit

<dependency>
    <groupId>org.apache.xbean</groupId>
    <artifactId>xbean-naming</artifactId>
    <version>4.15</version>
</dependency>
  • Compilation et démarrage

Ajouter dubbo-samples-api dans IDEA, veiller à modifier les ports de zookeeper et dubbo, et modifier également le code dans Application.java :

service.setRegistry(new RegistryConfig("zookeeper://" + zookeeperHost + ":" + zookeeperPort+"/?timeout=250000"));

Pour éviter que les versions récentes de dubbo ne mettent trop de temps à se connecter à zookeeper et échouent

Démarrer Application.java dans dubbo-samples-api dans idea

Après le démarrage, la sortie dubbo service started indique que dubbo a démarré

  • Exécuter le poc Ajouter les dépendances localement :
<dependency>
   <groupId>org.apache.dubbo</groupId>
   <artifactId>dubbo-common</artifactId>
   <version>2.7.3</version>
</dependency>
<dependency>
   <groupId>org.apache.dubbo</groupId>
   <artifactId>dubbo</artifactId>
   <version>2.7.3</version>
</dependency>
<dependency>
   <groupId>org.apache.dubbo</groupId>
   <artifactId>dubbo-dependencies-zookeeper</artifactId>
   <version>2.7.3</version>
   <type>pom</type>
</dependency>
<dependency>
   <groupId>com.caucho</groupId>
   <artifactId>hessian</artifactId>
   <version>4.0.51</version>
</dependency>

Compiler ExecTest.java, puis modifier le chemin de ExecTest.class dans HttpServer.java, exécuter ensuite la méthode main de HttpServer, et enfin exécuter la méthode main de HessianLitePoc

Télécharger l’outil