注册功能设计缺陷-注册漏洞总结
0x01 等保测评项
GBT 22239-2019《信息安全技术 网络安全等级保护基本要求》中,8.1.4安全计算环境—身份鉴别项中要求包括:
a)应对登录的用户进行身份标识和鉴别,身份标识具有唯一性,身份鉴别信息具有复杂度要求并定期更换;
b)应具有登录失败处理功能,应配置并启用结束会话、限制非法登录次数和当登录连接超时自动退出等相关措施;
c)当进行远程管理时,应采取必要措施防止鉴别信息在网络传输过程中被窃听;
d)应采用口令、密码技术、生物技术等两种或两种以上组合的鉴别技术对用户进行身份鉴别,并其中一种鉴别技术至少应使用密码技术来实现。
注册功能设计缺陷对应身份鉴别项中要求a),所以安全控制点为身份鉴别a。
GBT 28448-2019《信息安全技术 网络安全等级保护测评要求》中,测评单元(L3-CES1-01) 该测评单元包括以下要求:
a)测评指标:应对登录的用户进行身份标识和鉴别,身份标识具有唯一性,身份鉴别信息具有复杂度要求并定期更换。
b)测评对象:终端和服务器等设备中的操作系统(包括宿主机和虚拟机操作系统)、网络设备(包括虚拟网络设备)、安全设备(包括虚拟安全设备)、移动终端、移动终端管理系统、移动终端管理客户端、感知节点设备、网关节点设备、控制设备、业务应用系统、数据库管理系统、中间件和系统管理软件及系统设计文档等。
c)测评实施包括以下内容:
注册功能设计缺陷属于测评单元(L3-CES1-01)中测评实施的第2项,故定测评单元为L3-CES1-01.2。
0x02 测试内容
当系统存在注册功能时,对其进行以下测试:
- 1. 任意用户注册,比如任意手机号注册、批量注册;
- 2. 覆盖注册,比如注册时显示该用户已注册,在注册新用户时抓包,把自己的信息篡改为admin,尝试覆盖admin重新注册;
0x03 漏洞原理
批量注册、任意用户注册: 通常是由于无验证码或者验证码不安全,可对注册时的用户名等信息遍历,达成批量注册的目的。使用脚本批量注册甚至会造成服务器Dos应用层攻击,影响网站的正常使用。
覆盖注册: 系统未对需要注册的账户进行检验,在未核对数据库中的账号是否已经存在情况下进行新用户的注册。
测试时可能会出现这类情况:网站数据库中已经有一个Tide用户,但新用户注册了一个账号,用户名也是Tide,但是开发人员并没有对重复的用户名进行提示,而是直接将数据插入数据库,导致老用户的用户名被覆盖。登录查看时却获取到数据库中同名用户的其他用户信息,导致其他用户信息泄漏,或者由于在验证用户名是否存在时,从前端获取到的数据与从数据库获取到的数据不同,但是往数据库中写入的时候却写入了相同的部分。
0x04 代码示例
CVE-2019-16097 Harbor任意管理员注册漏洞。此漏洞在于用户可以在注册发送POST数据包时,加入"has_admin_role":True字段就可以直接注册为管理员用户。
Harbor源代码的User结构有很多属性,其中HasAdminRole这个属性用来区分用户是否为管理员,值为Bool类型,控制这个字段就可以利用此漏洞。访问“/api/users”这个api,并且发送相应POST请求就能注册新用户。
漏洞代码位于user.go的第317行“if err := ua.DecodeJSONReq(&user); err != nil” 这段代码将用户的post的数据转换为user结构。
正常的请求如下所示:
{"username":"test","email":"test123@gmai.com","realname":"no name","password":"Password1\u0021","comment":null}
如果在请求中添加"has_admin_role"="True"这个字段,那么创建的用户就拥有管理员权限。
0x05测试过程
测试案例1
CVE-2019-16097任意管理员注册漏洞。该漏洞因注册模块对参数校验不严格,可导致任意管理员注册。攻击者注册管理员账号后可以接管Harbor镜像仓库,从而写入恶意镜像,最终可以感染使用此仓库的客户端等。
进入Harbor注册页面,随意输入注册信息。
截取注册请求数据包,添加字段"has_admin_role":true,注册的test用户就变成管理员账号。
测试案例2
先使用正确的信息注册,进行抓包,记录注册时请求的数据包,然后对手机号进行批量遍历,就能批量注册成功。
测试案例3
0x06风险分析
0x07 加固建议
-
1. 增加对数据库中账号是否存在的核对检验机制; -
2. 注册页面增加验证码机制,为防止验证码被破解,可适当增加验证码强度,比如图形验证码、短信验证码等; -
3. 使用session对当前用户的权限做校验等。
技术文章仅供参考,此文所提供的信息只为网络安全人员对自己所负责的网站、服务器等(包括但不限于)进行检测或维护参考,未经授权请勿利用文章中的技术资料对任何计算机系统进行入侵操作。利用此文所提供的信息而造成的直接或间接后果和损失,均由使用者本人负责。本文所提供的工具仅用于学习,禁止用于其他!!!
共有 0 条评论