Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
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é.

··Flux·Contact·Confidentialité·© 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
398il 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
  • root@kitploit:~
    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
    root@kitploit:~
    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
    root@kitploit:~
    mkdir data
    touch data/myid
    
    • Démarrer zookeeper
    root@kitploit:~
    cd /private/var/tmp/zookeeper-3.3.3/bin
    ./zkServer.sh start
    
    • Installer dubbo-samples-api
    root@kitploit:~
    git clone https://github.com/apache/dubbo-samples.git
    cd dubbo-samples/dubbo-samples-api
    
    • Modifier dubbo-samples/dubbo-samples-api/pom.xml
    root@kitploit:~
    <?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

    root@kitploit:~
    <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 :

    root@kitploit:~
    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 :
    root@kitploit:~
    <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