redis主从复制的一些利用方式


啥是redis主从复制rce

不知道的可以先百度。

写在前面

二进制文件在文章结尾。
要源码请留言。

限制

大多数教程都是用的这个脚本直接实现的https://github.com/Ridter/redis-rce。不知道大家在使用脚本的时候有没有注意到一些限制。
限制1、目前github上的动态链接库都是so文件,这就说明基本只能在Linux使用。
限制2、网上都有讲主从复制要求redis版本是4.X和5.X才能利用。

突破限制

限制1、 在渗透的过程中遇到windows版的redis该怎么getshell(这是一道面试题)。我按照Linux的方式运行了一次脚本并把exp.so替换成了cs生成的dll文件,发现并不能上线,但是我在redis的安装目录下发现了这个dll文件,这说明了dll是被上传到了目标服务器。然后我通过手动执行MODULE load system.dll然后观察日志,发现日志中提升说不存在RedisModule_OnLoad这个函数,于是通过修改github上现有的redis模块源码实现了rce。




限制2、 在查看其他文章的时候发现有提到redis是在4.x加入了module功能。3.x不能使用主从复制的原因应该就是没有module这个功能。使用脚本尝试redis 3.2,同样发现将dll上传到了redis安装目录,但是报了unknown command system.exec,这应该就是文件上传成功了但是没有module命令所有没有加载。



既然能上传文件,就可以尝试能不能将文件上传到其他目录下,结果是可以的。用这种方式可以将把exe上传到windows的自启动目录,然后在用户重新登录桌面的时候就能运行(redis默认是network权限,可能没有权限去写),或者上传webshell到网站根目录下也可以。

redis6:
redis6 加载的动态链接库其他用户必须要有可执行权限才能成功load,目前感觉是无解。但在提权的时候可能会用到。

附件:

注意:在某些情况下会导致redis服务崩溃。
测试结果如下:
v4.0.2-alpha :崩溃
v4.0.14:正常
v5.0.14:正常

https://github.com/djhons/redis_rce/

声明:john'blog|版权所有,违者必究|如未注明,均为原创|本网站采用BY-NC-SA协议进行授权

转载:转载请注明原文链接 - redis主从复制的一些利用方式


欢迎来到脚本小子的博客