目录

一. 漏洞描述

二. 漏洞验证

poc

三. 漏洞利用


一. 漏洞描述

Docker daemon api是使用url代替命令行来操作docker,docker swarm 是docker下的集群管理工具,在开放2375端口来监听集群容器时,会调用这个api,可以执行docker命令。

二. 漏洞验证

1.环境搭建

使用vulhub的环境

cd /vulhub-master/docker/unauthorized-rce

执行docker-compose up -d启动环境

2. 使用浏览器访问2375端口,通过url的方式调用API,返回{"message":"page not found"}代表存在漏洞,如下

3. 可以使用/version、/info可以查看其他信息

poc


import requests
import argparse
from requests.packages import urllib3
urllib3.disable_warnings()
from colorama import init
init(autoreset=True)
headers={
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:78.0) Gecko/20100101 Firefox/78.0'
}
def url():
	des="docker daemon api 未授权访问漏洞POC"
	parser = argparse.ArgumentParser(description=des)
	parser.add_argument('target_url',type=str,help='The target address,example: http://192.168.140.153')
	args = parser.parse_args() 
	target_url = args.target_url
	print("docker daemon api 未授权访问漏洞POC")
	print("[-]正在执行检测...")
	print(f"[-]目标地址:{target_url}",)
	return target_url

def check(target_url):
	url = target_url + '/version'
	try:
		response = requests.get(url=url,headers=headers,timeout=5,verify=False)
		if response.status_code==200 and 'Platform' in response.text and 'KernelVersion' in response.text:
			print('\033[0;31m[+]存在docker daemon api 未授权访问漏洞\033[0m')
			print(response.text)
		else:
			print('漏洞不存在')
	except:
		print('漏洞不存在')
if __name__ == '__main__':
	target_url = url()
	check(target_url)

三. 漏洞利用

可以利用此漏洞将反弹shell的命令写入计划任务从而执行反弹shell

未完...

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐