漏洞概述
在 Apache DolphinScheduler 3.3.2 的默认部署(尤其是 standalone 单机部署)中,application.yaml 将 Python Gateway 服务默认开启 (enabled: true),绑定到 0.0.0.0 并使用固定的认证令牌 jwUDzpLsNKEFER4*a8gruBH_GsAurNxU7A@Xc。任何能够访问该端口的攻击者都可利用该令牌调用 Python Gateway 提供的管理接口。
网关内部以内置的 dummyAdminUser(管理员权限)执行操作,因此攻击者能直接创建租户、用户、项目、工作流等敏感资源,最终完全接管任务调度流程。
影响范围
- 默认安装的 DolphinScheduler standalone 容器或使用官方默认单机配置的部署以及分布式开启python-gateway配置。
- 网关对外监听
0.0.0.0,未限制来源访问。 - 网关仍使用默认令牌且未关闭服务。
技术细节
dolphinscheduler-standalone-server/src/main/resources/application.yaml中的默认配置:1
2
3
4
5python-gateway:
enabled: true
auth-token: jwUDzpLsNKEFER4*a8gruBH_GsAurNxU7A@Xc
gateway-server-address: 0.0.0.0
gateway-server-port: 25333PythonGateway启动时只要令牌非空即接受连接,并使用dummyAdminUser调用各类 Service。只需知道服务地址,即可利用
py4j客户端连接网关,执行任意管理操作。下面验证通过未授权进行用户创建并登录。
复现脚本
vul/python_gateway_poc.py 已提供自动化验证流程:
- 接收目标 URL,自动解析 Web 地址(假设 Python Gateway 与 Web 在同一主机)。
- 使用默认令牌连接 Python Gateway。
- 创建租户
eviltenant001与账号eviluser001/Passw0rd!(如已存在则跳过)。 - 调用
/dolphinscheduler/login验证新账号可登录。
使用说明
1. 安装依赖
PoC 依赖 py4j:
1 | pip install py4j |
2. 运行 PoC
只需提供 Web 访问地址(包含协议与端口):
1 | python3 vul/python_gateway_poc.py http://目标IP或域名:端口 |
执行成功时输出如下信息:
1 | [+] Created/loaded tenant id=... |
若失败则返回异常原因(例如无法连接、令牌被修改等)。
3. 自定义参数(可选)
脚本支持以下可选参数(可通过 --help 查看):
--gateway-port:Python Gateway 端口,默认 25333。--auth-token:网关认证令牌,默认值为官方配置的默认令牌。--tenant-code、--queue-name、--username、--password等可用于自定义要创建的资源。
示例:
1 | python3 vul/python_gateway_poc.py http://10.0.0.5:12345 \ |
验证后的建议整改
若无 Python Gateway 需求,建议立即在配置中关闭:
1
2python-gateway:
enabled: false如必须启用:
- 将
auth-token修改为强随机值,并妥善保管。 - 将
gateway-server-address改为127.0.0.1或内网特定地址。 - 通过防火墙/ACL 限制访问来源。
- 将
清理 PoC 创建的租户/用户(
eviltenant001、eviluser001)。建议官方在启动时检测默认配置并给出高危提示或拒绝启动,同时为网关操作添加更精细的权限控制。
注意事项
- 本脚本仅用于安全测试目的,请勿在未授权环境中使用。
- 脚本依赖可连通的 Python Gateway 与 Web 服务,若部署采用不同主机或端口,需要对应调整参数。
- 若目标关闭了 Python Gateway 或修改了认证方式,脚本将无法利用。
利用脚本
python3 1.py localhost:12345
复现
该环境为standalone 单机部署容器
当前用户如下

执行脚本
python3 python_gateway_poc.py http://localhost:12345

成功添加用户
eviluser001/Passw0rd!







