免责声明:本公众号 太乙Sec实验室 所提供的实验环境均是本地搭建,仅限于网络安全研究与学习。旨在为安全爱好者提供技术交流。任何个人或组织因传播、利用本公众号所提供的信息而进行的操作,所导致的直接或间接后果及损失,均由使用者本人负责。太乙Sec实验室及作者对此不承担任何责任
在docker上配置了远程访问docker节点上会开放一个TCP端口2375,绑定在0.0.0.0上,如果没有做限制的话,攻击者就可以通过Docker未授权来控制服务器。
(注:本实验应在获得明确授权的教学网络环境中开展,严禁在生产环境进行类似操作)
在这里拉取一个镜像文件busybox(id)
docker -H tcp://172.16.55.3:2375 run -it -v /:/mnt 19485c79a9bb /bin/bash
这条命令的意思是启动一个image ID为19485c79a9bb的容器,并且将该宿主机的根目录挂在到容器的/mnt目录下,最后启动之后就会获得该容器宿主机的shell
Whoami发现是root
直接cd mnt/root/
看到到服务器上的root下的文件。在kali生成:ssh-keygen -t rsa 看下生成的文件
id_rsaid_rsa.pub再回到远程主机上来使用echo指令将公钥写进去,达到远程免密ssh连接。
ssh -i id_rsa root@ip
总结
本次攻击围绕校园大数据管理后台 Docker API 未授权漏洞展开,我将按照操作步骤梳理出完整的攻击链路:
- 信息收集
:使用 fscan 工具扫描发现目标 IP 172.16.55.3 响应 code=200,存在漏洞可疑性,后借助 GOBY 工具进一步确认资产信息,锁定漏洞。 - 漏洞验证
:访问http://172.16.55.3:2375/info,验证 Docker API 未授权访问漏洞存在。 - 权限获取
:拉取 busybox 镜像,执行 docker -H tcp://172.16.55.3:2375 run -it -v /:/mnt 19485c79a9bb /bin/bash
命令,将宿主机根目录挂载到容器 /mnt 目录,获取容器宿主机的 root 权限 Shell。 - 持久化控制
:在 Kali 系统中通过 ssh-keygen -t rsa
生成 SSH 密钥对,将公钥写入目标主机~/.ssh/authorized_keys
文件,实现使用私钥ssh -i id_rsa root@ip
远程免密登录控制 。
往期精彩回顾
关注我,了解更多知识,别忘了关注+点赞哦!
原文始发于微信公众号(太乙Sec实验室):某校大数据管理后台Docker API未授权漏洞
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论