简介
不另作说明漏洞环境均为vulhub。
参考链接:
- https://zhuanlan.zhihu.com/p/64595171
- 官网:https://docs.celeryproject.org/en/stable/
- git仓库:https://github.com/celery/celery
Celery 是一个 基于python开发的分布式异步消息任务队列,通过它可以轻松的实现任务的异步处理, 如果你的业务场景中需要用到异步任务,就可以考虑使用celery。(来自知乎)
Celery <4.0 Redis未授权访问+Pickle反序列化利用
参考链接:
在Celery < 4.0版本默认使用Pickle进行任务消息的序列化传递,当所用队列服务(比如Redis、RabbitMQ、RocketMQ等等等)存在未授权访问问题时,可利用Pickle反序列化漏洞执行任意代码。
漏洞复现
启动环境,在vulhub中的版本为Celery 3.1.23 + Redis。
在漏洞环境目录中,存在exploit.py
文件,该文件是漏洞的利用脚本,仅支持在python3
环境下使用。在使用过程中有可能会遇到缺少python模块的情况,缺少哪个使用pip
安装即可。
python3 exploit.py [主机IP]
执行完成后,通过docker-compose logs celery
命令查看日志信息,可以看到如下信息报错:
然后通过docker-compose exec celery ls -l /tmp
命令,在celery服务中运行ls -l /tmp
,可以看到已成功创建celery_success
。
这个漏洞的利用还是与其他漏洞有些区别的,执行其他命令得修改exploit.py
脚本。
漏洞修复
emm,升级版本?现在已经是5.2了(21年10月18日);或者将未授权访问问题修复。