安全矩阵

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

登录功能设计缺陷

[复制链接]

260

主题

275

帖子

1065

积分

金牌会员

Rank: 6Rank: 6

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


登录功能设计缺陷
原创 池羽 Tide安全团队 2023-02-13 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)中测评实施的第1项,故定测评单元为L3-CES1-01.1
0x02 测试内容
测试系统登录功能是否存在修改请求包、返回包等方式绕过前台用户名、绕过密码验证,直接进入系统。
0x03 漏洞原理
登录页面有多个功能点,验证码、忘记密码、注册、用户名、密码、URL地址等,这些点都能进行渗透。
编辑
根据登录页面的功能点不同,登录页面的渗透思路也很多。
编辑
等保测评项中对登录功能设计的要求是:应核查用户在登录时是否采用了身份鉴别措施。所以测试“任意用户登录、修改返回包/请求包绕过逻辑判断”这几项即可。
由于对登录的账号及密码的校验存在逻辑缺陷,或再次使用服务器端返回的相关参数作为最终登录凭证,导致可绕过登录限制,如服务器返回某个参数作为登录是否成功的标准,但是由于代码最后登录是否成功是通过获取这个flag参数来作为最终的验证,导致攻击者能够通过修改flag参数绕过登录的校验。
有的通过修改返回包是可以正常登录其他账号的,比如使用admin账号进行登录,修改返回包后可以正常登录到系统,正常使用系统功能。有的可以正常登录,也可以查看到相关的功能,但是没有权限查看到相关的数据,可以分析数据包字段内容,进行修改有可能获取到数据。
挖掘思路:通过修改返回包的状态码可查看到系统功能,更改数据包的参数值达到未授权获取数据。
0x04 代码示例
以熊海CMS为例。
熊海CMS admin目录下的index.php文件中,根据GET输入的r参数确定跳转的页面,如果没有r参数,就会自动跳转index.php的页面。
编辑
login.php文件是正常的链接数据库、身份验证的相关逻辑。
编辑
登录后的index.php文件中包含checklogin.php文件,这个文件是用于验证用户是否登录的脚本代码文件。
编辑
checklogin.php文件检验是否成功登录的逻辑在于用户是否以cookie的方式提交user变量,如果提交了,就认为用户已经登录;如果没有提交,则认为用户没有登录,然后返回登录页面。所以,熊海CMS在登录验证处存在逻辑漏洞,可以根据这个漏洞绕过登录验证,直接登录该CMS。
编辑
0x05 测试过程
测试案例1

应用程序未对账户进行严格校验,导致任意用户登录。登录地址为https://xxx.com/login.php?user=,直接将user参数值改为admin。
编辑
无需密码及相关验证,直接登录admin账户。
编辑
测试案例2

在验证测试过程中,发现此服务器未对登录成功的响应报文进行校验,导致能获取登录成功的响应报文后,就可以通过正确的响应报文实现任意用户登录,导致信息泄漏等风险。先使用正确的用户名、密码登录,同时抓取正确登录的响应包。 发送的请求:

编辑
响应的报文:
编辑
已获取正确登录的响应报文,只需在下次登录时针对登录请求的响应进行替换即可。
再次登录,随意输入用户名、密码,截取请求包,拦截响应数据。
编辑
响应数据:
编辑
进行替换即可正常登录。
编辑
编辑
测试案例3
正常登录该CMS,在登录后的cookie中,有个变量user,该变量值为登录后的用户名,并且之后对页面的所有操作都会在cookie中携带有这个cookie变量。
编辑
针对以上验证机制,借助HackBar直接访问登陆后的地址,修改cookie,看看是否能成功登录。
编辑
访问前添加user=admin的cookie信息。
编辑
发送数据包后,成功绕过验证,使用admin登录系统。
编辑
0x06 风险分析
攻击者可以利用该漏洞绕过相关验证,直接登录系统,窃取用户敏感信息
0x07 加固建议
修改验证逻辑,需要做鉴权处理,正常判断值不能仅仅依靠返回值来处理。

回复

使用道具 举报

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

本版积分规则

小黑屋|安全矩阵

GMT+8, 2024-11-29 00:32 , Processed in 0.013647 second(s), 18 queries .

Powered by Discuz! X4.0

Copyright © 2001-2020, Tencent Cloud.

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