Docker远程访问get(root)shell姿势

本文揭示了Docker默认开启的2375端口带来的安全漏洞,详细介绍了如何利用该端口远程执行Docker命令,获取容器及宿主机权限的过程,并提出关闭2375端口公网访问的防范措施。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

0x00 概述

在用swarm来管理dockers容器集群时默认开启了2375端口,通过远程访问docker run -H tcp://ip:2375 $command 可任意执行docker命令。这个漏洞在一段时间的影响还是挺严重的。通过这个远程访问接口,我么可以获得容器访问权限(get container shell),要想获得宿主机shell,可以在启动容器时通过挂载根目录到容器内的目录,可写ssh公钥到跟文件,进而无密码ssh访问宿主机,这样还是root权限哦

0x01 启动容器,挂载目录

锁定了一个开启了2375端口的目标后便可以启动容器了,命令:docker run -it -v /:/usr $image_name /bin/sh,然后在自己主机上生成ssh公钥(ssh-keygen -t rsa),将id_rsa.pub内容写到容器所在宿主机的/root/.ssh/目录下。如下图:

0x02 获取root shell:

ssh连接容器所在ip:

0x03 总结

docker作为新兴虚拟技术也获得广泛认可,各大企业也随之迁移部署docker,作为云平台的支撑,应谨慎地开启与外网交互接口,排查一切外网交互通道,以防黑客可乘之机。这里紧要关头还是赶紧限制2375端口的公网访问权限吧。

转载于:https://www.cnblogs.com/Joe-Z/p/5690589.html

### 配置 PyCharm 使用 SSH 连接到远程 Docker 容器 为了使 PyCharm 能够通过 SSH 访问并管理位于远程服务器上的 TensorFlow GPU Docker 容器,需遵循特定设置流程。此过程涉及调整服务器端口映射以防止冲突,并确保目标容器内已准备好必要的开发环境。 #### 设置远程服务器与Docker容器间的SSH通信 由于直接利用标准22号端口可能导致主机与容器间的服务竞争问题,因此建议重新指定一个不常用的高编号端口作为替代方案;文中提到的选择是42022端口用于转发来自外部网络至内部Docker实例内的SSH服务请求[^1]。 #### 创建支持SSH登录的自定义Docker镜像 对于希望实现从IDE无缝接入容器化应用的需求而言,在构建阶段就应考虑加入OpenSSH Server组件及相关配置文件,从而允许后续建立安全shell会话。具体做法可参照官方文档或其他教程编写适用于项目的`Dockerfile`脚本,其中包含安装openssh-server包、设定root密码(仅限测试用途)、暴露适当端口号等指令[^2]。 ```dockerfile FROM tensorflow/tensorflow:latest-gpu-py3 RUN apt-get update && \ apt-get install -y openssh-i 's/#PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config EXPOSE 22/tcp CMD service ssh start && tail -f /dev/null ``` #### 在PyCharm中添加新的Remote Interpreter 打开项目解释器选项卡后点击齿轮图标选择“Add”,接着挑选“SSH Interpreter”。按照向导提示输入远程机器地址连同之前规划好的非标准端口数值(即42022),提供认证凭证完成身份验证环节。之后选取基于上述定制版基础之上运行着的目标容器作为Python执行上下文载体[^3]。 #### 测试连接稳定性及功能可用性 确认以上各项参数无误提交保存更改后,尝试编译简单程序片段检验整个链路是否通畅有效。如果一切正常,则表明已经成功搭建起由本地集成开发环境通往云端计算资源之间的桥梁。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值