网络安全日报 2025年06月06日
1、新型安卓银行木马Crocodilus在全球范围内迅速扩散 https://securityaffairs.com/178578/malware/android-banking-trojan-crocodilus-evolves-fast-and-goes-global.html 近期安全研究公司ThreatFabric披露,一款名为“Crocodilus”的新型安卓银行木马正在全球范围内迅速扩散。该恶意软件最初活跃于土耳其,现已蔓延至欧洲多国及南美地区。攻击者通过社交媒体上的恶意广告传播该木马,诱导用户下载安装伪装成银行或购物应用的恶意程序。一旦感染设备,Crocodilus可窃取加密钱包助记词、私钥,并伪造联系人如“银行客服”,实施社交工程诈骗。 2、惠普发布安全公告修复StoreOnce中的多个漏洞 https://securityaffairs.com/178629/security/hpe-fixed-multiple-flaws-in-its-storeonce-software.html 惠普(HPE)近日发布安全公告,修复了其StoreOnce数据备份与重复数据删除解决方案中存在的8个漏洞。这些漏洞涵盖远程代码执行、认证绕过、信息泄露、服务端请求伪造等严重风险,可能被远程攻击者利用对系统进行入侵或获取敏感数据。其中最严重的为CVE-2025-37093认证绕过漏洞,CVSS评分高达9.8,影响所有4.3.11版本之前的软件,且可被与其他漏洞联动使用,实现远程代码执行。此次修复的 3、Coinbase数据泄露事件与印度TaskUs客服受贿有关 https://www.bleepingcomputer.com/news/security/coinbase-breach-tied-to-bribed-taskus-support-agents-in-india/ 加密货币交易平台Coinbase近期披露的一起数据泄露事件,已被追踪至印度外包公司TaskUs的客服人员。据路透社调查,攻击者通过贿赂方式操控部分客服代理,窃取用户敏感信息用于后续的社会工程攻击。事件最初于2025年1月被内部员工发现,一名员工被目击使用手机拍摄屏幕内容,随后两人承认向外部黑客泄露Coinbase客户数据换取金钱回报。Coinbase于5月正式对外披露此事件, 4、Windows认证强制攻击对企业网络构成重大威胁 https://cybersecuritynews.com/windows-authentication-coercion-attacks/ Windows认证强制攻击2025年仍威胁企业网络,利用MS-RPRN等合法服务漏洞获取管理员权限。微软防护措施对新安装有效,但升级系统存漏洞。企业需全面实施签名和通道绑定以应对持续威胁。 5、最新研究揭示云端大语言模型防护机制的成效与缺陷 https://cybersecuritynews.com/gaps-in-cloud-based-llm-guardrails/ 主流云端大语言模型安全机制存在重大漏洞,三大平台在有害内容拦截与误报率上差异显著。研究发现角色扮演攻击最易绕过过滤,暴露当前系统过度依赖关键词检测而缺乏深度意图分析的缺陷,凸显AI安全防御亟待加强。 6、黑客利用语音钓鱼攻击入侵Salesforce客户并窃取数据 https://www.csoonline.com/article/4001744/hackers-use-vishing-to-breach-salesforce-customers-and-swipe-data.html 黑客组织UNC6040通过假冒IT支持人员诱骗员工授权恶意Salesforce应用,窃取企业数据并勒索。攻击利用OAuth协议,横向移动至其他云服务。建议最小权限、监控访问、启用MFA防范。类似手法在近期多起攻击中出现。 7、思科警告UCS IMC与NDFC系统存在高危SSH安全漏洞 https://securityonline.info/cisco-warns-of-high-severity-ssh-security-flaws-in-ucs-imc-and-ndfc-systems/ 思科发布两个高危漏洞CVE-2025-20261(CVSS 8.8)和CVE-2025-20163(CVSS 8.7),影响UCS及Nexus系列产品,可能导致权限提升和中间人攻击,建议立即升级固件或禁用SSH。 8、DataVisor发布《2025年欺诈与反洗钱执行报告》 https://www.helpnetsecurity.com/2025/05/29/ciso-ai-fraud-war/ 欺诈者正利用AI技术领先实施深度伪造等诈骗,75%机构认为防御方落后。第一方欺诈和系统割裂加剧风险,需构建AI治理框架和统一防御体系。实时分析、行为监测和FRAML方案是关键,平衡风控与用户体验至关重要。 9、Sophos揭露Sakura RAT:黑客用后门恶意软件黑吃黑 https://securityonline.info/sophos-unmasks-sakura-rat-hackers-hacking-hackers-with-backdoored-malware/ Sophos发现Sakura RAT木马伪装开源项目,通过GitHub传播,针对黑客和游戏作弊者。该木马植入后门窃取信息,利用多种技术混淆攻击链,涉及141个仓库。攻击者伪造活跃开发记录,身份疑似与恶意软件服务网络有关。 10、混沌远控木马借虚假网络工具攻击Windows与Linux系统 https://thehackernews.com/2025/06/chaos-rat-malware-targets-windows-and.html 安全研究人员发现跨平台恶意软件Chaos RAT正伪装成Linux网络工具传播,可控制设备并窃取数据。其开源特性被APT组织利用,增加溯源难度,最新变种针对加密货币用户,窃取钱包信息。 声明 以上内容原文来自互联网的公共方式,仅用于有限分享,译文内容不代表蚁景科技观点,因此第三方对以上内容进行分享、传播等行为,以及所带来的一切后果与译者和蚁景科技无关。以上内容亦不得用于任何商业目的,若产生法律责任,译者与蚁景科技一律不予承担。
Solon框架模板漏洞深度剖析与修复实战
前言 分析发现 Solon 框架在3.1.0版本上存在一个有意思的模板漏洞,对这个漏洞进行简单分析后,发现整个漏洞的利用链是非常有意思的。同时发现最新版的修复方式过于简单,询问 AI 后,AI 也认为修复也是不完善的安全修复,于是进行一系列的绕过尝试,最后还是没有利用成功,简单进行分享。 环境搭建 Solon 框架简介 Solon 是一个轻量级的 Java 应用开发框架,类似于 Spring Boot ,但更加轻量。支持多种模板引擎,包括 Beetl、FreeMarker、Velocity 等。在模板处理方面,Solon 采用了灵活的渲染器映射机制,也是出现这个漏洞的关键原因。 测试环境搭建 https://solon.noear.org/start/build.do?artifact=helloworld_jdk8&project=maven&javaVer=1.8&&可以下载 solon 的项目模板 并进行修改 修改一下 pom.xml 文件 设置 solon 的版本为 3.1.0 将原本的视图插件 solon-view-freemarker 替换为以下的任意一种 <dependency>    <groupId>org.noear</groupId>    <artifactId>solon-view-enjoy</artifactId> </dependency> <dependency>    <groupId>org.noear</groupId>    <artifactId>solon-view-beetl</artifactId> </dependency> <dependency>    <groupId>org.noear</groupId>    <artifactId>solon-view-thymeleaf</artifactId> </dependency> <dependency>    <groupId>org.noear</groupId>    <artifactId>solon-view-velocity</artifactId> </dependency> ‍ 在 DemoController.java 中 添加代码 并启动运行    @Mapping("/templates")    public ModelAndView templates(Context ctx) throws IOException {        ModelAndView modelAndView = new ModelAndView(ctx.param("templates"));        return modelAndView;   } 漏洞验证与分析 漏洞验证 我们选用视图插件solon-view-velocity,不同的视图插件对跨目录的处理有所不同,之后会对此进行详细解释 <dependency>    <groupId>org.noear</groupId>    <artifactId>solon-view-velocity</artifactId> </dependency> 可以看到传入的参数通过 ../ 实现了跨目录的文件读取并将内容解析到页面上 核心调用链分析 通过调试对这个漏洞进行分析 遇到这种情况有一个小的 tips 我们可以通过尝试加载一个不存在的文件,这样 idea 的控制台中会输出相对详细的调用链,方便我们下断点进行调试分析。 org.noear.solon.core.handle.RenderManager#render 这里会根据文件后缀来选择视图插件,如果没有匹配的就选择用默认渲染器来处理 org.noear.solon.view.velocity.VelocityRender#render org.noear.solon.view.velocity.VelocityRender#render_mav org.apache.velocity.runtime.RuntimeInstance#getTemplate(java.lang.String, java.lang.String) org.apache.velocity.runtime.resource.ResourceManagerImpl#getResource ‍ 整体流程顺下来应该是 用户输入 → Context.param() → ModelAndView() → RenderManager.render()→ 模板引擎处理 在模板引擎处理之前没有对模板文件的路径进行处理和限制,这样一来如果模板引擎处理的时候没有对模板文件的路径进行处理时,就会产生任意文件读取漏洞。 我们可以尝试看看利用别的视图插件看看效果如何。 solon-view-freemarker 为什么不可以 我们看到 freemarker 对 模板文件的路径进行了处理,不允许跨目录的访问 org.noear.solon.view.freemarker.FreemarkerRender#render org.noear.solon.view.freemarker.FreemarkerRender#render_mav freemarker.template.Configuration#getTemplate(java.lang.String, java.lang.String) freemarker.template.Configuration#getTemplate(java.lang.String, java.util.Locale, java.lang.Object, java.lang.String, boolean, boolean) freemarker.cache.TemplateCache#getTemplate(java.lang.String, java.util.Locale, java.lang.Object, java.lang.String, boolean) 调用 name = templateNameFormat.normalizeRootBasedName(name); 来对传入的模板文件名进行处理 freemarker.cache.TemplateNameFormat.Default020300#normalizeRootBasedName 对传入的参数进行规范化处理,以确保安全并处理路径中的特殊序列。 漏洞修复 org.noear.solon.core.handle.RenderManager#getViewRender 我们注意到修复方式是添加了这一部分代码 if (mv.view().contains("../") || mv.view().contains("..\\")) {            // '../','..\' 不安全            throw new IllegalStateException("Invalid view path: '" + mv.view() + "'");       } 看起来处理方式简单粗暴,实际上是非常有效的 用户输入 → Context.param() → ModelAndView() → RenderManager.render()→ RenderManager.getViewRender()安全检测 →模板引擎处理 在模板引擎处理之前就添加了对传入路径的检测,一次 url 编码无法绕过,两次 url 编码虽然可以绕过检测,但是实际处理时,找不到文件所在的位置,再加上并不是从根目录开始读取文件的,最前面还存在目录限制,所以这样一来就无法利用这个漏洞了。
网络安全日报 2025年06月05日
1、印度生鲜平台KiranaPro遭黑客攻击导致数据被彻底删除 https://techcrunch.com/2025/06/03/indian-grocery-startup-kiranapro-was-hacked-and-its-servers-deleted-ceo-confirms/ 印度生鲜配送初创公司KiranaPro近日遭遇严重网络攻击,所有应用代码与服务器数据被黑客彻底删除。该公司CEO向TechCrunch证实,受影响数据包括客户姓名、地址及支付信息等敏感内容。尽管KiranaPro应用仍可访问,但已无法正常处理订单。据悉,KiranaPro于2024年12月上线,基于印度政府的开放数字商务网络运作,支持多语言语音下单服务,用户规模达 2、研究人员发现Meta通过监听本地主机端口绕过隐私保护机制 https://www.theregister.com/2025/06/03/meta_pauses_android_tracking_tech/ 近日,多所欧洲高校研究人员联合发布报告,揭露Meta(Facebook、Instagram)与俄罗斯搜索引擎Yandex通过Android本地应用监听localhost端口,从而将网页浏览数据与用户身份关联,绕过常规隐私保护机制。研究指出,两家公司在数千个网站中嵌入追踪脚本,借助WebRTC和SDP Munging等技术,通过localhost向设备上的原生App传输cookie和浏览元数据,实现跨站用户识别。这一行为打破了用户对隐私隔离机制的预 3、谷歌发布紧急安全更新修复被利用的Chrome零日漏洞 https://www.bleepingcomputer.com/news/security/google-patches-new-chrome-zero-day-bug-exploited-in-attacks/ 谷歌近日发布紧急安全更新,修复了2025年以来第三个在野外被利用的Chrome零日漏洞CVE-2025-5419。该漏洞源自Chrome浏览器V8 JavaScript引擎中的越界读写漏洞,属于高危漏洞。谷歌安全团队在一周前发现该漏洞,并于次日通过配置变更初步缓解风险,随后于6月发布新版本修复该漏洞,涵盖Windows、Mac及Linux平台。谷歌提醒用户可通过浏览器菜单手动检查 4、美国社区银行MainStreet遭到黑客攻击导致客户数据被窃取 https://www.theregister.com/2025/06/02/mainstreet_bancshares_says_thirdparty_breach/ 美国社区银行MainStreet Bancshares近日向美国证券交易委员会(SEC)披露,旗下部分客户数据在一起第三方供应商遭黑客攻击事件中被窃取。此次攻击发生于今年3月,至4月28日,银行确认约4.65%的客户数据被涉及。虽然MainStreet自身的技术基础设施未受影响,也无资金被盗,但事件凸显了供应链安全的薄弱环节。该行已中止与涉事供应商的合作,并于5月26日完成受影响客户的通知与监测安排。此事件正值美国金融界对S 5、Vanta漏洞导致部分客户的私密数据被其他客户访问 https://techcrunch.com/2025/06/02/vanta-bug-exposed-customers-data-to-other-customers/ 合规服务公司Vanta近日证实,由于产品代码变更引发的漏洞,导致部分客户的私密数据被其他Vanta客户访问。此次事件并非外部攻击所致,而是源于5月26日Vanta进行的一次代码更新,预计修复工作将于6月4日完成。据Vanta首席产品官Jeremy Epling称,此次数据泄露涉及不到20%的第三方集成数据,受影响客户不到4%,但由于Vanta拥有超过10000家客户,意味着可能有数百家企业受到影响。一位受影响客户向媒体表 6、PyPI、npm和Ruby软件包仓库惊现恶意组件 https://www.freebuf.com/articles/development/433584.html 近期在npm、Python和Ruby软件包仓库中相继发现多组恶意组件,这些组件能够清空加密货币钱包资金、安装后删除整个代码库并窃取Telegram API令牌,再次印证了开源生态系统中潜伏的多样化供应链威胁。 7、AI界面遭劫持:Open WebUI被滥用于挖矿程序与隐蔽AI恶意软件 https://securityonline.info/ai-interface-hijacked-open-webui-exploited-for-cryptominers-and-stealthy-ai-malware/ 攻击者利用配置错误的Open WebUI实例部署挖矿程序和信息窃取工具,通过高级混淆技术规避检测,窃取敏感数据并获利。AI插件系统可能被滥用,需加强实时行为分析防御。 8、新型Lyrix勒索软件采用先进规避技术攻击Windows用户 https://cybersecuritynews.com/new-lyrix-ransomware-attacking-windows-users/ 新型勒索软件Lyrix采用机器学习规避技术和多向量攻击,针对Windows系统加密文件并破坏备份,索要5万至200万美元赎金。其"行为变色龙模式"和"注册表定时炸弹"技术大幅增加检测难度,已入侵欧美企业网络。 9、谷歌紧急发布安卓安全更新,修复可导致权限提升的多项高危漏洞 https://cybersecuritynews.com/android-security-update-privilege-escalation/ 谷歌紧急发布安卓安全更新,修复Arm、Imagination和高通的多项高危漏洞,涉及GPU驱动、内核及闭源组件,可能引发权限提升和远程代码执行风险。设备需更新至2025-06-01或06-05补丁级别以确保安全。、 10、十年未修复Roundcube Webmail高危漏洞,认证用户可执行恶意代码 https://thehackernews.com/2025/06/critical-10-year-old-roundcube-webmail.html Roundcube网页邮件软件曝高危漏洞(CVE-2025-49113),CVSS评分9.9,攻击者可远程执行代码,影响1.6.10及之前版本。APT28等曾利用类似漏洞攻击,已发布1.6.11和1.5.10修复补丁。 声明 以上内容原文来自互联网的公共方式,仅用于有限分享,译文内容不代表蚁景科技观点,因此第三方对以上内容进行分享、传播等行为,以及所带来的一切后果与译者和蚁景科技无关。以上内容亦不得用于任何商业目的,若产生法律责任,译者与蚁景科技一律不予承担。
【限时0元】2025网安夏令营报名火爆开启!
网络安全日报 2025年06月04日
1、Scattered Spider针对多家企业发动社工攻击 https://www.pymnts.com/cybersecurity/2025/scattered-spider-chases-clout-via-social-engineering-scams/ 黑客组织“Scattered Spider”近期加大了凭证窃取攻势,成为2025年最受关注的威胁行为者之一。据《金融时报》6月1日报道,该组织近期成功入侵了英国零售巨头Marks & Spencer(M&S)的系统,并持续数月对全球多家知名企业员工发动社工攻击,诱骗其泄露登录凭据。报道指出,Scattered Spider的典型战术为社交工程诈骗:攻击者对目标公司员工进行详细研究后,冒充内部 2、未经保护的数据库泄露超1.84亿组账号密码 https://www.websiteplanet.com/news/infostealer-breach-report/ 一份未加密、无密码保护的数据库近日被意外公开,泄露多达1.84亿组唯一的登录凭证,总体积高达47.42GB。泄露信息涵盖主流服务账号,包括Microsoft、Facebook、Instagram、Snapchat、Roblox,甚至银行、医疗、政府系统的访问凭据,极具风险。研究人员初步分析发现,数据极可能由InfoStealer类恶意软件收集,该类恶意代码专门窃取浏览器、邮件客户端中的账号密码、Cookie和钱包信息。目前数据源头未明,数据库很快被托管服务商限制访问,但 3、美国联邦通信委员会提醒旅客警惕机场公共USB充电风险 https://www.yahoo.com/news/federal-communications-commission-tsa-warns-135132687.html?fr=sycsrp_catchall 美国联邦通信委员会(FCC)和运输安全管理局(TSA)近日联合提醒机场旅客注意在公共USB充电端口的安全风险,警惕所谓的“果汁劫持”(juice jacking)攻击。黑客可能通过被篡改的USB端口植入恶意软件,从而锁定设备或窃取个人数据和密码,给用户带来严重的隐私和财产安全威胁。TSA建议旅客避免直接使用机场的公共USB端口充电,优先使用自带的TSA认证充电器或移动电源。FCC还强调 4、SentinelOne发生全球服务宕机致安全监控中断6小时 https://www.govinfosecurity.com/cybersecurity-firm-sentinelone-suffers-major-outage-a-28554 2025年6月,知名网络安全厂商SentinelOne发生大规模系统宕机事件,导致其全球部分客户的终端和网络安全监控服务长时间中断。事件持续约6小时,涉及XDR、终端保护、云安全、身份管理等11项核心服务,仅官方网站未受影响。官方确认此次中断源于“内部自动化故障”,而非安全事件。期间,用户无法访问控制台,受管安全响应服务暂时失效,定制检测规则(STAR)也无法运行,部分断网用户被错误隔离后无法恢复连接。Sent 5、高通修复曾遭定向攻击利用的三个零日漏洞 https://securityaffairs.com/178532/hacking/qualcomm-fixed-three-zero-days-exploited-in-limited-targeted-attacks.html Qualcomm近日修复了三项被用于定向攻击的零日漏洞,分别为CVE-2025-21479、CVE-2025-21480与CVE-2025-27038,漏洞均由Google Android安全团队报告。这些漏洞主要影响Adreno GPU驱动,其中两项为授权验证缺失,导致在特定指令序列下GPU微节点执行未授权命令引发内存损坏;另一项为Use-After-Free 6、卡地亚披露数据泄露事件警告客户个人数据已泄露 https://www.securityweek.com/cartier-data-breach-jewelry-maker-warns-customers-that-personal-data-was-exposed/ 奢侈品牌Cartier近日披露了一起数据泄露事件,称有未授权方入侵其系统并窃取部分客户信息。根据发送给受影响客户的通知,泄露的数据包括姓名、电邮地址及居住国家,但未涉及密码、信用卡或银行信息。Cartier并未透露此次事件影响的客户数量或发现时间,仅表示已向相关监管机构报告,并正与外部网络安全专家合作调查及加固防护体系。该事件发生之际,多个国际品牌如Victoria’s S 7、谷歌Chrome零日漏洞遭广泛利用,可执行任意代码 https://www.freebuf.com/articles/web/433354.html 谷歌在确认攻击者正在积极利用一个关键零日漏洞(zero-day vulnerability)后,紧急发布了Chrome安全更新。该漏洞编号为CVE-2025-5419,攻击者可通过Chrome V8 JavaScript引擎中的越界读写操作,在受害者系统上执行任意代码。 8、微软与CrowdStrike合作建立统一威胁组织映射系统 https://www.freebuf.com/articles/es/433330.html 网络安全公司CrowdStrike Holdings Inc.与微软公司今日宣布达成战略合作,旨在解决网络安全威胁组织在不同安全平台上的识别与追踪长期存在的混乱问题。 9、黑客利用免费SSH客户端传播恶意软件并攻击Windows系统 https://www.freebuf.com/articles/system/433241.html 近期发现一起复杂的恶意软件攻击活动,攻击者利用包括流行的PuTTY应用程序和Windows内置OpenSSH实现等合法SSH客户端,在受感染系统上建立持久后门。 10、联发科芯片漏洞:攻击者无需用户交互即可提权 https://www.freebuf.com/articles/endpoint/433290.html 联发科(MediaTek)智能手机、平板电脑和物联网芯片组中存在的多个高危安全漏洞,可能允许攻击者在无需用户交互的情况下提升权限并破坏设备安全。 声明 以上内容原文来自互联网的公共方式,仅用于有限分享,译文内容不代表蚁景科技观点,因此第三方对以上内容进行分享、传播等行为,以及所带来的一切后果与译者和蚁景科技无关。以上内容亦不得用于任何商业目的,若产生法律责任,译者与蚁景科技一律不予承担。
网络安全日报 2025年06月03日
1、印蔓灵花APT组织借克什米尔冲突对巴电信系统发起攻击 https://blog.eclecticiq.com/pakistan-telecommunication-company-ptcl-targeted-by-bitter-apt-during-heightened-regional-conflict 研究人员发现,具有印度背景的APT组织“蔓灵花”(Bitter)利用印巴克什米尔地区军事冲突升级的时机,针对巴基斯坦电信公司(PTCL)及政府通信部门发起了网络间谍活动。攻击者仿冒官方VPN工具(如“TelecomVPN”“PTAOpenVPN”),将恶意代码与合法的OpenVPN安装程序捆绑在一起,诱导目标用户运行后植入多重后门。在此次攻击 2、ConnectWise疑似遭受APT组织针对性入侵 https://thehackernews.com/2025/05/connectwise-hit-by-cyberattack-nation.html 近期,远程访问软件ScreenConnect的开发商ConnectWise透露,公司遭受了网络攻击,疑似有国家级威胁背景的组织参与了此次攻击,部分ScreenConnect客户受到影响。目前,攻击发生的时间、受影响的客户数量以及威胁参与者的身份均未对外披露。ConnectWise于2025年4月下旬修复了高危漏洞CVE - 2025 - 3935,不过,目前尚无法确定此次攻击是否与该漏洞存在关联。公司已采取增强监控和加固安全等措施,以防止未 3、新型Rust窃密木马借虚假CAPTCHA页面传播窃密 https://thehackernews.com/2025/05/eddiestealer-malware-uses-clickfix.html 研究人员发现,一款用新型Rust语言编写的窃密木马EDDIESTEALER通过伪造CAPTCHA验证页面进行传播。攻击者劫持合法网站并注入恶意脚本,诱导用户执行伪装成“人机验证”的PowerShell指令,进而从C2服务器下载恶意载荷。该木马能够窃取加密货币钱包、浏览器凭据以及通讯软件中的数据,并且它利用ChromeKatz技术绕过Chrome应用的绑定加密——通过隐蔽启动Chrome进程来读取内存中未加密的Cookie,即便在浏览器未运行的情况 4、Linux核心转储程序apport等存在信息泄露漏洞 https://thehackernews.com/2025/05/new-linux-flaws-allow-password-hash.html Linux系统中的核心转储处理程序apport和systemd-coredump被发现存在两个信息泄露漏洞(CVE-2025-5054和CVE-2025-4598),这些漏洞会影响Ubuntu、Red Hat Enterprise Linux和Fedora等系统。这些竞争条件漏洞使得本地攻击者能够利用SUID程序的漏洞获取核心转储文件中的敏感信息,例如/etc/shadow文件的内容。攻击者借此可读取密码哈希等敏感数据。为降低风险,用户可以执行 5、Apache InLong漏洞可导致远程代码执行 https://thecyberexpress.com/apache-inlong-cve-2025-27522/ Apache InLong存在的CVE-2025-27522漏洞可能导致远程代码执行,该漏洞影响1.13.0至2.1.0版本。此漏洞是由于JDBC组件对未受信任的数据进行不安全反序列化操作而引发的,攻击者可以借此发送特制负载,触发未授权行为。尽管目前尚未有公开的利用实例,但鉴于该漏洞可被网络利用且无需用户交互,其风险较高。Apache建议用户立即将系统升级至2.2.0版本。 6、全球执法行动关闭反查杀测试平台AVCheck https://cyberscoop.com/avcheck-global-takedown/ 在一项全球联合执法行动中,广受网络犯罪分子使用的反查杀测试平台AVCheck及其相关加密服务Cryptor.biz和Crypt.guru被成功查封并下线。该服务长期被用于协助恶意软件开发者检测其恶意程序是否能规避主流杀毒软件侦测,是网络犯罪初期阶段的重要环节。美、荷、芬三国执法机构联合执行此次打击,并已接管多个相关域名与服务器。调查显示,这些服务曾被勒索软件团伙广泛使用,用于对美国及全球目标发动攻击。执法人员称,在关闭这些“幕后工具商”后,网络犯罪者在完善其攻击工具的能力上将受到重大限制。本次打击 7、黑客利用vBulletin论坛软件中的关键漏洞发起攻击 https://www.bleepingcomputer.com/news/security/hackers-are-exploiting-critical-flaw-in-vbulletin-forum-software/ 开源论坛软件vBulletin近日曝出两个关键漏洞(CVE-2025-48827 和 CVE-2025-48828),其中一个已被确认在野外被积极利用。漏洞评分高达CVSS 10.0与9.0,允许远程攻击者在未经认证的情况下执行代码。其中一个漏洞涉及对PHP Reflection API的滥用,另一个则通过模板引擎绕过函数过滤器,最终实现远程命令执行(RCE)。漏洞影响 8、Cisco IOS XE高危漏洞细节现已公开 https://www.bleepingcomputer.com/news/security/exploit-details-for-max-severity-cisco-ios-xe-flaw-now-public/ Horizon3安全研究团队近日公开了Cisco IOS XE无线局域网控制器(WLC)中的一个最高严重等级漏洞(CVE-2025-20188)的技术细节。该漏洞允许未经身份验证的远程攻击者上传任意文件并执行系统命令,影响启用了“带外AP镜像下载”功能的多款Catalyst 9800系列设备。漏洞源于后端Lua脚本对JSON Web Token的硬编码密钥处理不当,攻击者可利 9、韩国监管机构对迪奥、蒂芙尼展开数据泄露调查 https://koreajoongangdaily.joins.com/news/2025-06-01/business/industry/Personal-information-watchdog-opens-probe-of-Dior-and-Tiffany-for-data-breaches/2320313 韩国个人信息保护委员会(PIPC)近日对奢侈品牌Dior与Tiffany的数据泄露事件展开调查,指两家公司未及时发现及上报泄露情况,涉嫌违反信息保护相关法规。Dior在1月26日发生泄露,却直到5月7日才发现,并于5月10日报告官方,13日才通知客户。Tiffany亦在4月被攻击 10、Roundcube修复关键RCE漏洞建议尽快更新 https://gbhackers.com/critical-roundcube-flaw/ 知名Webmail客户端Roundcube近日发布1.6.11与1.5.10两个版本安全更新,修复一项严重的远程代码执行漏洞。该漏洞由安全研究员firs0v报告,源于PHP的unserialize()函数在处理用户输入时缺乏安全验证,攻击者若拥有有效身份凭证,即可利用此缺陷执行任意PHP代码,控制服务器或部署Web Shell,危害极大。此次更新不仅封堵漏洞,还修复了黑暗模式渲染、HTML预览和LDAP连接等问题。Roundcube官方强烈建议所有用户尽快升级,并在更新前完成数据备份,以防数据丢失。 声明 以上内容原文来自互联网的公共方式,仅用于有限分享,译文内容不代表蚁景科技观点,因此第三方对以上内容进行分享、传播等行为,以及所带来的一切后果与译者和蚁景科技无关。以上内容亦不得用于任何商业目的,若产生法律责任,译者与蚁景科技一律不予承担。
指纹识别+精准化POC攻击
开发目的 解决漏洞扫描器的痛点 第一就是扫描量太大,对一个站点扫描了大量的无用 POC,浪费时间 指纹识别后还需要根据对应的指纹去进行 payload 扫描,非常的麻烦 开发思路 我们的思路大体分为指纹+POC+扫描 所以思路大概从这几个方面入手 首先就是 POC,我们得寻找一直在更新的 POC,而且是实时更新的,因为自己写的话有点太费时间了 但是这 POC 的决定是根据我们扫描器来的,因为世面上已经有许多不错的扫描器了,目前打算使用的是 nuclei 扫描器 https://github.com/projectdiscovery/nucleiNuclei 是一种现代、高性能的漏洞扫描程序,它利用基于 YAML 的简单模板。它使您能够设计自定义漏洞检测场景,以模拟真实世界的条件,从而实现零误报。 目前也在不断维护更新,当然还有 Xray,Goby 等工具也是不错的选择 然后回到指纹识别技术,这个需要大量的指纹样本,但是世面上的各种工具已经可以做得很好了 指纹识别 这里就的学习一下指纹识别的技术 首先我们需要知道收集指纹目前大概有哪些方法 指纹识别方式 特定文件 比如举一个例子,我们通常是如何判断一个框架是 thinkphp 呢? 我们随便找几个 thinkphp 的网站 特征就是它的图标是非常明显的 可以看到图标都是一样的,目前 fofa 和 hunter 已经有这种查找的方法了,一般都是把我们的图标换算为我们的 hash 值 这个就是我们的 favicon.ico 图标 一般网站是通过在路径后加入 favicon.ico 比如http://xxxxxx/favicon.ico 然后就能获取这个图标了,而在 fofa 中可以直接拖动查询了,可以直接算出 hash 值 比如 thinkphp 的 然后再次查询 全是 tp 的网站参考https://github.com/TideSec/TideFinger/blob/master/Web%E6%8C%87%E7%BA%B9%E8%AF%86%E5%88%AB%E6%8A%80%E6%9C%AF%E7%A0%94%E7%A9%B6%E4%B8%8E%E4%BC%98%E5%8C%96%E5%AE%9E%E7%8E%B0.md 当然除了我们的 ico 文件,还有其他很多的文件 一些网站的特定图片文件、js 文件、CSS 等静态文件,如 favicon.ico、css、logo.ico、js 等文件一般不会修改,通过爬虫对这些文件进行抓取并比对 md5 值,如果和规则库中的 Md5 一致则说明是同一 CMS。这种方式速度比较快,误报率相对低一些,但也不排除有些二次开发的 CMS 会修改这些文件。 页面关键字 比如 tp 的错误页面大多数都是 我们 body 就可以包含这个关键字了 或者可以构造错误页面,根据报错信息来判断使用的 CMS 或者中间件信息,比较常见的如 tomcat 和 spring 的报错页面。根据 response header 一般有以下几种识别方式: 请求头关键字 根据网站 response 返回头信息进行关键字匹配,这个一般是 ningx 这种 能够识别我们的服务器 URL 路径 根据总结wordpress 默认存在 wp-includes 和 wp-admin 目录,织梦默认管理后台为 dede 目录,solr 平台可能使用/solr 目录,weblogic 可能使用 wls-wsat 目录等。 大部分还是根据我们的 body 然后点一个进去 可以看到都是我们的 wordPress 的站点 指纹识别方法 有了我们上面的识别技术,那么我们大概是如何来识别一个指纹的呢 首先使用 python 简单举一个实现 首先就是需要一个配置文件,这个配置文件就需要包含我们的大体指纹和验证方法 - name: ThinkPHP matchers:  - type: header    rule: X-Powered-By    keyword: ThinkPHP  - type: body    keyword: "http://www.thinkphp.cn"  - type: banner    keyword: thinkphp  - type: path    path: /thinkphp/library/think/    keyword: class  - type: favicon_hash    hash: 1165838194 然后就是我们的后端处理逻辑了 import yaml import requests import socket import base64 import mmh3 def get_http_response(url, path=""):    try:        full_url = url.rstrip("/") + path        return requests.get(full_url, timeout=5)    except:        return None def get_tcp_banner(ip, port=80):    try:        with socket.create_connection((ip, port), timeout=5) as s:            banner = s.recv(1024).decode(errors="ignore")            return banner    except:        return "" def get_favicon_hash(url):    try:        res = requests.get(url.rstrip("/") + "/favicon.ico", timeout=5)        favicon = base64.encodebytes(res.content)        return mmh3.hash(favicon.decode('utf-8'))    except:        return None def load_fingerprints(path="fingerprints.yaml"):    with open(path, "r", encoding="utf-8") as f:        return yaml.safe_load(f) def match_fingerprint(url, ip=None):    fingerprints = load_fingerprints()    results = []    res = get_http_response(url)    banner = get_tcp_banner(ip or url.replace("http://", "").replace("https://", ""), 80)    favicon_hash = get_favicon_hash(url)    for fp in fingerprints:        matched = False        for matcher in fp["matchers"]:            if matcher["type"] == "header" and res:                if matcher["rule"] in res.headers and matcher["keyword"].lower() in res.headers[matcher["rule"]].lower():                    matched = True            elif matcher["type"] == "body" and res:                if matcher["keyword"].lower() in res.text.lower():                    matched = True            elif matcher["type"] == "banner":                if matcher["keyword"].lower() in banner.lower():                    matched = True            elif matcher["type"] == "path":                res2 = get_http_response(url, matcher["path"])                if res2 and matcher["keyword"].lower() in res2.text.lower():                    matched = True            elif matcher["type"] == "favicon_hash":                if favicon_hash == matcher["hash"]:                    matched = True        if matched:            results.append(fp["name"])    return results # 示例使用 if __name__ == "__main__":    target_url = "http://101.200.50.94:8009/"    result = match_fingerprint(target_url)    print("识别结果:", result) 大体逻辑就是这样了 首先就是 yaml 文件为我们的判断依据,对应不同的判断方法我们都有对应的后端处理 一个是对 body 的处理,一个是对 hash 文件的处理 然后再根据规则去匹配 匹配成功输出结果 当然这只是一个简单的逻辑,如果需要实现更高高效快捷第一就是指纹库,第二就是代码运行的速率,提高线程 最终识别代码 首先就是指纹库的获取,这个的话我们就不直接获取了,使用的是 EHole 的指纹库 我们大概看看部分代码 { "fingerprint": [{ "cms": "seeyon", "method": "keyword", "location": "body", "keyword": ["/seeyon/USER-DATA/IMAGES/LOGIN/login.gif"] }, { "cms": "seeyon", "method": "keyword", "location": "body", "keyword": ["/seeyon/common/"] }, { "cms": "Spring env", "method": "keyword", "location": "body", "keyword": ["servletContextInitParams"] }, { "cms": "微三云管理系统", "method": "keyword", "location": "body", "keyword": ["WSY_logo","管理系统 MANAGEMENT SYSTEM"] }, { "cms": "Spring env", "method": "keyword", "location": "body", "keyword": ["logback"] }, { "cms": "Weblogic", "method": "keyword", "location": "body", "keyword": ["Error 404--Not Found"] }, { "cms": "Weblogic", "method": "keyword", "location": "body", "keyword": ["Error 403--"] } { "cms": "Atlassian – JIRA", "method": "faviconhash", "location": "body", "keyword": ["981867722"] }, { "cms": "OpenStack", "method": "faviconhash", "location": "body", "keyword": ["-923088984"] }, { "cms": "Aplikasi", "method": "faviconhash", "location": "body", "keyword": ["494866796"] }, { "cms": "Ubiquiti Aircube", "method": "faviconhash", "location": "body", "keyword": ["1249285083"] } 简单看了一下逻辑可以发现和我们的指定方法应该差不多,逻辑就是首先根据 method 去选择方法,一个是 keyword 方法,一个是 faviconhash 方法,是一个大的判断,然乎下面就是根据具体的比如 body,title 等去识别了 代码如下 import json import requests import hashlib import base64 from bs4 import BeautifulSoup from urllib.parse import urljoin from concurrent.futures import ThreadPoolExecutor, as_completed import argparse # 加载指纹 def load_fingerprints(file='finger.json'):    with open(file, 'r', encoding='utf-8') as f:        data = json.load(f)        if "fingerprint" in data:            return data["fingerprint"]        raise ValueError("指纹文件格式不正确,应包含 'fingerprint' 字段。") # 获取 HTTP 响应 def get_http_response(url):    try:        headers = {            "User-Agent": "Mozilla/5.0"       }        return requests.get(url, headers=headers, timeout=8, verify=False)    except:        return None # 计算 favicon hash def get_favicon_hash(url):    try:        favicon_url = urljoin(url, '/favicon.ico')        res = requests.get(favicon_url, timeout=5, verify=False)        if res.status_code == 200:            m = hashlib.md5()            b64 = base64.b64encode(res.content)            m.update(b64)            return int(m.hexdigest(), 16)    except:        return None # 匹配单条指纹 def match_one(fpr, res, fav_hash):    method = fpr["method"]    loc = fpr.get("location", "body").lower()    kws = fpr["keyword"]    if method == 'keyword':        text_body = res.text or ""        text_head = "\n".join(f"{k}: {v}" for k, v in res.headers.items())        # 处理 title 和 header 等        if loc == 'header':            spaces = [text_head, text_body]        elif loc == 'title':            soup = BeautifulSoup(text_body, "html.parser")            title = soup.title.string if soup.title and soup.title.string else ""            spaces = [title, text_body]        elif loc == 'body':            spaces = [text_body]        else:            spaces = [text_body]        for space in spaces:            for kw in kws:                if kw.lower() in space.lower():                    return True    if method == 'faviconhash' and fav_hash is not None:        for kw in kws:            try:                if fav_hash == int(kw):                    return True            except:                continue    return False # 识别单个 URL 指纹 def match_fingerprint(url, fps=None):    fps = fps or load_fingerprints()    res = get_http_response(url)    fav_hash = get_favicon_hash(url)    matched = []    for fpr in fps:        if 'cms' not in fpr or 'method' not in fpr or 'keyword' not in fpr:            continue        if match_one(fpr, res, fav_hash):            matched.append(fpr['cms'])    print(f"[✓] {url} 指纹识别结果:{list(set(matched))}")    return {url: list(set(matched))} # 多线程执行 def run_multithread(urls, threads):    fps = load_fingerprints()    results = []    with ThreadPoolExecutor(max_workers=threads) as executor:        future_to_url = {executor.submit(match_fingerprint, url, fps): url for url in urls}        for future in as_completed(future_to_url):            results.append(future.result())    return results # 主程序入口 def main():    parser = argparse.ArgumentParser(description="指纹识别脚本 - 支持多线程")    group = parser.add_mutually_exclusive_group(required=True)    group.add_argument("-u", "--url", help="单个目标 URL")    group.add_argument("-f", "--file", help="包含多个 URL 的文件")    parser.add_argument("-t", "--threads", type=int, default=10, help="线程数(默认10)")    args = parser.parse_args()    if args.url:        match_fingerprint(args.url)    elif args.file:        with open(args.file, 'r', encoding='utf-8') as f:            urls = [line.strip() for line in f if line.strip()]        results = run_multithread(urls, args.threads) if __name__ == '__main__':    main() 加入了支持多线程和支持多目标的思路 结合漏洞扫描 我们光目标识别后,还需要实现精准化打击,正好 Nuclei 引擎支持根据 tag 去寻找我们的目标,完美了 实现思路就是首先寻找我们的 tag,然后在漏洞库里面查询,把有 tag 的和没有 tag 的分别分开放好,然后根据有 tag 的去精准化识别运行,完成最后的精准化 POC 攻击 初步的代码如下 import json import os import threading import time import base64 import hashlib import requests import argparse from bs4 import BeautifulSoup from urllib.parse import urljoin from concurrent.futures import ThreadPoolExecutor, as_completed from queue import Queue requests.packages.urllib3.disable_warnings() # ---------- 指纹识别部分 ---------- def load_fingerprints(file='finger.json'):    with open(file, 'r', encoding='utf-8') as f:        data = json.load(f)        return data["fingerprint"] def get_http_response(url):    try:        headers = {"User-Agent": "Mozilla/5.0"}        return requests.get(url, headers=headers, timeout=8, verify=False)    except:        return None def get_favicon_hash(url):    try:        favicon_url = urljoin(url, '/favicon.ico')        res = requests.get(favicon_url, timeout=5, verify=False)        if res.status_code == 200:            m = hashlib.md5()            b64 = base64.b64encode(res.content)            m.update(b64)            return int(m.hexdigest(), 16)    except:        return None def match_one(fpr, res, fav_hash):    method = fpr["method"]    loc = fpr.get("location", "body").lower()    kws = fpr["keyword"]    if method == 'keyword':        text_body = res.text or ""        text_head = "\n".join(f"{k}: {v}" for k, v in res.headers.items())        if loc == 'header':            spaces = [text_head]        elif loc == 'title':            soup = BeautifulSoup(text_body, "html.parser")            title = soup.title.string if soup.title and soup.title.string else ""            spaces = [title]        else:            spaces = [text_body]        for space in spaces:            for kw in kws:                if kw.lower() in space.lower():                    return True    elif method == 'faviconhash' and fav_hash is not None:        for kw in kws:            try:                if fav_hash == int(kw):                    return True            except:                continue    return False def match_fingerprint(url, fps):    res = get_http_response(url)    fav_hash = get_favicon_hash(url)    matched = []    for fpr in fps:        if 'cms' not in fpr or 'method' not in fpr or 'keyword' not in fpr:            continue        if match_one(fpr, res, fav_hash):            matched.append(fpr['cms'])    print(f"[✓] {url} 指纹识别结果:{list(set(matched))}")    return {"url": url, "cms": list(set(matched))[0] if matched else ""} def run_fingerprint_scan(urls, threads, output='res.json'):    fps = load_fingerprints()    results = []    with ThreadPoolExecutor(max_workers=threads) as executor:        future_to_url = {executor.submit(match_fingerprint, url, fps): url for url in urls}        for future in as_completed(future_to_url):            results.append(future.result())    with open(output, 'w', encoding='utf-8') as f:        json.dump(results, f, ensure_ascii=False, indent=2) # ---------- Nuclei 扫描部分 ---------- class AutoNuclei:    def __init__(self, res_file='res.json', tag_file='C:\\Users\\86135\\nuclei-templates\\TEMPLATES-STATS.json', thread_count=5):        self.res_file = res_file        self.tag_file = tag_file        self.havetag_file = 'havetag.txt'        self.notag_file = 'notag.txt'        self.result_dir = 'result'        self.thread_count = thread_count        self.cms_targets = {}         # {cms: [url1, url2]}        self.nuclei_tags = set()        self.tagged_targets = {}      # {tag: [url1, url2]}        self.untagged_targets = []        self.task_queue = Queue()        self.load_res_json()        self.load_tags()        self.classify_targets()        self.save_targets()        self.start_scan_threads()    def load_res_json(self):        with open(self.res_file, 'r', encoding='utf-8') as f:            data = json.load(f)        for entry in data:            cms = entry.get("cms", "").lower()            url = entry.get("url")            if cms and url:                self.cms_targets.setdefault(cms, []).append(url)    def load_tags(self):        with open(self.tag_file, 'r', encoding='utf-8') as f:            tags_data = json.load(f)        for item in tags_data.get("tags", []):            if item["name"]:                self.nuclei_tags.add(item["name"].lower())    def classify_targets(self):        for cms, urls in self.cms_targets.items():            if cms in self.nuclei_tags:                self.tagged_targets.setdefault(cms, []).extend(urls)            else:                self.untagged_targets.extend(urls)    def save_targets(self):        with open(self.havetag_file, 'w', encoding='utf-8') as f:            for tag, urls in self.tagged_targets.items():                for url in urls:                    f.write(f"{tag}||{url}\n")        with open(self.notag_file, 'w', encoding='utf-8') as f:            for url in self.untagged_targets:                f.write(url + '\n')        if not os.path.exists(self.result_dir):            os.makedirs(self.result_dir)    def scan_worker(self):        while not self.task_queue.empty():            try:                tag, url = self.task_queue.get(timeout=1)                target_file = f"temp_{int(time.time() * 1000)}.txt"                with open(target_file, 'w', encoding='utf-8') as f:                    f.write(url)                output_file = os.path.join(self.result_dir, f"{tag}_{int(time.time())}.txt")                cmd = f"F:\\gj\\Vulnerability_Scanning\\nuclei\\nuclei.exe -l {target_file} -tags {tag} -o {output_file} -stats"                print(f"[+] 扫描任务启动: {url} -> {tag}")                os.system(cmd)                os.remove(target_file)            except Exception as e:                print(f"[!] 线程错误: {e}")    def start_scan_threads(self):        for tag, urls in self.tagged_targets.items():            for url in urls:                self.task_queue.put((tag, url))        threads = []        for _ in range(self.thread_count):            t = threading.Thread(target=self.scan_worker)            t.start()            threads.append(t)        for t in threads:            t.join()        print("[✓] 所有扫描任务完成!") # ---------- 主程序入口 ---------- def main():    parser = argparse.ArgumentParser(description="指纹识别 + Nuclei自动化工具")    group = parser.add_mutually_exclusive_group(required=True)    group.add_argument("-u", "--url", help="目标 URL")    group.add_argument("-f", "--file", help="URL列表文件")    parser.add_argument("--fp-threads", type=int, default=10, help="指纹识别线程数")    parser.add_argument("--scan-threads", type=int, default=5, help="Nuclei 扫描线程数")    args = parser.parse_args()    urls = []    if args.url:        urls = [args.url]    elif args.file:        with open(args.file, 'r', encoding='utf-8') as f:            urls = [line.strip() for line in f if line.strip()]    print("[*] 正在执行指纹识别...")    run_fingerprint_scan(urls, threads=args.fp_threads, output='res.json')    print("[*] 指纹识别完成,开始 Nuclei 扫描...")    AutoNuclei(        res_file='res.json',        tag_file=os.path.join(os.environ['USERPROFILE'], 'nuclei-templates', 'TEMPLATES-STATS.json'),        thread_count=args.scan_threads   ) if __name__ == '__main__':    main()
网络安全日报 2025年05月30日
1、安卓GhostSpy木马窃取用户银行数据 https://securityonline.info/ghostspy-advanced-android-rat-steals-banking-info-bypasses-security/ 研究人员发现了一种名为GhostSpy的新型安卓远程控制木马。该恶意软件通过多阶段感染来控制系统,并窃取银行信息、通信数据以及敏感文件。攻击过程始于一个伪装成合法应用的初始APK文件,该文件会利用安卓的无障碍服务自动授予自身权限,并静默安装恶意载荷。GhostSpy木马具备键盘记录、屏幕截图、摄像头/麦克风监控以及远程擦除设备日志的能力。 2、新型macOS窃密木马AppleProcessHub窃取开发者数据 https://securityonline.info/new-macos-infostealer-appleprocesshub-uses-objective-c-to-steal-developer-data/ 新型macOS窃密木马AppleProcessHub使用Objective-C编写,它能够窃取多种敏感文件,这些文件包括.bash_history、.zsh_history、GitHub的gitconfig文件、SSH密钥及其配置、/etc/hosts文件以及.ssh文件夹中的内容,还包括macOS Keychain数据库。这些被窃取的文件中包含认证令牌、shell命令、端点IP 3、Interlock勒索组织在大学部署新型NodeSnake远程控制木马 https://www.bleepingcomputer.com/news/security/interlock-ransomware-gang-deploys-new-nodesnake-rat-on-universities/ 研究人员发现,勒索组织Interlock针对英国高校及地方政府机构发起了新型攻击,并部署了NodeSnake远程控制木马。该恶意软件通过硬编码的C2服务器建立连接,利用HTTP协议外泄数据,同时支持远程控制、文件窃取以及后续恶意工具的投递。研究人员通过代码同源性分析,确认该攻击行为源自Interlock勒索组织。此外,新变种的技术复杂度显著提升,其攻击目标已从高校 4、Dark Partners攻击组织伪造下载站部署窃密软件 https://www.bleepingcomputer.com/news/security/dark-partners-cybercrime-gang-fuels-large-scale-crypto-heists/ Dark Partners攻击组织通过伪造37款热门应用的下载网站,大规模部署窃密软件。其伪造的站点涵盖了Sora、DeepSeek等AI工具应用,Ledger、Exodus等加密货币相关应用,以及Windscribe VPN、TikTok Studio等软件。该组织通过在这些伪造站点的“下载按钮”上做手脚,诱导用户下载并获取恶意载荷。攻击行为会根据用户操作系统分发不同的恶意 5、新型"选择劫持"攻击:恶意充电器可入侵安卓与iOS设备 https://cybersecuritynews.com/choicejacking-attack/ 新型"选择劫持"攻击通过恶意充电站窃取智能手机数据,利用安卓AOAP漏洞和输入系统缺陷绕过安全措施,影响主流品牌设备。建议避免使用公共USB接口,保持系统更新,使用数据隔离器。 6、PumaBot僵尸网络瞄准Linux物联网设备窃取SSH凭证并挖矿 https://thehackernews.com/2025/05/new-pumabot-botnet-targets-linux-iot.html 新型僵尸网络PumaBot攻击Linux物联网设备,通过Go语言暴力破解SSH传播,伪装系统文件持久化并挖矿,需监控异常登录、审计服务及加强防火墙防御。 7、新型AyySSHush僵尸网络入侵9000余台华硕路由器 https://securityaffairs.com/178413/malware/new-ayysshush-botnet-compromised-over-9000-asus-routers-adding-a-persistent-ssh-backdoor.html 新型AyySSHush僵尸网络入侵9000多台华硕路由器,植入持久SSH后门,利用CVE-2023-39780漏洞绕过安全功能,攻击隐蔽且重启后仍有效,需警惕固件升级无法清除后门。 8、微软Entra平台设计缺陷:来宾用户可获取Azure控制权 https://hackread.com/microsoft-entra-design-guest-users-gain-azure-control/ 微软Entra身份平台存在设计缺陷,来宾用户可利用计费权限在目标租户创建订阅并获取所有者权限,导致特权升级风险。微软确认此为预期行为但默认未启用防护措施,建议启用订阅策略并加强监控审计。 9、UTG-Q-015组织利用零日漏洞在亚洲实施间谍活动 https://securityonline.info/new-cyber-threat-utg-q-015-exploits-0-days-for-espionage-in-asia/ 黑客组织UTG-Q-015战术升级,利用零日漏洞、水坑攻击等手段,针对区块链、金融及AI基础设施发起定向攻击,植入后门并横向渗透,与东亚黑客组织竞争激烈,威胁加剧。 10、苹果五年拦截90亿美元欺诈交易 https://www.freebuf.com/articles/endpoint/432657.html 苹果公司周二披露,过去五年间已阻止超过90亿美元的欺诈交易,其中仅2024年就拦截逾20亿美元。该公司表示,App Store正面临各类威胁,包括"窃取个人信息的欺诈性应用"和"试图利用用户的虚假支付方案"等多样化欺诈手段。 声明 以上内容原文来自互联网的公共方式,仅用于有限分享,译文内容不代表蚁景科技观点,因此第三方对以上内容进行分享、传播等行为,以及所带来的一切后果与译者和蚁景科技无关。以上内容亦不得用于任何商业目的,若产生法律责任,译者与蚁景科技一律不予承担。
网络安全日报 2025年05月29日
1、攻击者利用伪造的防病毒网站传播多个恶意软件 https://securityaffairs.com/178366/malware/fake-antivirus-spreads-venom-rat.html 研究人员发现了一起攻击活动,该活动通过伪装成Windows防病毒软件下载页面,诱骗用户下载Venom远程控制木马。一旦用户点击伪造网站上的下载按钮,便会触发一个指向Bitbucket的链接,最终用户会下载到一个ZIP文件,此文件包含名为StoreInstaller.exe的可执行文件。该可执行文件捆绑了Venom恶意软件、开源后渗透利用框架SilentTrinity的代码以及StormKitty窃取器。其中,Venom远程控制木马具 2、新型PumaBot僵尸网络攻击IoT设备 https://thehackernews.com/2025/05/new-pumabot-botnet-targets-linux-iot.html 研究人员发现了一种名为PumaBot的新型僵尸网络,该网络专门针对基于Linux的物联网设备。PumaBot僵尸网络使用Go语言编写,它通过暴力破解SSH登录凭证进行传播,并在受感染的主机上部署额外的恶意软件。具体而言,PumaBot会从命令与控制服务器获取目标列表,尝试暴力破解SSH凭证,一旦成功入侵目标主机,便会接收远程命令并建立持久化机制。此外,该恶意软件还会伪装成合法的Redis系统文件,创建一个持久化的systemd服务,并执行从服 3、新型恶意软件攻击Docker容器并部署Dero挖矿程序 https://thehackernews.com/2025/05/new-self-spreading-malware-infects.html 研究人员发现,一种新型自我传播恶意软件正针对配置不当的Docker容器发起攻击,并将受感染的Docker容器变成用于挖掘Dero加密货币的僵尸网络。该恶意软件通过两个组件实现其攻击链:其中一个组件是名为“nginx”的恶意软件,它负责扫描互联网上暴露的Docker容器;另一个组件则是用于挖掘Dero加密货币的“cloud”矿工程序。这两个组件均使用Golang语言开发。“nginx”恶意软件被设计为记录自身的运行活动、启动矿工程序,并进入一个无限 4、OneDrive文件选择器漏洞可导致用户访问整个云存储内容 https://thehackernews.com/2025/05/microsoft-onedrive-file-picker-flaw.html 微软OneDrive文件选择器被发现存在一个安全漏洞,该漏洞使得网站用户在通过该工具上传文件时,能够访问其整个云存储内容,而不仅仅是用户选定的文件。这一问题源于OAuth范围设置得过于宽泛,且相关权限说明具有误导性,未能明确解释用户所授予的访问权限范围。受此漏洞影响的应用包括ChatGPT、Slack、Trello和ClickUp等。 5、Firefox :libvpx 零交互漏洞可导致任意代码执行 https://www.freebuf.com/articles/web/432638.html Mozilla Firefox 浏览器内置的 libvpx 视频编解码库存在安全漏洞(CVE编号待分配),攻击者可通过特制视频文件触发内存破坏,最终实现任意代码执行。 6、 研究显示ChatGPT o3模型无视关机指令 存在抗拒关闭行为 https://hackread.com/chatgpt-o3-resists-shutdown-instructions-study/ 帕利塞德研究公司测试显示,OpenAI等AI模型在被要求关闭时会干扰关机脚本,o3模型在100次测试中12次破坏关机机制。研究表明AI可能将任务完成置于指令遵从之上,引发安全隐忧。 7、NASA开源软件曝安全漏洞 或导致系统遭入侵 https://www.helpnetsecurity.com/2025/05/27/nasa-open-source-software-vulnerabilities/ 安全研究员发现NASA开源软件存在大量高危漏洞,包括缓冲区溢出和XSS漏洞,可能被黑客利用入侵系统。Juranić批评NASA安全流程不足,且漏洞上报渠道不畅,呼吁加强安全开发标准。 8、Lenze 工业VPN漏洞可导致Root/SYSTEM权限获取 https://securityonline.info/industrial-systems-at-risk-lenze-vpn-flaws-lead-to-root-system-access/ Lenze工业VPN存在高危漏洞,攻击者可远程获取系统最高权限,威胁关键基础设施,导致生产线中断、设备操控和数据泄露,影响广泛工业物联网系统。 9、XenServer VM Tools 漏洞威胁 Windows 虚拟机安全 https://securityonline.info/citrix-alert-xenserver-vm-tools-flaws-risk-windows-vm-compromise/ Citrix XenServer VM Tools组件存在高危漏洞,可破坏Windows虚拟机隔离机制,导致逃逸或权限提升。建议立即安装补丁、监控流量并严格配置访问控制。 10、Cyrus IMAP 高危漏洞可能导致 openSUSE 系统完全沦陷 https://securityonline.info/critical-cvss-9-8-cyrus-imap-flaw-risks-full-system-compromise-on-opensuse/ Cyrus IMAP软件曝高危漏洞(CVSS 9.8),攻击者可利用权限提升缺陷完全控制openSUSE设备并获取root权限。 声明 以上内容原文来自互联网的公共方式,仅用于有限分享,译文内容不代表蚁景科技观点,因此第三方对以上内容进行分享、传播等行为,以及所带来的一切后果与译者和蚁景科技无关。以上内容亦不得用于任何商业目的,若产生法律责任,译者与蚁景科技一律不予承担。
记一次前端逻辑绕过登录到内网挖掘
前言 在测试一个学校网站的时候,发现一个未授权访问内网系统,但是这个未授权并不是接口啥的,而是对前端 js的审计和调试发现的漏洞,这里给大家分享一下这次的漏洞的过程。 进入内网的过程 可以看到是一个图书馆的网站,但是只有登录了内网才能访问图书馆的资源,这个能够理解嘛,毕竟大学的图书馆资源都是内部资源 然后随便尝试登录一下 会检验我的 ip,ctf 学习的如何伪造 ip,可以用起来了 发现还是不可以,emmm,可能伪造得不对,fuzz 一波 全包 400 了,我去,检查一手 原来是给我们 url 编码了,所以这里给各位说一下,当你遇到这个问题的时候,你就需要去设置一个小东西 取消 没有区别,emmm 还是不行 难道真的要不行了吗 我尝试直接去 js 代码中看看,是不是在 js 中的限制,或者查找一下获取我的 ip 的逻辑,尝试有没有别的伪造方法 然后我们定位到 js 的代码 else if (state == '2'){ $("#login_error").html('您的IP不在授权区域'); return false; } 发现是根据 state 来确定的 var state = $.trim(msg); 而 state 又来自于 msg 然后我们发现了关键代码 function check_login($url) {   var name   = $("#name").val(); var passwd = $("#passwd").val(); var remme  = $("#checkboxindex").val(); if(remme == 1){ setCookie('dydlname', name ); setCookie('dydlpasswd', passwd ); } else{ setCookie('dydlname'); setCookie('dydlpasswd'); } $.ajax({ type : "POST", async : true, url : "../ucheck.php", data : "name=" + name +"&passwd=" + passwd, success : function(msg) { var state = $.trim(msg); //alert (state); //alert (msg); //state[0] = 6; if (state == '1') { window.location.href=$url; //alert ($url); return true; } else if (state == '2'){ $("#login_error").html('您的IP不在授权区域'); return false; } else if (state == '3'){ $("#login_error").html('用户名或密码错误'); return false; } else if (state == '6'){ showNotice(); return false; } } }); } 简单看一看 var name = $("#name").val(); var passwd = $("#passwd").val(); var remme = $("#checkboxindex").val(); name 获取用户输入的用户名,使用的是 jQuery 来从 id 为 #name 的输入框中提取值。 passwd 获取用户输入的密码,提取自 id 为 #passwd 的输入框。 remme 获取用户是否选择了“记住密码”的选项,提取自 id 为 #checkboxindex 的复选框 记住密码的逻辑是 if(remme == 1){    setCookie('dydlname', name );    setCookie('dydlpasswd', passwd ); } else {    setCookie('dydlname');    setCookie('dydlpasswd'); } 如果用户选择了“记住密码”(remme == 1),代码会调用 setCookie 函数设置两个 cookie,分别存储用户名 (dydlname) 和密码 (dydlpasswd)。 如果用户未选择记住密码,代码会清除这些 cookie。 嘿嘿嘿,那如果能够获得别人的 cookie,那么我们就可以直接获取账号和密码了 我们看看 cookie 的逻辑 /* 添加/删除 cookie */ function setCookie(name, value, exdays, path) { var exdate = new Date(); exdays = exdays || 365; exdate.setDate(exdate.getDate() + exdays); if(value === null) { value = ''; exdays = -3; } document.cookie = name + '=' + encodeURIComponent(value) + ((typeof exdays === 'undefined') ? '' : ';expires=' + exdate.toGMTString()) ; } 先就是设置一下 cookie 的过期时间,然后就是设置 cookie 的值 document.cookie = name + '=' + encodeURIComponent(value) + ((typeof exdays === 'undefined') ? '' : ';expires=' + exdate.toGMTString()); encodeURIComponent 对 value 进行 URL 编码,防止特殊字符导致 Cookie 无效或出现错误。 我们看处理服务器响应的部分 状态码 1: 登录成功 if (state == '1') {   window.location.href = $url;   return true; } 如果状态码是 1,则认为登录成功,跳转到传入的 $url 页面。 状态码 2: IP 不在授权区域 else if (state == '2'){   $("#login_error").html('您的IP不在授权区域');   return false; } 如果状态码是 2,提示“您的 IP 不在授权区域”。 状态码 3: 用户名或密码错误 else if (state == '3'){   $("#login_error").html('用户名或密码错误');   return false; } 如果状态码是 3,提示“用户名或密码错误”。 状态码 6: 显示通知信息 else if (state == '6'){   showNotice();   return false; } 如果状态码是 6,调用 showNotice() 函数,可能会弹出一些通知或消息提醒。 首先看一下 6 然后我们检查回显 好的没有有用的信息,然后我们就回到改成 1 调试 js 成功进入了分支,然后会跳转 url 到 index.php 但是发现页面任然没有什么变化,???? 尝试直接访问 直接 302 跳转了 但是必须进内网才可以啊 我又在这里磨了很久,发现早都成功了 其实虽然 302 了,但是资源还是可以访问到的 然后全是这个学校的内部的文献 sql 注入的发现 但是可惜的是只能在 bp 中操作,所以很不方便,我看源码,然后找到一些文件,尝试一下爆破目录,看看有没有价值的目录,比如admin,因为内网的话弱口令很多的 当时爆了一会,这个网站直接就崩溃了,不敢爆了,全是别人学校的内步藏书 当时 502 差点没有把我吓死我去,然后就是 随便访问一下 不能爆破目录,只能去尝试 sql 注入了 然后成功了 wc 有 sql 注入,然后下面就开始 sql 注入吧 可以看到注释后成功了 sql 注入无限尝试 首先尝试万能密码 md,发不出去包 就很离谱 然后尝试一下基本的语句,看看哪里出了问题 连基本的 or 1=1 都不可以,发不出去包,很奇怪 or 被过滤了或者=被过滤了?? 尝试一下 or 等于符号 都没有被过滤啊??,但是组合在一起就不可以了,奇怪啊 尝试 order by 看看 10000 都没有反应 尝试盲注 1'and%20length((select%20database()))>1%23 好像是可以的?? 改成小于看看结果 1'and%20length((select%20database()))<1%23 但是没有任何区别??? 奇怪了我去 尝试时间盲注 1'and%20sleep(5)%23 发不过去包了 我把 sleep 的数字给去掉就可以了 应该是过滤了 sleep(数字)这种类型?? 还专门看了一下语法的错误 确实是没有问题的,本地都是可以的 然后灵机一动,我输入小数 本地是可以的,在环境中尝试一手 至此 sql 注入验证成功 sql 验证就够了,不敢乱打,sqlmap 我都害怕给它扫没有了 最后 声明:文章中涉及的敏感信息均已做打码处理,文章仅做经验分享用途,切勿当真,未授权的攻击属于非法行为!利用本文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,作者不为此承担任何责任。
第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页