security.txt 中的安全联系方式、以及在 LinkedIn 上直接私信该公司 CISO。截至 2 月 20 日,研究人员未收到任何回复,并确认窃密程序仍在运行。此次攻击使用了一种名为 “双击窃密(double-tap skimming)” 的技术。随着商家越来越多地使用符合 PCI-DSS 规范的托管支付页面,此类攻击愈发普遍。
根据 PCI-DSS 规则,敏感的银行卡信息必须输入到服务商托管的安全表单中(本次案例为 PayPlug)。
攻击者绕过该限制的方式是:在结账页面直接插入高度仿真的伪造支付表单。
受害者会在这个伪造的浮层中输入卡号、有效期和 CVV,随后被无缝跳转到真实支付页面并被要求重新输入信息。
大多数用户以为第一次输入失败,便重新完成支付,完全不知情自己的银行卡信息已被盗取。

该窃密程序基于一套可复用框架开发,目前看来支持 WordPress、Magento、PrestaShop、OpenCart 等多种系统。
在启动前,它会执行多项检查,判断访客是否为管理员。
如果是管理员,脚本会记录 Admin detected 并中止运行,确保商家在测试结账流程时看不到恶意表单。
该框架支持 7 种注入模式,包括替换、浮层、弹窗、离屏渲染等,可适配不同结账布局。
其内置 “强力隐藏” 机制 ,即使网站自身 JavaScript 尝试恢复真实支付表单,也会被持续压制。
从技术实现来看,该窃密程序仅在结账页面激活,并使用 localStorage 管理运行状态。
它通过事件监听器监控所有 input、select、textarea 元素,甚至利用 MutationObserver 追踪 Select2、Vue Select 等动态下拉组件。
mn_ 为前缀存储在 localStorage 中,其中银行卡信息明确保存为 cardNum、exp、cvv 字段。为防止数据被覆盖,脚本对 localStorage.setItem 进行 猴子补丁(monkey-patch) 劫持,阻止用更短字符串覆盖已保存的卡号。
当受害者点击结账按钮时,恶意程序会校验卡号至少 13 位,然后构造包含银行卡、账单信息与浏览器 UA 的 JSON 载荷,进行 Base64 编码,并通过 GET 请求发送到 stylemercedes.top。
该接口伪装成分析统计 API,避免引起怀疑。
数据窃取完成后,恶意代码会清除注入的元素、恢复原始结账页面,移除 disabled、aria-disabled 等属性与相关 CSS 类以启用支付按钮,然后自动触发真实支付流程。








发表评论
您还未登录,请先登录。
登录