REDIS主从复制的疑问
前言:金角大王有个葫芦,可以吸很多很多东西。葫芦壳比较硬,一直吸,一直吸。葫芦内的压强越来越大,温度也越来越高,葫芦壳出现了非常小的裂缝,部分物质漏了出来可以被人类观察到,但是漏的速度远小于吸的速度,压强还在变大,温度还在提升,直到达到燃点。在密闭容器下发生剧烈燃烧,产生爆炸 。然后葫芦的壳并不是真实存在的,可以把葫芦壳看成引力。
最近面试的时候被问到到redis主从复制getshell。就一直在想什么样的场景才用得到主从复制呢?
1.redis主从复制
什么是主从复制呢?跟所有的数据库的主从复制一样,为了备份和提高性能。有一台主服务器,n台从服务器,从服务器会实时备份主服务器数据。
2.redis4.x以上外部拓展
在Reids 4.x之后,Redis新增了模块功能,通过外部拓展,可以实现在redis中实现一个新的Redis命令。
3.redis主从复制getshell过程
1.本地编译好外部扩展即so文件
2.把so文件转码存入本地redis数据库
3.到目标服务器上设置主从关系,主服务器指定我们的本地机子
4.待同步后,设置备份路径和备份文件名(xx.so)
5.开始同步,备份数据库
6.然后加载备份数据库
7.然后就可以通过redis执行命令反弹shell了
不知道是我的理解有问题,还是我没看懂。发现为啥不直接在目标机子上保存转译好的so文件?反而要采取主从复制这种方式。。。。
4.redis外部拓展的利用
redis外部拓展可以加载自己想要的任何东西,应用也十分广泛,不仅仅是执行命令。
1.后门的制作
2.绕过一些无法执行命令的场景(如php_disable_fuction)
写在最后:这个疑问想了半天愣是没想出来,大概率是我理解错了主从复制的过程