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

前端敏感信息泄露?

  •  
  •   Graves · 2019-11-05 11:07:38 +08:00 · 3076 次点击
    这是一个创建于 1627 天前的主题,其中的信息可能已经有所发展或是发生改变。
    项目很旧了,2014 年的代码,没有前后分离,后端是 status2+jsp,没有 spring
    因为是政府项目,所以公司找了第三方信息安全公司,做了渗透测试
    现在有一个很头疼的问题,假如有一个用户列表,列表里面有个详细按钮,按钮下面是用户的 id,点击就查询出用户的详细信息,现在第三方信息安全公司改了这个用户 id,就可以获取到其他用户的信息
    这个问题是可以在后端校验,但是代码太旧了,想问问还有其他办法吗
    26 条回复    2019-11-06 08:50:53 +08:00
    goodname
        1
    goodname  
       2019-11-05 11:13:35 +08:00
    这是典型的越权啊,前端校验会被绕过啊,不改后端的话,请楼下老哥回答吧
    littleylv
        2
    littleylv  
       2019-11-05 11:18:45 +08:00
    如果不需要限制可以看到哪个或哪些用户的详细信息,那这个并没有风险,因为反正你可以看到所有人的信息(反正你可以点列表 id=2 的人看,你通过把 id=1 改成 id=2 去看的方法不是绕一圈没必要么)

    如果有限制的话,一定要在后台限制校验传入的 id 是否有权限看
    Graves
        3
    Graves  
    OP
       2019-11-05 11:19:37 +08:00
    @goodname 我想到了一个骚操作,因为是 jsp,我把列表 list 放到 session 域下面,然后按钮放数组的下标,到了详细页面的时候再 session 域取出列表,根据下标获取 id,不知道这么做会有什么问题
    Graves
        4
    Graves  
    OP
       2019-11-05 11:21:04 +08:00
    @littleylv 是有权限的,但是祖传代码我改不动,放上去生产,立马用户炸电话过来
    yikyo
        5
    yikyo  
       2019-11-05 11:26:30 +08:00
    id 加密也可以解决。
    littleylv
        6
    littleylv  
       2019-11-05 11:29:22 +08:00
    @yikyo #5 我也想过后端把 id 可逆加密,前端传进来后解密,但硬要说的话还是有风险。比如 A 用户有权限看到 id=1 (加密成了 ABC ),但 B 用户没权限;但如果 B 用户拿到了 ABC,同样可以去看到 id=1
    maichael
        7
    maichael  
       2019-11-05 11:38:00 +08:00
    既然能筛出列表就说明有权限,有权限就直接根据权限判断不就好了么,建议直接改祖传代码吧,想办法绕只会挖更多的坑。
    Graves
        8
    Graves  
    OP
       2019-11-05 11:38:01 +08:00
    @littleylv 嗯嗯,我也想过这个,后面觉得不可行
    Graves
        9
    Graves  
    OP
       2019-11-05 11:40:04 +08:00
    @maichael 老哥说的也是,实在不行我只能在 sql 最后面 in(列表)
    sevenzhou1218
        10
    sevenzhou1218  
       2019-11-05 12:10:40 +08:00
    这个跟前端没关系啊,服务器端代码需要改啊。
    前端能做的就是传两个参数,id 和 hash,hash 是 id 和 secretKey 加密来的,服务器端再解一下...
    imn1
        11
    imn1  
       2019-11-05 12:22:43 +08:00
    始终要改后端
    简单的就是 id 变无序,是 hash 值,这样前端难以碰撞
    鉴权才是根本
    harvies
        12
    harvies  
       2019-11-05 12:37:59 +08:00
    服务器需要校验当前用户是否有查看该 ID 数据的权限
    EminemW
        13
    EminemW  
       2019-11-05 12:59:00 +08:00 via iPhone
    我看到的第一眼竟然觉得没有问题。。用户列表根据 id 查详情,不是正常操作吗。
    iyaozhen
        14
    iyaozhen  
       2019-11-05 13:11:55 +08:00
    典型的水平越权嘛 老代码有啥改不动的,对比一下传的 id 是不是当前用户的 ID
    shehuizhuyi
        15
    shehuizhuyi  
       2019-11-05 13:28:32 +08:00
    根据 session 查
    nnnToTnnn
        16
    nnnToTnnn  
       2019-11-05 16:03:14 +08:00
    如果是为了应付渗透测试的人可以很好的解决这个,重写页面传值的那个方法,进行对称加密,例如 aes 等等,你随便找个加密算法,然后在点击的在加上另外一个参数 tempid,传过去,判断 tempid 是否和 id 相等,如果是相等则判断是人为修改。


    如果不是 ajax 请求,而是 jsp 请求,直接加上一个 tempid 作为一个暗桩就行了。

    如果是为了对付国内的渗透测试水平我觉得问题还是不大的
    nnnToTnnn
        17
    nnnToTnnn  
       2019-11-05 16:04:29 +08:00
    @nnnToTnnn 不是 ajax 请求,而是用 request 传参数,基本上 aes 加密都不用,直接留下 tempid 暗桩。等等
    nnnToTnnn
        18
    nnnToTnnn  
       2019-11-05 16:07:31 +08:00
    @nnnToTnnn 还不需要怎么修改祖传的代码,只要稍微加个字段就行,easy
    wccc
        19
    wccc  
       2019-11-05 17:00:28 +08:00
    Strus2? 我在想 jar 升级过没.. 毕竟漏洞挺多的
    goldenalex
        20
    goldenalex  
       2019-11-05 17:09:11 +08:00
    胡乱猜测。。。

    加个加密 session 比对后传输信息?
    iyiluo
        21
    iyiluo  
       2019-11-05 17:22:54 +08:00
    别搞自欺欺人的骚操作了,有安全问题就老老实实修,即使应付过了安全扫描,指不定系统哪天就被安全通报
    Graves
        22
    Graves  
    OP
       2019-11-05 18:23:59 +08:00
    @nnnToTnnn 感谢回复,办法是可以,但是渗透的人水平还是很高,会上传文件绕过获取系统 shell

    @wccc struts 已升级的,也是在安全审查中要求整改

    @iyiluo 万般无奈,这东西工作量不大的我清楚,主要是真的改不动代码,接手的时候什么文档也没有,数据库字段没注释,表也只能猜猜干嘛用,改一下到线上就出问题
    Graves
        23
    Graves  
    OP
       2019-11-05 18:25:01 +08:00
    挺自闭的,以前就听别人说祖传代码多恐怖,现在终于见识了
    wangxiaoaer
        24
    wangxiaoaer  
       2019-11-05 18:40:04 +08:00 via Android
    暂时用 hashid 这个库把 ID 转成字符(查的时候再逆回来)这个库支持转的时候加盐,你可以每个用户用一个单独的盐放到 session 中。
    beastk
        25
    beastk  
       2019-11-06 08:13:17 +08:00 via iPhone
    改代码检验 id 吧,最快的方法了
    nnnToTnnn
        26
    nnnToTnnn  
       2019-11-06 08:50:53 +08:00
    @Graves 至于上传文件获取系统的 shell,这个限制一下文件类型就行了,在文件解析器里面。 只限制白名单。

    你让他把渗透测试的报告给你一份,然后你按照报告上修改然后测试就行了,一般国内的渗透测试一般都是黑盒测试,拿着软件跑一跑,出一份报告,然后收钱。

    你估计爆出来的都是很明显有特征的漏洞,比如敏感的 id 或者 password 等等字段。


    只要不是百盒测试,基本上改改特征,工具就扫不出来了。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1001 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 22:51 · PVG 06:51 · LAX 15:51 · JFK 18:51
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.