求助 - 网站被恶意 iFrame, 怎么破? (弹股论斤 - 当股票遇上弹幕) - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
请不要在回答技术问题时复制粘贴 AI 生成的内容
hr6r
5.18D

求助 - 网站被恶意 iFrame, 怎么破? (弹股论斤 - 当股票遇上弹幕)

  •  
  •   hr6r
    hr6r Jul 4, 2015 8732 views
    This topic created in 3954 days ago, the information mentioned may be changed or developed.

    我的网站最近访问比较人多, 先感谢大家的支持.

    我的网站是 http://tangu.nextbang.com, 被很多人盯上了, 这两天发现这个网站 http://www.izizhucan.com/tangulunjin.html 恶意iframe, 现在不知道怎么破了, 我运维经验不多, 求大家帮助.

    1, 昨天在js 里面加上了 if (window !== top) { 判断. OK了.

    2, 今天发现他又加强了, 整个下载了我的前端代码, 把上面的判断去掉了. 我去...

    麻烦大家帮帮忙, 这种情况怎么破?? 其他的重js webapp 是怎么应付这种问题的?

    Supplement 1    Jul 4, 2015
    不好意思真的太忙了, 现在才回复大家, 非常感谢大家的帮助.

    解决的方法是nginx 上判断 valid_referers.

    这两天因为太累, 早上发现这个又很生气, 好好的做技术干嘛这样, 脑子有点空白.
    现在想明白了给大家分享一下.

    首先我的弹股是一个single page app, 前端比较重.

    第一次对方是直接iframe 我的网站. 于是我在js 中加上了 if (window !== top) { 的判断, 当时是有效的.

    第二次, 对方将我的所有前端, 包括html 和js 全部下载在本地run, 真是...
    所以解决的办法就是在nginx 里面加上 valid_referers 的判断, 如果不是我的域, 直接返回403.
    效果就是对方的页面能看到主页(因为他已经将html和js 都下载本地了), 但是无法得到我的数据了.

    这件事真的让我很生气, 进而很难过, 为什么这个国家的人们都在想方设法的钻空子.

    最后, 我本人在运维上的水平非常有限, 这两天已经恶补了一些, 还是希望大家能够关怀我和爱护我, 多多帮助我, 哈哈, 谢谢大家!
    Supplement 2    Jul 6, 2015
    referer 误伤了很多其他的源, 怪我没没搞明白. 大伙谨慎使用.
    61 replies    2015-07-06 13:23:32 +08:00
    kn007
        1
    kn007  
       Jul 4, 2015
    js判断域名。
    deny 对方ip
    plqws
        2
    plqws  
       Jul 4, 2015
    数据来源是哪里?后端难道不是你自己的吗?
    kn007
        3
    kn007  
       Jul 4, 2015
    如果是直接下载的。那你就要把程序搞复杂点,比如数据请求需要走你服务器,服务器上加判断,非白名单不返回
    TakanashiAzusa
        4
    TakanashiAzusa  
       Jul 4, 2015 via Android
    同楼上。js判断域名。记得代码混淆
    TakanashiAzusa
        5
    TakanashiAzusa  
       Jul 4, 2015 via Android
    @kn007 有自己后台的话,一个跨域就可以搞死对面了吧。。
    kn007
        6
    kn007  
       Jul 4, 2015
    @TakanashiAzusa 哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈,这招太狠。。。
    hr6r
        7
    hr6r  
    OP
       Jul 4, 2015
    @kn007 nginx 的$host 都不行? 我有点弄不明白... 要在我的服务器端代码判断才行?
    @TakanashiAzusa 跨域是指add_header X-Frame-Options SAMEORIGIN; 设置吗? 设置的但是无效, 非常奇怪, 不明白...
    loading
        8
    loading  
       Jul 4, 2015 via Android
    html 不都是你的吗?
    写段js,不是自己域名就弹窗,放广告,想做什么坏事都行。

    记得,自己在后台写开关,想起来就启动几分钟…
    RIcter
        9
    RIcter  
       Jul 4, 2015 via iPhone   2
    <script>document.write('Hacked by hr6r');</script>
    hr6r
        10
    hr6r  
    OP
       Jul 4, 2015
    就是要改我后台的js 咯....
    就是不想再加重后台的负担了..
    virusdefender
        11
    virusdefender  
       Jul 4, 2015
    X-Frame-Options
    TakanashiAzusa
        12
    TakanashiAzusa  
       Jul 4, 2015 via Android
    @hr6r nginx设置允许跨域的域名就好了,这样其他的就请求不到数据了。设置了无效的话有可能是你语法问题。。
    mortal
        13
    mortal  
       Jul 4, 2015
    LZ 的这个网站已经在微博上被人转发许多次了 : ) 说明大家喜欢,人一多自然就有攻击,LZ 加油哇。
    kn007
        14
    kn007  
       Jul 4, 2015   1
    @hr6r nginx是valid_referers。
    但是最好还是js判断域名。
    跨域是指XSS。
    hahasong
        15
    hahasong  
       Jul 4, 2015   1
    服务端响应头 ,这一项 Access-Control-Allow-Origin:* 去掉,或者写死你的域名 'nextbang.com'。
    js 端强制声明一下 document.domain = 'nextbang.com' 并做代码压缩。
    不过iframe嵌套这样做然并卵。还是检测下如果父窗口存在,就不停alert吧
    TakanashiAzusa
        16
    TakanashiAzusa  
       Jul 4, 2015 via Android   1
    @kn007 js还是可以被绕过去的。。毕竟是前端的东西,任人打扮。。
    我这里指的是nginx配置里的Access-Control-Allow-Origin ,因为数据是通过ajax提交的,浏览器默认会检查服务器的crossdomain.xml,不在里面的话数据会发送失败的
    MrEggNoodle
        17
    MrEggNoodle  
       Jul 4, 2015
    后台加上请求域名判断?
    typcn
        18
    typcn  
       Jul 4, 2015
    if(window.location.origin != "http://tangu.nextbang.com"){ window.location = "http://tangu.nextbang.com" }

    混淆一下

    eval(function(p,a,c,k,e,d){e=function(c){return c.toString(36)};if(!''.replace(/^/,String)){while(c--){d[c.toString(a)]=k[c]||c.toString(a)}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}('h 3=["\\6\\g\\8\\7\\8\\4","\\i\\6\\d\\9\\5\\8\\6\\4","\\j\\5\\5\\e\\f\\a\\a\\5\\9\\4\\7\\m\\c\\4\\k\\o\\5\\n\\9\\4\\7\\c\\d\\6\\p"];l(b[3[1]][3[0]]!=3[2]){b[3[1]]=3[2]};',26,26,'|||_0x49e0|x6E|x74|x6F|x67|x69|x61|x2F|window|x2E|x63|x70|x3A|x72|var|x6C|x68|x65|if|x75|x62|x78|x6D'.split('|'),0,{}))


    楼主你可以放到 jquery.js socket-io.js 之类的文件里面
    typcn
        19
    typcn  
       Jul 4, 2015
    Socket.io 里面的 Access-Control-Allow-Origin:* 改成 Access-Control-Allow-Origin:http://tangu.nextbang.com
    kn007
        20
    kn007  
       Jul 4, 2015
    @TakanashiAzusa 嗯。我晓得。其实楼主比较需要的是把详细方案告诉他,他直接做就行了。23333
    imlonghao
        21
    imlonghao  
       Jul 4, 2015
    HTTP头加上,x-frame-options:DENY
    您可以测试一下我的博客, https://imlonghao.com/
    就是不能用iframe套进去的。
    hr6r
        22
    hr6r  
    OP
       Jul 4, 2015
    搞定了, 请大家围观 -> http://www.izizhucan.com/tangulunjin.html
    他把我的html和 js 都下载本地run 了, 真奇葩.

    看看他还能搞出啥来.

    把技术用在这.. 真是.... 唉...
    MountainRain
        23
    MountainRain  
       Jul 4, 2015
    用JS判断
    如果是自己的网页过来的应该咋地就是咋地
    如果是别人iFrame的,alert提示,再跳转到你自己的页面啥。。或者显示点什么啥子的
    ccbikai
        24
    ccbikai  
    PRO
       Jul 4, 2015
    kn007
        25
    kn007  
       Jul 4, 2015
    @hr6r 恭喜!
    你可以在本帖补充你的解决办法,留给后人搜索之,用得上。
    imlonghao
        26
    imlonghao  
       Jul 4, 2015
    他现在已经弹不了了~
    lk09364
        27
    lk09364  
       Jul 4, 2015
    @TakanashiAzusa 请教一下,crossdomain.xml 不是 Flash 的吗?
    TakanashiAzusa
        28
    TakanashiAzusa  
       Jul 4, 2015 via Android   1
    @lk09364 那可能是我记错了。我只记得静态资源也会触发这个。待会儿我开电脑了的时候再研究下
    Comdex
        29
    Comdex  
       Jul 4, 2015
    楼主你的网站的弹幕的评论只是在发表后出现一瞬间的么?不保存在数据库?
    CRVV
        30
    CRVV  
       Jul 4, 2015
    上证指数3686.92元?
    mrjoel
        31
    mrjoel  
       Jul 4, 2015
    增加一个方法。。。直接禁了他服务器ip

    看他有多少ip可换
    mrjoel
        32
    mrjoel  
       Jul 4, 2015
    额。。。iframe 。。。说错了
    bdbai
        33
    bdbai  
       Jul 4, 2015
    @typcn packed混淆的js太容易解密了,去掉eval往控制台一丢就行,最多有些带\x的字符串。
    Air_Mu
        34
    Air_Mu  
       Jul 4, 2015
    建议人肉 全网扩散公布这婊子的信息
    pythoner
        35
    pythoner  
       Jul 4, 2015
    刚刚还在网易上看到楼主的新闻,加油
    Acirno
        36
    Acirno  
       Jul 4, 2015
    额 载入不了 咋回事
    ddou
        37
    ddou  
       Jul 4, 2015
    @virusdefender X-Frame-Options的确是解决iframe的正确方法。但直接下载整个前端的话,就只能另想奇招了。
    SuujonH
        38
    SuujonH  
       Jul 4, 2015
    403
    TakanashiAzusa
        39
    TakanashiAzusa  
       Jul 4, 2015
    @lk09364 刚刚试了下,ajax请求跨域的话,确实不需要crossdomain.xml,不过我发现不管是不是跨域,服务器都会返回一个200,我猜可能跨域的话服务器端的解析程序就直接断开连接了,然后浏览器提示跨域(不懂nginx,这个单纯猜测)
    lk09364
        40
    lk09364  
       Jul 4, 2015
    @TakanashiAzusa 我估计是伺服器收到 AJAX 请求后回复时加上 Access-Control-Allow-Origin Header,交给浏览器判断当前页面是不是在 Access-Control-Allow-Origin 里。
    Qapla
        41
    Qapla  
       Jul 4, 2015
    403
    TakanashiAzusa
        42
    TakanashiAzusa  
       Jul 4, 2015   1
    @lk09364 我又试了下,你说的是对的。默认不返回 Access-Control-Allow-Origin Header的话就是不允许跨域,但是可以跨域的域名服务器文件头会返回一个 Access-Control-Allow-Origin Header,然后浏览器做判断。
    wheatcc
        43
    wheatcc  
       Jul 4, 2015
    一直载入中。。。
    sciooga
        44
    sciooga  
       Jul 4, 2015

    那个网站挂出了楼主的链接,然后因为 referer 的问题...直接点击跳转就403了,楼主是不是考虑吸收掉他偷来的用户...
    Perry
        45
    Perry  
       Jul 4, 2015
    @sciooga 那个时楼主自己之前挂的,然后模仿者抄的时候顺便抄进去了,不过这个建议倒是真的可以
        46
    chairuosen  
       Jul 4, 2015
    我从V2点过去都是403的,应该数据接口加referer判断 首页html不加
    sciooga
        47
    sciooga  
       Jul 4, 2015
    @Perry 域名不对接口返回的弹幕全部是广告或者源站链接更漂亮...
    des
        48
    des  
       Jul 4, 2015
    估计对方下一步就是进行代理了……
    Perry
        49
    Perry  
       Jul 5, 2015 via iPhone
    有个问题 到底是 danmu 还是 tanmu。。
    shiniv
        50
    shiniv  
       Jul 5, 2015
    @Perry danmu
    momou
        51
    momou  
       Jul 5, 2015 via Android
    楼主上知乎日报了…
    limtao
        52
    limtao  
       Jul 5, 2015
    刚来这没几天 居然发现你了!而且首页发现你的po居然还被顶上了...哈哈哈哈
    等过段时间大家不忙的时候出来聊聊。
    上个月在IBM刚刚做完一个银行的渗透性项目,你提到的iframe攻击在术语上叫做clickjacking,
    解决方案google一下特别多。我当时用的 X-Frame-Options设置成deny或者same-origin。
    你这个案例我发现个人开发者的时代要来临了。加油!
    我这有不少ios的项目可能要转包,到时候聊聊。哈哈哈哈哈哈哈
    yylzcom
        53
    yylzcom  
       Jul 5, 2015
    “网站持续被空军攻击, 请大家收藏备用网址:
    http://tangu2.nextbang.com

    不要脸的还真多,楼主,人家说你是做空力量,把你网址说成备用网址
    你直接在页面上发一声明打他脸吧,我都看不下去了
    另外又深刻地认识到“空军论”“阴谋论”受众的智商
    nikubenki
        54
    nikubenki  
       Jul 5, 2015 via iPhone
    玩儿蛋,目测以后弹幕网站会有越来越多人管这叫“檀木”了。
    imlz
        55
    imlz  
       Jul 5, 2015
    楼主,我这里建了一个玩玩,只作学习交流,我做攻(表想歪),你想想防,私下讨论可以根据我域名各种找到我联系方式
    http://stock.ilz.me/
    只作学习交流
    imlz
        56
    imlz  
       Jul 5, 2015
    静态文件完全可以本地,我就借用一下你的站点,主要是数据飘的保护。测试请阅读完alert框后点“取消”
    simodorg
        57
    simodorg  
       Jul 5, 2015
    @imlz 部分乱码了,编码好像有些错误。
    imlz
        58
    imlz  
       Jul 5, 2015
    @simodorg 应该是未强制设置utf8,麻烦测试时手动改一下把
    hr6r
        59
    hr6r  
    OP
       Jul 6, 2015
    @imlz 求老司机带路, 我已筋疲力尽.
    jugelizi
        60
    jugelizi  
       Jul 6, 2015
    post才限制下来源吧
    laiyingdong
        61
    laiyingdong  
       Jul 6, 2015
    我看了一下 这个网站的本站什么自助餐 其实完全是一个靠采集 垃圾广告 加盟广告 的垃圾网站 估计主要是靠站群广告盈利 你这个页面我也不知道怎么说了
    About     Help     Advertise     Blog     API     FAQ     Solana     3278 Online   Highest 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 116ms UTC 00:09 PVG 08:09 LAX 17:09 JFK 20:09
    Do have faith in what you're doing.
    ubao msn 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