记录一次本人CVE漏洞挖掘的过程,此漏洞已被分配编号:CVE-2023-36079
引言
本文介绍了一次针对某开源项目的身份验证绕过漏洞,此开源项目是一个流媒体管理平台。
代码审计
审计代码发现功能接口点使用 check_user_power()
函数进行权限校验。
跟踪该函数,发现没有使用常规的JWT或者自定义token的形式控制权限,为了方便,而直接通过查询POST方法提交的 userId
参数来判断权限,如果不存在该 userId
,则提示未授权,如果存在 userId
则继续后续的流程。
因此可以构造POST的 userId
来绕过身份验证。
漏洞利用
以其中一个接口 /php/account/get.php
举例,首先正常访问,弹出用户信息错误提示,code为1。
其中message部分为 用户信息错误
的Unicode编码。
构造POST参数 userId=1
成功绕过身份验证(数据库必定存在 userId=1
的记录),code为0。
其中报错信息是因为数据包没有构造其他需要的参数。
举一反三,观察后台等各种接口点的位置在cookie处使用了 userId=1
,因此尝试构造cookie为 userId=1
和一个不过期Expires,发现成功绕过身份验证登录后台。
总结
相关漏洞信息已提交给对应人员或平台。
虽然现在主流的身份验证方式为JWT或其他token的形式,但可能还有些项目会因方便而使用各种其他不安全的方式进行鉴权控制,有时在这一块切入或许会有收获。
标签:Smanga,userId,身份验证,漏洞,2023,绕过,CVE,POST From: https://www.cnblogs.com/tdragon6/p/17749483.html