jenkins exploit RCE
Groovyやadminの権限、さらにはbuildのボタンがなくてもjenkinsでRCEするテクニック。 「ビルド実行」または「Build Now」のボタンがなくても、「ビルド・トリガ」を設定すればよい。
定期的に実行
まずはジョブを作成する。「フリースタイル・プロジェクトのビルド」を選択する。
https://scrapbox.io/files/62aaaeb19d466f001d35c10a.png
「ビルド・トリガ」の「定期的に実行」で次を設定する:
code:code
*/1 * * * *
これは「一分経過するごとに実行」という意味(MINUTE HOUR DOM MONTH DOWの順番)。
https://scrapbox.io/files/62aaaec4ca2f48001d676e5e.png
次に「ビルド」において、「Windowsバッチコマンドの実行」を選択する(Linuxコマンドを実行したい場合は「シェルの実行」を選択する)。
https://scrapbox.io/files/62aaaed19966940023fcf0d1.png
whoamiコマンドの実行を設定してみる:
https://scrapbox.io/files/62aaaef323fed2001d0fba38.png
(単純にwhoamiだけでも正しく実行された。)
あとは「保存」を押せばOK。その後一分おきにコマンドが実行される:
https://scrapbox.io/files/62aaaf0168b084001de84ed6.png
リモートからビルド
「ビルド・トリガ」において、定期的に実行ではなく「リモートからビルド」を選択する。
まずAPIトークンを生成する:
https://scrapbox.io/files/62aaaf2cf768ef0023f8e708.png
(mytoken : 11c6c5980f29af0b83b424e9e363238e12)
ジョブ作成の際に、 ビルド・トリガ → リモートからビルド と進んだら、「認証トークン」の欄に先に生成したAPIトークンの名前を指定する:
https://scrapbox.io/files/62aaaf57e3b3880020c763de.png
(「ビルド」の内容は上と同じとする。)
これで保存してジョブの作成は完了。
これをリモートビルドするには、次のフォーマットをしてURLにアクセスする:
code:url
今回の場合は
code:bash
その後、定期的に実行の時を同じようにjenkinsのダッシュボード上で実行結果が表示される。