中间件漏洞(redis)

目录

1.Redis服务器被挖矿案例

2.redis常见用途

3.redis环境配置

4.redis的持久化机制

5.redis动态修改配置

6.webshell提权案例

7.定时任务+bash反弹连接提权案例

8.SSH Key提权案例

9.redis安全加固分析


1.Redis服务器被挖矿案例

我没有体验过,那就看看别人的把

记一次阿里云服务器因Redis被【挖矿病毒crypto和pnscan】攻击的case,附带解决方案_容器里的redis会被攻击吗-CSDN博客

2.redis常见用途

缓存、数据共享分布式、分布式锁、全局 ID、计数器、限流、位统计、购物车、用户消息时间线 timeline、消息队列、抽奖、点赞、签到、打卡、商品标签、商品筛选、用户关注、推荐模型、排行榜.

1.缓存:字符类型缓存

例如:热点数据缓存(例如报表、明星出轨),对象缓存、全页缓存、可以提升热点数据的访问数据。

2.数据共享分布式:字符类型

因为redis是分布式的独立服务,可以在多个应用之间共享

例如:分步式session

<dependency> <groupId>org.springframework.session</groupId> <artifactId>spring-session-data-redis</artifactId> 
</dependency>

3.分布式锁:字符串类型

setnx方法,只有不存在时才能添加成功,返回true

public static boolean getLock(String key) {Long flag = jedis.setnx(key, "1");if (flag == 1) {jedis.expire(key, 10);}return flag == 1;
}public static void releaseLock(String key) {jedis.del(key);
}

4.全局ID

int型,incrby,利用原子性

incrby userid 1000

分库分表的场景,一次性拿一段

5.计数器

int型 ,incr方法

例如:文章的阅读量,微博点赞量,允许一定的延迟,先写入redis再定时同步到数据库

6.限流

int型,incr方法

以访问者的ip和其他信息作为key,访问一次增加一次次数,超过次数则返回fslse

7.位统计

string型,bitcount(1.6.6的bitmap数据结构介绍)

字符以8为二进制存储

set k1 a
setbit k1 6 1
setbit k1 7 0
get k1 
/* 6 7 代表的a的二进制位的修改
a 对应的ASCII码是97,转换为二进制数据是01100001
b 对应的ASCII码是98,转换为二进制数据是01100010因为bit非常节省空间(1 MB=8388608 bit),可以用来做大数据量的统计。
*/

例如:在线用户统计,留存用户统计

setbit onlineusers 01 
setbit onlineusers 11 
setbit onlineusers 20

支持按位与、按位或等等操作

BITOPANDdestkeykey[key...] ,对一个或多个 key 求逻辑并,并将结果保存到 destkey 。       
BITOPORdestkeykey[key...] ,对一个或多个 key 求逻辑或,并将结果保存到 destkey 。 
BITOPXORdestkeykey[key...] ,对一个或多个 key 求逻辑异或,并将结果保存到 destkey 。 
BITOPNOTdestkeykey ,对给定 key 求逻辑非,并将结果保存到 destkey 。

计算出7天都在线的用户

BITOP "AND" "7_days_both_online_users" "day_1_online_users" "day_2_online_users" ...  "day_7_online_users"

8.购物车

string或hash,所有String可以做的hash都可以做

  • key:用户id;field:商品id;value:商品数量。

  • +1:hincr。-1:hdecr。删除:hdel。全选:hgetall。商品数:hlen。

9.用户消息时间线timeline

list,双向链表,直接作为timeline就好了。插入有序

10、消息队列

List提供了两个阻塞的弹出操作:blpop/brpop,可以设置超时时间

    blpop:blpop key1 timeout 移除并获取列表的第一个元素,如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。

    brpop:brpop key1 timeout 移除并获取列表的最后一个元素,如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。

上面的操作。其实就是java的阻塞队列。学习的东西越多。学习成本越低

    队列:先进先除:rpush blpop,左头右尾,右边进入队列,左边出队列

    栈:先进后出:rpush brpop

11、抽奖

自带一个随机获得值

spop myset

12、点赞、签到、打卡

假如上面的微博ID是t1001,用户ID是u3001

用 like:t1001 来维护 t1001 这条微博的所有点赞用户

    点赞了这条微博:sadd like:t1001 u3001

    取消点赞:srem like:t1001 u3001

    是否点赞:sismember like:t1001 u3001

    点赞的所有用户:smembers like:t1001

    点赞数:scard like:t1001

是不是比数据库简单多了。
13、商品标签

老规矩,用 tags:i5001 来维护商品所有的标签。

    sadd tags:i5001 画面清晰细腻

    sadd tags:i5001 真彩清晰显示屏

    sadd tags:i5001 流程至极

14、商品筛选

    // 获取差集sdiff set1 set2// 获取交集(intersection )sinter set1 set2// 获取并集sunion set1 set2

假如:iPhone11 上市了

   

 sadd brand:apple iPhone11sadd brand:ios iPhone11sad screensize:6.0-6.24 iPhone11sad screentype:lcd iPhone 11

赛选商品,苹果的、ios的、屏幕在6.0-6.24之间的,屏幕材质是LCD屏幕

sinter brand:apple brand:ios screensize:6.0-6.24 screentype:lcd

15、用户关注、推荐模型

follow 关注 fans 粉丝

相互关注:

    sadd 1:follow 2

    sadd 2:fans 1

    sadd 1:fans 2

    sadd 2:follow 1

我关注的人也关注了他(取交集):

    sinter 1:follow 2:fans

可能认识的人:

    用户1可能认识的人(差集):sdiff 2:follow 1:follow

    用户2可能认识的人:sdiff 1:follow 2:follow

16、排行榜

id 为6001 的新闻点击数加1:

zincrby hotNews:20190926 1 n6001

获取今天点击最多的15条:

zrevrange hotNews:20190926 0 15 withscores

3.redis环境配置

三、redis环境安装-CSDN博客

4.redis的持久化机制

Redis是一个基于内存的数据库,所有的数据都存放在内存中,如果突然宕机,数据就会全部丢失,因此必须有一种机制来保证 Redis 的数据不会因为故障而丢失,这种机制就是 Redis 的持久化机制。

主要分为两种:

1.RDB快照机制

该机制把数据以快照的形式保存在磁盘上,是某个时间点的一次全量数据备份,以二进制序列化形式写入磁盘存储,保存在磁盘下的文件名位dump.rb,恢复时直接从磁盘上读取数据到内存

1.1如何触发

指令:save、bgsave、自动触发

save:停止除RDB外的所有环境,阻塞时间长

bgsave:建立一个子进程来进行RDB,并写入临时文件,带持久化过程都结束了,会把临时文件copy到磁盘上,阻塞时间较短,也就更为常用

自动触发:在redis.conf配置文件中修改,默认达到以下三种条件,就会自动触发持久化,触发后,底层调用的其实还有bgsave命令:

1分钟内改了1万次,5分钟内改了10次,或15分钟内改了1次。

    save 900 1              #在900秒(15分钟)之后,如果至少有1个key发生变化,则dump内存快照。

    save 300 10            #在300秒(5分钟)之后,如果至少有10个key发生变化,则dump内存快照。

    save 60 10000        #在60秒(1分钟)之后,如果至少有10000个key发生变化,则dump内存快照。

如果不需要持久化机制,则可以注释掉所有的save命令

RDB的优势

1)全量备份,使用灾难恢复。

2)相对于不追求过度完整的场景,其速度更快

3)生成RDB文件的时候,redis主进程会fork()一个子进程来处理所有保存工作,主进程不需要进行任何磁盘IO操作。

劣势:

1)内容多,占用空间大

2)当进行快照持久化时,会开启一个子进程专门负责快照持久化,子进程会拥有父进程的内存数据,父进程修改内存子进程不会反应出来,所以在快照持久化期间修改的数据不会被保存,可能丢失数据。

3)在一定间隔时间做一次备份,所以如果redis意外down掉的话,就会丢失最后一次快照后的所有修改。

2.AOF日志机制

是一种持续增量备份,会把redis中的所有操作写入日志文件,且该文件只可追加,不可修改.redis启动的时候会读取该文件进行数据恢复,根据日志文件的内容将写指令从前到后执行一次以完成数据的恢复工作。

1)AOF的重写机制,因为日志只增不减,所以添加重写机制,当文件大小达到最大阈值时,就会进行压缩文件,只保留恢复数据的最小指令集,redis提供了bgrewriteaof命令,增添一个新的进程对aof文件进行重写。

2)重写原理:AOF文件持续增长而过大时,会fork出一条新进程来重写aof文件,将内存中的整个数据库内容用命令的方式重写了一个新的aof文件(注意:在重写时并不是读取旧的aof文件),在执行 BGREWRITEAOF 命令时,Redis 服务器会维护一个 AOF 重写缓冲区,该缓冲区会在子进程创建新AOF文件期间,记录服务器执行的所有写命令。当子进程完成创建新AOF文件的工作之后,服务器会将重写缓冲区中的所有内容追加到新AOF文件的末尾,使得新旧两个AOF文件所保存的数据库状态一致。最后,服务器用新的AOF文件替换旧的AOF文件,以此来完成AOF文件重写操作。

3)触发时机:Redis会记录上次重写时的AOF大小,默认配置是当AOF文件大小是上次rewrite后大小的一倍且文件大于64M时触发。

触发机制:

1)每修改同步:appendfsync always   同步持久化,每次发生数据变更会被立即记录到磁盘,性能较差但数据完整性比较好。

2)每秒同步:appendfsync everysec    异步操作,每秒记录,如果一秒内宕机,有数据丢失。

3)不同步:appendfsync no   从不同步

    Linux 的 glibc 提供了 fsync()函数可以将指定文件的内容强制从内核缓存刷到磁盘。只要 Redis 进程实时调用 fsync 函数就可以保证 aof 日志不丢失。但是 fsync 是一个磁盘 IO 操作,它速度很慢,如果每条指令都要 fsync 一次,那么 Redis 高性能的地位就不保了。

AOF的优点:

1)AOF可以更好的保护数据不丢失,一般AOF会每隔1秒,通过一个后台线程执行一次fsync操作,最多丢失1秒钟的数据。

2)AOF只是追加写日志文件,对服务器性能影响较小,速度比RDB要快,消耗的内存较少

3)AOF日志文件即使过大的时候,出现后台重写操作,也不会影响客户端的读写。

4)AOF日志文件的命令通过非常可读的方式进行记录,这个特性非常适合做灾难性的误删除的紧急恢复。比如某人不小心用flushall命令清空了所有数据,只要这个时候后台rewrite还没有发生,那么就可以立即拷贝AOF文件,将最后一条flushall命令给删了,然后再将该AOF文件放回去,就可以通过恢复机制,自动恢复所有数据。

AOF的劣势:

1)对于相同数据集的数据而言,aof文件要远大于rdb文件,恢复速度慢于rdb。

2)对于每秒一次同步的情况,aof运行效率要慢于rdb,不同步效率和rdb相同。

注:如果同时开启两种持久化方式,在这种情况下,当redis重启的时候会优先载入AOF文件来恢复原始的数据,因为在通常情况下AOF文件保存的数据集要比RDB文件保存的数据集要完整。

三、Redis4.0的混合持久化

    仅使用RDB快照方式恢复数据,由于快照时间粒度较大时,会丢失大量数据。
    仅使用AOF重放方式恢复数据,日志性能相对 rdb 来说要慢。在 Redis 实例很大的情况下,启动需要花费很长的时间。

为了解决这个问题,Redis4.0开始支持RDB和AOF的混合持久化(默认关闭,可以通过配置项 aof-use-rdb-preamble 开启)。RDB 文件的内容和增量的 AOF 日志文件存在一起,这里的 AOF 日志不再是全量的日志,而是自持久化开始到持久化结束的这段时间发生的增量 AOF 日志,通常这部分 AOF 日志很小

    大量数据使用粗粒度(时间上)的rdb快照方式,性能高,恢复时间快。
    增量数据使用细粒度(时间上)的AOF日志方式,尽量保证数据的不丢失。

在Redis重启时,进行AOF重写的时候就直接把RDB的内容写到 AOF 文件开头。这样做的好处是可以结合 RDB和 AOF 的优点,快速加载同时避免丢失过多的数据。当然缺点也是有的, AOF 里面的 RDB 部分是压缩格式不再是AOF 格式,可读性较差。

另外,可以使用下面这种方式:Master使用AOF,Slave使用RDB快照,master需要首先确保数据完整性,它作为数据备份的第一选择;slave提供只读服务或仅作为备机,它的主要目的就是快速响应客户端read请求或灾切换。

5.redis动态修改配置

config 命令用于查看当前redis配置、以及不重启redis服务实现动态更改redis配置等
注意:不是所有配置都可以动态修改,且此方式无法持久保存

#设置连接密码
127.0.0.1:6379> CONFIG SET requirepass 123456
OK

#查看连接密码
127.0.0.1:6379> CONFIG GET requirepass
1) "requirepass"
2) "123456"

获取当前配置
#奇数行为键,偶数行为值

更改最大内存
127.0.0.1:6379> CONFIG SET maxmemory 8589934592
OK
127.0.0.1:6379> CONFIG GET maxmemory
1) "maxmemory"
2) "8589934592

6.webshell提权案例

记一次绕过安全狗和360提权案例-腾讯云开发者社区-腾讯云

7.定时任务+bash反弹连接提权案例

linux系统提权 · 白帽与安全 · 看云

8.SSH Key提权案例

SSH密钥提权_ssh提权-CSDN博客

9.redis安全加固分析

在众多开源缓存技术中,Redis无疑是目前功能最为强大,应用最多的缓存技术之一,但是原生Redis版本在安全方面非常薄弱,很多地方不满足安全要求,如果暴露在公网上,极易受到恶意攻击,导致数据泄露和丢失。

针对DCS的Redis实例,您在使用过程中,可参考如下建议:

10.weblogic基本介绍

https://www.cnblogs.com/wzh313/articles/10510361.html

 后续更新中间件靶场漏洞复现!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/744517.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Redis】Redis常用命令一

1.keys&#xff1a;返回所有满足条件的key&#xff0c;比如&#xff1a; KEYS pattern时间复杂度&#xff1a;O(N)&#xff0c;返回值&#xff1a;匹配pattern的所有key。 • h?llo 匹配 hello , hallo 和 hxllo • h*llo 匹配 hllo 和 heeeello • h[ae]llo 匹配 hello 和 …

【CSP试题回顾】201709-1-打酱油

CSP-201709-1-打酱油 解题代码 #include<iostream> using namespace std;int n, num;int main() { cin >> n;if (n / 50 ! 0){num 7 * (n / 50);n % 50;}if (n / 30 ! 0){num 4 * (n / 30);n % 30;}if (n / 10 ! 0) num (n / 10);cout << num;return…

Flask 专题

[CISCN2019 总决赛 Day1 Web3]Flask Message Board 查看session解密 但不知道密钥&#xff0c;题目说FLASK,那肯定就是找密钥,发现输入什么都没有显示&#xff0c;只有author那里有回显在版上&#xff0c;所以尝试sstl&#xff0c;{{config}}找到密钥 扫目录发现有admin进入…

6个免费的3D模型网站,助你3D建模渲染不用愁

​随着3D建模和渲染技术的不断发展&#xff0c;其重要性也日益增加。创建新的3D模型往往需要耗费大量时间&#xff0c;因此&#xff0c;本文整理了六个顶尖的免费3D模型资源网站&#xff0c;以便您能够方便地获取3D模型&#xff0c;大幅减少建模时间。这些资源有助于您更快地开…

高铁地铁智慧公厕方案与案例介绍

随着轨道交通的快速发展&#xff0c;高铁、地铁、火车成为人们出行的主要交通工具。而在这种规划建设要求极具的场所&#xff0c;信息化、智慧化的管理系统部署必不可少&#xff0c;智慧公厕作为公共设施的重要组成部分&#xff0c;建设和管理也越来越受到重视。智慧公厕系统的…

elasticsearch(学习笔记)(分布式搜索引擎)(黑马)(kibana操作)

一、索引库操作 索引库就类似数据库表&#xff0c;mapping映射就类似表的结构。 我们要向es中存储数据&#xff0c;必须先创建“库”和“表”。 1、mapping映射属性 mapping是对索引库中文档的约束&#xff0c;常见的mapping属性包括&#xff1a; type&#xff1a;字段数据类型…

自动驾驶最强学习资料

自动驾驶最强学习资料 资料说明和获取方式 本资料包是作者吐血整理的干货&#xff01;目前为止应该是非常全的自动驾驶资料包&#xff01;是作者五年自动驾驶算法工程师的 积累&#xff01; 以上干货资料并不全是作者自己原创&#xff0c; 是作者作为五年自动驾驶算法工程的…

春招_程序员怎么写简历_写简历网站

你们在制作简历时,是不是基本只关注两件事:简历模板,还有基本信息的填写。 当你再次坐下来更新你的简历时,可能会发现自己不自觉地选择了那个“看起来最好看的模板”,填写基本信息,却没有深入思考如何使简历更具吸引力。这其实是一个普遍现象:许多求职者仍停留在传统简历…

c++的类型转换和IO流

类型转换和IO流 一、c语言的类型转换 int i 1; // 隐式类型转换&#xff0c;这些类型都是表示数据的大小&#xff0c;整型家族包括char相互转化是因为他们只是范围不一样&#xff0c;浮点数与整型支持是因为浮点数本质也是表示数据的大小&#xff0c;只是加了精度而已&#…

vscode-server的搭建方法

一、配置服务器端口支持 1、开放端口&#xff1a; 2、关闭防火墙 systemctl stop firewalld.service systemctl disable firewalld.service二、配置code-server到服务器上** 1、下载code-server-4.22.0-linux-amd64.tar.gz到本地&#xff08;可下载最新的版本&#xff09;&a…

多人语聊房社交APP开发需要有哪些功能呢?

随着移动互联网的快速发展&#xff0c;社交APP已经成为人们日常生活中不可或缺的一部分。而随着语音社交的兴起&#xff0c;多人语聊房社交APP也逐渐受到了用户的青睐。在开发多人语聊房社交APP时&#xff0c;需要具备一系列功能&#xff0c;以满足用户的需求并提供良好的使用体…

Linux的一些常用指令

一、文件中 r w x - 的含义 r&#xff08;read&#xff09;是只读权限&#xff0c; w&#xff08;write&#xff09;是写的权限&#xff0c; x&#xff08;execute&#xff09;是可执行权限&#xff0c; -是没有任何权限。 二、一些指令 # 解压压缩包 tar [-zxvf] 压缩包名…

知名Web3 风险投资公机构Hack VC 四位合伙人将亲临hack.summit()2024亚洲区块链开发者大会

2024-03-14 15:32:24 知名web3风险投资机构Hack VC的四位合伙人——Alex Pack、Ed Roman、Roshun Patel和Rodney Yesep将亲临hack.summit()2024亚洲区块链开发者大会&#xff0c;这一盛事将于2024年4月9日至10日在香港数码港举行。 此次大会由Hack VC主办&#xff0c;并得到Alt…

AI预测福彩3D第8弹【2024年3月14日预测--新算法重新开始计算第五次测试】

兄弟们&#xff0c;感觉要起飞了&#xff01;截止昨天&#xff0c;经过新修正的算法进行3D预测&#xff0c;已经连续3次命中7码了&#xff0c;甚至6码或5码就能命中&#xff01; 昨天的开奖是 3 4 9,我的预测结果可参加上一篇文章 继续乘胜追击&#xff0c;再接再厉&#xff0…

Linux-vim显示乱码

Linux运维工具-ywtool 目录 一.问题二.解决2.1 编辑VIM的配置文件2.2 添加以下内容 一.问题 用vim编辑的时候,中文显示乱码 二.解决 2.1 编辑VIM的配置文件 vim ~/.vimrc #如果这个文件不存在,创建一个即可2.2 添加以下内容 添加完成以后就不会在出现中文乱码了 set fil…

ECRS软件:通过视频分析实现精益生产的利器

在追求高效生产的现代工业体系中&#xff0c;精准的数据分析和科学的流程管理是企业不可或缺的核心竞争力。ECRS软件作为一款专业的工时分析工具&#xff0c;通过视频分析的方式&#xff0c;为企业的精益生产提供了有力支持。使用ECRS软件&#xff0c;企业只需完成三项基础操作…

spring-authorization-server如何通过JWK Set Endpoint来获取公钥并验签的

参考文档&#xff1a;spring-authorization-server【版本1.2.2】 问题 在spring-authorization-server官方文档中提供了JWK Set Endpoint相关介绍&#xff0c;此端点主要返回JWK Set &#xff0c;此JWK Set包含了授权服务提供的所有公钥集&#xff0c;具体可通过访问端点&…

纯血鸿蒙来画龙!基于HarmonyOS ArkTS来操作SVG图片

大家好&#xff0c;龙年报喜&#xff0c;大地回春&#xff0c;作为程序员&#xff0c;以代码之名&#xff0c;表达对于龙年的祝福。本节将演示如何在基于HarmonyOS ArkTS的Image组件来实现画一条中国龙&#xff0c;祝大家“码”上“鸿”福到&#xff01; 创建应用 选择空模板…

FreeRTOS 的任务创建和删除

任务创建是我们第一个要学习的 API 函数&#xff0c;同时它也是 FreeRTOS 众多 API 函数中最复杂的一个&#xff0c;但是没办法&#xff0c;这个函数是我们第一个要学习的&#xff0c;也是非常重要的。 那么来看一下咱们本节的主要内容有哪些&#xff1a; 首先我们来介绍一下…

4款实用性前端动画特效分享(附在线演示)

分享4款非常不错的项目动画特效 其中有jQuery特效、canvas特效、CSS动画等等 下方效果图可能不是特别的生动 那么你可以点击在线预览进行查看相应的动画特效 同时也是可以下载该资源的 全屏图片视差旋转切换特效 基于anime.js制作全屏响应式的图片元素布局&#xff0c;通过左…