redis漏洞利用
前言
说起来redis的安全问题被大众关注也有一些时间了,但是日常生活中还是有很多运维人员不知道redis如何配置会比较安全,一部分安全测试人员对这个漏洞利用不是很熟悉,所以就有了这篇文章。在此之前我第一次遇到这个问题的时候也百度很多前辈的文章看了一下,但是还是觉得过程很繁琐,操作起来不是很方便。我自己就搭建了一个环境做了一次漏洞复现实验,这里把过程记录下来分享给大家,希望安全人员以后遇到该漏洞的利用能够快速的应对,运维人员也能很清晰的知道如何修复该问题。
实验环境
(1)一台安装好redis的服务器
系统版本:CentOS Linux release 7.5.1804 (Core)
redis版本:Redis 4.0.6 (00000000/0) 64 bit
(2)一台kali系统的电脑
系统版本:Linux kali 4.15.0-kali2-amd64 #1 SMP Debian 4.15.11-1kali1 (2018-03-21) x86_64 GNU/Linux
漏洞利用
漏洞利用原理其实很容易理解,就是利用redis对系统进行写文件来获取系统权限,其中包括了写一个公钥、写一个webshell、写一个计划任务。那么我们今天只演示一下利用metasploit对redis的密码**和上传文件利用,过程很简单所以读者学起来也很方便。
首先我们启动一个密码为admin的redis服务
(1)更改redis密码配置
(2)启动redis
(3)启动metasploit并选用相对应的EXP
说明:
auxiliary/scanner/redis/file_upload #该exp功能为上传本地的文件到目标服务器。
auxiliary/scanner/redis/redis_login #该exp功能是对redis的密码进行枚举,亲测速度很快。
auxiliary/scanner/redis/redis_server #该exp功能是验证枚举或者其他手段得到的redis密码是否正确,该功能会执行一个info命令并返回执行结果。
(4)使用auxiliary/scanner/redis/redis_login进行枚举redis密码
(5)使用auxiliary/scanner/redis/redis_server确认密码的可用性
(6)使用auxiliary/scanner/redis/redis_server上传文件
1.先在本地生成公钥并保存到authorized_keys文件中,注意这里要在文件内容得前面和后面都加上\n\n\n才行。
2.试用auxiliary/scanner/redis/file_upload模块进行上传authorized_keys文件
注:当然我们也可以通过上传一个cron反弹一个shell出来,或者得到WEB绝对路径后上传一个WEBSHELL来获得更多得权限,原理都是通过redis写文件这里就不一一演示了,只要把上传的文件路径改一下就可以了。
修改建议
1.在redis.conf配置文件中找到requirepass去掉前面的# 并在后面将foobared或者一个弱密码 改成高强度的密码,原因是redis验证密码的速度很快,给攻击者进行高速的**密码提供了一个良好的基础。
2.在设定了高强度密码的基础上还需要做访问限制,限制白名单内IP才能访问,如果项目可以最好设置只允许本地访问。