V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
qichunren
V2EX  ›  V2EX

V2EX的个人设置中的自定义CSS功能存在安全漏洞

  •  
  •   qichunren · 2012-06-08 16:09:25 +08:00 · 4992 次点击
    这是一个创建于 4581 天前的主题,其中的信息可能已经有所发展或是发生改变。
    输入其中的内容如下,你们懂的。

    </style>
    <script>
    alert("xss");
    </script>
    <style>
    #Top {
    background: #BDBDBD;
    }
    31 条回复    1970-01-01 08:00:00 +08:00
    disinfeqt
        1
    disinfeqt  
       2012-06-08 16:10:31 +08:00
    XSS 也就黑你自己而已……
    loading
        2
    loading  
       2012-06-08 16:13:31 +08:00
    当v2ex数据库能被插这些代码的时候,哪里还安全。

    这个权当是自定JS功能的"预留接口"
    bhuztez
        3
    bhuztez  
       2012-06-08 16:15:32 +08:00
    @disinfeqt CSRF ...
    qichunren
        4
    qichunren  
    OP
       2012-06-08 16:15:54 +08:00
    @disinfeqt 我当然知道这个自定义的CCS,是对当前登录用户,起作用的。但这的确是一个漏洞,虽然我还没有想到怎么样可以有效地利用。
    1212e
        5
    1212e  
       2012-06-08 16:16:29 +08:00
    Livid
        6
    Livid  
    MOD
       2012-06-08 16:24:00 +08:00
    你可以对自己的帐号做任何事情啊,就像你永远都可以在浏览器地址栏用 javascript: 来做任何事情,但是这个不是安全漏洞。除非你能够将这些代码显示在别人的浏览器里。
    eric_zyh
        7
    eric_zyh  
       2012-06-08 16:28:54 +08:00
    可以用ajax给服务器post数据不?
    jackmasa
        8
    jackmasa  
       2012-06-08 16:28:56 +08:00   ❤️ 1
    只要用户访问另一个网页,
    然后那个页面中通过CSRF登录带有xss的v2ex账户,
    这样就可以控制v2ex的页面了,
    然后控制的页面伪装成登录界面,
    让用户重新登录,
    这样就完成了劫持.
    @Livid
    Livid
        9
    Livid  
    MOD
       2012-06-08 16:30:21 +08:00
    @jackmasa 这是 phishing,但是 V2EX 不是银行 :P
    t3st
        10
    t3st  
       2012-06-08 16:36:09 +08:00
    @jackmasa 这样就不是v2ex站点的问题了吧,网络钓鱼而已。你完全可以写个新页面,伪装成登录页面,记录账号密码然后重定向到v2ex站点。
    bhuztez
        11
    bhuztez  
       2012-06-08 16:48:54 +08:00
    jackmasa
        12
    jackmasa  
       2012-06-08 16:54:24 +08:00
    Livid
        13
    Livid  
    MOD
       2012-06-08 17:09:23 +08:00
    @jackmasa 你似乎改了一下代码,最初的能显示 hello 的代码是?
    Livid
        14
    Livid  
    MOD
       2012-06-08 17:11:32 +08:00
    @jackmasa Oh 我明白了,那个新帐号的自定义 CSS。

    谢谢。
    Livid
        15
    Livid  
    MOD
       2012-06-08 17:11:53 +08:00
    @jackmasa Fixed.
    gDD
        16
    gDD  
       2012-06-08 17:12:43 +08:00
    @Livid 自定义CSS我觉得没问题,“>”在CSS里是有用的,没必要转义一下。

    @jackmasa http://jsbin.com/uzefum/5/edit ,实在没看明白,难道是V2EX的/signin支持跨域POST?
    jackmasa
        17
    jackmasa  
       2012-06-08 17:17:07 +08:00   ❤️ 2
    @Livid (゜ー゜) ,刚看了下资料设置页好像没有加csrf token,应该可以用刚刚那种方式直接修改当前用户的css,然后xss之
    Livid
        18
    Livid  
    MOD
       2012-06-08 17:17:54 +08:00
    @jackmasa 谢谢提醒。

    马上解决。
    Livid
        19
    Livid  
    MOD
       2012-06-08 17:20:00 +08:00
    @jackmasa 现在再试试?
    gDD
        20
    gDD  
       2012-06-08 17:33:22 +08:00
    @gDD #16

    终于知道了,原来form提交是可以跨域的。

    http://stackoverflow.com/a/1324858/753533
    Livid
        21
    Livid  
    MOD
       2012-06-08 17:34:04 +08:00
    @gDD 目前已经加入了一些检查。
    Livid
        22
    Livid  
    MOD
       2012-06-08 17:38:45 +08:00
    @jackmasa 很感谢你的发现。

    但是有个地方我还是没有想明白,希望你能解释一下。

    用另外一个帐号跨域登录的话,cookie 变了,当前登录用户也变了的情况下,如何能够影响到之前点击链接的用户呢?

    当然,用户看到自己的登录名变了确实会感觉比较惊悚。:)
    aligo
        23
    aligo  
       2012-06-08 17:41:00 +08:00
    @Livid 似乎没有影响到之前点击链接的用户
    Livid
        24
    Livid  
    MOD
       2012-06-08 17:41:56 +08:00
    @aligo 希望如此。

    安全方面我不是专家,还请大家多多赐教。:)
    1212e
        25
    1212e  
       2012-06-08 17:45:00 +08:00
    @aligo
    @Livid
    @gDD

    接下来的步骤是画出一个假的登录form来骗取密码?
    xlaok
        26
    xlaok  
       2012-06-08 18:52:04 +08:00
    哇哦,很酷,没想到这个居然能被利用。
    gDD
        27
    gDD  
       2012-06-08 19:07:47 +08:00
    @1212e 是的,其实应该直接写<form/>然后submit()修改自定义CSS(往里插入JS),然后就All your XX are belong to us了 xD
    1212e
        28
    1212e  
       2012-06-08 19:34:42 +08:00
    @jackmasa @gDD 哈哈...

    所以真正的漏洞是跨域post,而不是自定义CSS吧?囧…学习了…
    altchen
        29
    altchen  
       2012-06-08 19:45:34 +08:00
    呵呵,还想到还有这种方式,受教了



    @1212e 应该是两个同时存在的时候就危险,单个倒还好
    jackmasa
        30
    jackmasa  
       2012-06-08 19:55:19 +08:00
    @gDD 嗯,我在17楼有提到
    @1212e 正解,正确的修复方式应该是给v2ex设置页和登录页加csrf token // cc @Livid
    rhyzx
        31
    rhyzx  
       2012-06-11 09:52:24 +08:00
    额... 怎么就盖了这么多楼了

    这个自定义CSS相当于给v2ex加个油猴脚本(stylish), 只对于客户端有效
    客户端你想怎么搞就能怎么搞, 即使关了自定义CSS也限制不了的吧?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3625 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 10:40 · PVG 18:40 · LAX 02:40 · JFK 05:40
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.