docker提权:
接上篇SSH密钥登陆,通过查看账号权限及分组情况,全面了解docker提权的原理及使用方法,从而使账号成功提权至root;本次实验环境靶场来自于暗月(moonsec)师傅,文中内容全由个人理解编制,若有错处,大佬勿喷,个人学艺不精,本文中提到的任何技术都源自于靶场练习,仅供学习参考,请勿利用文章内的相关技术从事非法测试,如因产生的一切不良后果与文章作者无关。
漏洞原理:
当我们的用户具有docker权限的时候,那么我们就可以通过命令下载 alpine容器;
使用容器将容器的目录挂载到宿主的根目录;
之前我们通过ssh密钥获取了web1账号登陆,使用id或groups命令,都可以查看此用户的权限及分组;
这上面可以看出此用户具备docker权限;
我们就可以通过docker提权的方式来获取root权限:
下载镜像:
docker run -v /:/mnt -it alpine
下载完成后,就直接进入这个容器里面:
这里之前因为环境有运行,所以先进行删除;
docker删除镜像命令如下:
通过ps查看的镜像使用:
docker rm 镜像名
通过images查看的镜像使用:
docker rmi 名称
** 进入mnt这个目录:**
cd /mnt/
** 查看目录结构 ,而这个目录就是这个宿主机的根目录:**
ls -al
我们在用本机里面的来进行对比:
成功提权:
通过两个截图对比,说明成功通过docker容器里面的/mnt将宿主机的根目录进行挂载:
我们可以在查看权限,发现已是root权限,并查看/etc/shadow:
cat etc/shadow
成功提权,我们同样可以使用命令将用户筛选出来,然后通过john来进行破解:
cat etc/shadow | grep bash
这里唯一需要注意的点,在这个容器里面查看需要少输入一个/,和我们平时查看的区别 。