场景再现
API 接口使用了 JWT Token 认证,且返回了大量敏感信息:
当 JWT Token 不正确的时候,不能返回信息,提示没权限:
目前看上去一切正常,很合理:
但是,下面问题来了,我们把 JWT Token 删了看看:
什么!居然也正常返回敏感信息了!:
这得是什么样的代码才可以写出这样的漏洞啊?
漏洞讨论
这种代码逻辑的代码到底是怎么样的呢?下面是网友们的可能性猜测:
举一反三
网友 CCGK 分享了 golang 里面的另一个可能类似的坑点,如果业务把异常信息默认为对的话,那使用下面的代码也可能存在问题:
在 Go 语言中,ParseInt
是 strconv
包中的一个函数,用于将字符串解析为整数:
func ParseInt(s string, base int, bitSize int) (i int64, err error)
-
当 s
为空字符串:它会返回0
和一个错误strconv.ErrSyntax
,表示语法错误。 -
当 s
为"0"
:如果你调用strconv.ParseInt("0", 10, 0)
,它会返回0
和nil
,表示成功解析。 -
当 s
为其他有效的数字字符串(例如"123"
):它会返回相应的整数值和nil
错误。
原文始发于微信公众号(安全小姿势):奇葩逻辑漏洞分享之虚假的 JWT 认证
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论