安全矩阵

 找回密码
 立即注册
搜索
查看: 621|回复: 0

注册功能设计缺陷

[复制链接]

260

主题

275

帖子

1065

积分

金牌会员

Rank: 6Rank: 6

积分
1065
发表于 2023-2-15 22:17:50 | 显示全部楼层 |阅读模式
本帖最后由 luozhenni 于 2023-2-15 22:17 编辑

注册功能设计缺陷
原文链接:注册功能设计缺陷
原创 池羽 [url=]Tide安全团队[/url] 2023-02-15 17:03 发表于山东
编辑

0x01 等保测评项
GBT 22239-2019《信息安全技术 网络安全等级保护基本要求》中,8.1.4安全计算环境—身份鉴别项中要求包括:
a)应对登录的用户进行身份标识和鉴别,身份标识具有唯一性,身份鉴别信息具有复杂度要求并定期更换;
b)应具有登录失败处理功能,应配置并启用结束会话、限制非法登录次数和当登录连接超时自动退出等相关措施;
c)当进行远程管理时,应采取必要措施防止鉴别信息在网络传输过程中被窃听;
d)应采用口令、密码技术、生物技术等两种或两种以上组合的鉴别技术对用户进行身份鉴别,并其中一种鉴别技术至少应使用密码技术来实现。
注册功能设计缺陷对应身份鉴别项中要求a),所以安全控制点为身份鉴别a
GBT 28448-2019《信息安全技术 网络安全等级保护测评要求》中,测评单元(L3-CES1-01) 该测评单元包括以下要求:
a)测评指标:应对登录的用户进行身份标识和鉴别,身份标识具有唯一性,身份鉴别信息具有复杂度要求并定期更换。
b)测评对象:终端和服务器等设备中的操作系统(包括宿主机和虚拟机操作系统)、网络设备(包括虚拟网络设备)、安全设备(包括虚拟安全设备)、移动终端、移动终端管理系统、移动终端管理客户端、感知节点设备、网关节点设备、控制设备、业务应用系统、数据库管理系统、中间件和系统管理软件及系统设计文档等。
c)测评实施包括以下内容:
1)应核查用户在登录时是否采用了身份鉴别措施;
2)应核查用户列表确认用户身份标识是否具有唯一性;
3)应核查用户配置信息或测试验证是否不存在空口令用户;
4)应核查用户鉴别信息是否具有复杂度要求并定期更换。
注册功能设计缺陷属于测评单元(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
覆盖注册

对于注册页面覆盖注册,是指原来用一个手机号或用户名等已经注册了账号,但是由于漏洞,导致可以利用该手机号或用户名等再次进行注册,并且会将之前的注册记录覆盖。当用已经注册的账号再次注册时,系统提示该手机号已经存在。
编辑
经抓包发现,服务器检测到手机号已经注册过会返回“true”,未注册时返回“false”。

编辑


根据上一步的发现,使用已注册的手机号进行注册,抓取返回包,将返回包的值改为“false”,注册成功。
编辑
编辑
0x06风险分析

任意用户注册、批量注册有可能造成服务器dos应用层攻击、影响网站的正常使用、浪费数据库资源、产生大量“僵尸”用户。覆盖注册会导致用户信息泄漏、用户身份盗用等风险。
0x07 加固建议
  •         1. 增加对数据库中账号是否存在的核对检验机制;
  •         2. 注册页面增加验证码机制,为防止验证码被破解,可适当增加验证码强度,比如图形验证码、短信验证码等;
  •         3. 使用session对当前用户的权限做校验等。
参考
https://unit42.paloaltonetworks. ... min-cve-2019-16097/
https://xz.aliyun.com/t/6412
https://cloud.tencent.com/developer/article/1933492

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|安全矩阵

GMT+8, 2024-11-28 22:36 , Processed in 0.013002 second(s), 18 queries .

Powered by Discuz! X4.0

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表