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

token 被盗引发的数据安全问题

  •  
  •   liuzhen · 2021-11-18 17:06:19 +08:00 via Android · 10925 次点击
    这是一个创建于 1111 天前的主题,其中的信息可能已经有所发展或是发生改变。
    最近在过等保,测试人员拿 admin 用户的 token 替换到了 guess 用户的请求头里,得出一个存在越权的结论,给的修复方案是: 对所有用户功能基于 sessionid 判断用户权限。

    但我寻思 sessionid 不也存在浏览器端吗,一样可以被等保测试人员拿到放在其他用户的请求里伪装 admin 用户
    118 条回复    2024-04-28 18:03:10 +08:00
    1  2  
    conhost
        101
    conhost  
       2021-11-19 12:50:38 +08:00
    @IvanLi127 这样也可以,我只是针对你说的循环加 token 说的,😁😄
    pupboss
        102
    pupboss  
       2021-11-19 13:29:06 +08:00
    这个问题叫重放攻击,你需要的方案是加签名

    token 代表一个用户的身份,已经完成了它的使命

    你们说的替换 guest token 为 admin token 之后继续发请求,这是重放攻击

    加个签名 sign(who+when+where+what) 中间件就可以完美解决。替换了 token 就意味着 who 变了,签名对不上也是 GG
    iikebug
        103
    iikebug  
       2021-11-19 14:04:13 +08:00
    @pupboss 这就不是一个签名能解决的东西,webd 端啊,你都能弄到 token 了,还有啥你弄不到的?
    fortunezhang
        104
    fortunezhang  
       2021-11-19 14:21:51 +08:00
    等保这帮人。 哎。。。他们渗透,还得给他们钱,最后他们给你个证。。。
    iyaozhen
        105
    iyaozhen  
       2021-11-19 14:24:39 +08:00
    越权的结论有点牵强,但确实是有问题的

    需要有 token 吊销机制
    前端页面需要加上 CSRF Token
    然后敏感操作(比如删除、导出等),二次验证管理员密码。
    pupboss
        106
    pupboss  
       2021-11-19 14:31:38 +08:00
    @iikebug 单就楼主的描述看,测试人员替换请求头的 token ,是可以通过加签名解决的,替换了 token 意味着 who 变了,签名肯定对不上

    如果非得深挖的话,确实 web 端可以反推签名算法,这就是另一个领域的话题了,我们可以尽可能的混淆代码,用 hex 表示签名用的 key ,破解的成本一般都会比收益高了
    snowlyg
        107
    snowlyg  
       2021-11-19 14:40:52 +08:00
    面试还被问过类似的问题,都不知道怎么答
    zypy333
        108
    zypy333  
       2021-11-19 15:28:22 +08:00
    第一反应是不是招惹别人了,还是想吃拿卡要?难倒他们以前也是这样检查 token 的吗
    LinShiG0ng
        109
    LinShiG0ng  
       2021-11-19 16:00:22 +08:00
    我刚入行做的是渗透测试,第一个项目就是工行,工行的安全程度就不用我多说了,人家自己养的安全团队都已经很强了,到我手上基本上挖不到洞了,然后我就用了楼主说的方法,提了个越权,然后我们组长告诉我这根本不叫漏洞。。。。。。
    H3x
        110
    H3x  
       2021-11-19 16:42:04 +08:00
    这个问题很典型,也很有借鉴意义,常见于渗透小白,属于方法会了,但是逻辑搞错了。
    adoal
        111
    adoal  
       2021-11-19 17:01:58 +08:00
    搞等保那批人懂个屁的安全
    adoal
        112
    adoal  
       2021-11-19 17:02:45 +08:00
    不过你这个确实也是问题。还是要加上检查的。
    itechnology
        113
    itechnology  
       2021-11-19 18:20:45 +08:00
    @conhost 双因子认证这个我知道,但你不可能每个请求都用双因子认证吧?据我说知国内大多数用上双因子认证的也只是在关键交易上用。
    token 对于系统来说就相当于用户,讲道理,你 token 都被人拿到了,那还有什么不能拿到的。
    conhost
        114
    conhost  
       2021-11-19 18:43:43 +08:00 via iPhone
    @itechnology 我的意思是说如果只是简单替换 token 就能访问的话,也是存在问题的,并不能就说很逗,即使不用每个请求都双因子认证,也可以对请求签名啥的,虽然也存在问题,但是至少楼主的问题可以完美解决
    markgor
        115
    markgor  
       2021-11-20 09:31:48 +08:00
    息事宁人的做法,按它说的改;
    暴脾气的做法:
    直接回怼并说明详细原因,
    建议去(腾讯、阿里、百度) 登录会员页面,替换 token/cookie 尝试,
    然后去他们家对应的漏洞平台提交,
    把大厂回复你的内容黏贴去报告中,
    再反问利用 sessionID 的话,如果复制对应的 cookie 信息,不也是会产生“被盗”吗?
    opengps
        116
    opengps  
       2021-11-20 22:40:13 +08:00
    莫非要 token 换成非对称加密的密文,服务端每次解码验证下才能行?
    yedanten
        117
    yedanten  
       2022-02-13 13:42:14 +08:00 via Android
    你指望安服崽的水平?
    unco020511
        118
    unco020511  
       219 天前
    @pupboss #106 前端还需要反推吗,直接控制台源码打开一看不就知道你的签名算法了.问题是你自己把大门打开,请人家使用你的机器,然后说这很不安全
    1  2  
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1167 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 23:02 · PVG 07:02 · LAX 15:02 · JFK 18:02
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.