Apache NiFi 高版本命令执行利用
字数 1137 2025-08-22 12:22:30
Apache NiFi 高版本命令执行漏洞分析与利用
1. 漏洞背景
Apache NiFi 存在一个远程代码执行漏洞,最早由 Rapid7 在 2020 年公布。该漏洞利用 NiFi API 自动创建 ExecuteProcess 处理器来执行系统命令。
相关资源:
- Rapid7 漏洞详情: https://www.rapid7.com/db/modules/exploit/multi/http/apache_nifi_processor_rce/
- GitHub PoC: https://github.com/imjdl/Apache-NiFi-Api-RCE
2. 漏洞原理
该漏洞利用 Apache NiFi 的弱配置:
- 早期版本的 NiFi 默认安装不安全
- 默认通过 HTTP 运行
- 无需用户密码即可访问
- 通过 NiFi API 可以创建、配置和运行 ExecuteProcess 处理器执行命令
3. 环境搭建
3.1 下载与配置
- 下载 NiFi 1.28.1 版本
- 修改配置文件
conf/nifi.properties:
# Site to Site properties
nifi.remote.input.host=
nifi.remote.input.secure=false
nifi.remote.input.socket.port=
nifi.remote.input.http.enabled=true
nifi.remote.input.http.transaction.ttl=30 sec
nifi.remote.contents.cache.expiration=30 secs
# web properties
nifi.web.http.host=127.0.0.1
nifi.web.http.port=8080
nifi.web.http.network.interface.default=
nifi.web.https.host=
nifi.web.https.port=
3.2 启动 NiFi
运行命令:
bin/nifi.cmd run
4. 漏洞验证与利用
4.1 通过 UI 界面利用
-
创建处理器:
- 拖拽一个
ExecuteProcess处理器到画布 - 注意:危险的处理器通常有小盾牌标识
- 拖拽一个
-
连接处理器:
- 再拖拽一个
LogMessage处理器 - 将两个处理器连接起来
- 再拖拽一个
-
配置 ExecuteProcess:
- 配置要执行的命令
- 启动处理器
-
查看结果:
- 右键处理器,选择 "List queue" 查看命令执行结果
4.2 通过 API 利用(自动化)
GitHub PoC 的思路:
- 获取 group 组信息
- 创建 processors
- 传递 cmd 命令实现命令执行
当前 PoC 的局限性:
- 没有集成身份验证
- 没有命令执行回显
5. 防御建议
-
认证配置:
- 不要使用默认的无认证配置
- 为 NiFi 设置强密码
-
访问控制:
- 限制 NiFi 的访问权限
- 对危险处理器(如 ExecuteProcess)设置严格的权限控制
-
监控措施:
- 监控 ExecuteProcess 的创建和使用
- 检测未授权访问尝试
-
安全配置:
- 使用 HTTPS 替代 HTTP
- 遵循官方安全配置指南
6. 蓝队检测建议
可以通过以下特征检测恶意活动:
- 异常的 ExecuteProcess 处理器创建
- 未授权访问尝试
- 可疑的命令执行模式
7. 总结
Apache NiFi 的 ExecuteProcess 处理器功能在配置不当时可被恶意利用执行系统命令。管理员应确保:
- 启用认证
- 限制访问
- 监控可疑活动
- 及时更新到安全版本