程序都是通过逻辑实现各种丰富多彩的功能的,要实现这些功能,必须掌握大量的技巧并进行周密的安排。但是,有很多情况这些功能逻辑存在缺陷,比如程序员的安全意识,比如考虑问题不周全等。即使是最简单的web应用程序,每个阶段都会执行大量的逻辑操作。
设计缺陷/逻辑漏洞包括但不仅限于:
• 1)修改数值
• 2)验证码爆破
• 3)修改响应包
• 4)修改密码
• 5)服务端无有效验证
• 6)未授权访问
• 7)返回密码信息
• 8)密码明文存储
检测方法:
1.修改数值(如:构造SQL语句可被执行)
2.验证码爆破(如:4位数字验证码可暴力破解)
3.修改响应包(如:通过修改登录响应包,密码错误时可登陆系统)
4.修改密码(如:修改密码逻辑问题)
1)用户凭证暴力破解(密码找回的凭证太弱,暴力破解)
2)返回凭证(url返回验证码及token、密码找回凭证在页面中、返回短信验证码)
3)邮箱弱token(时间戳的md5、服务器时间)
4)重新绑定(手机号、邮箱任意绑定)
5)注册覆盖(注册重复的用户名)
6)服务器验证(服务器验证可控内容、服务器验证验证逻辑为空)
7)找回步骤(跳过验证步骤、找回方式,直接到设置新密码页面。)
8)本地验证(在本地验证服务器的返回信息,确定是否执行重置密码,但是其返回信息是可控的内容,或者可以得到的内容)
9)session覆盖
5.服务端无有效验证
6.未授权访问(如:url连接未授权访问;Redis未授权访问漏洞;Memcache未授权访问漏洞)
7.返回密码信息(如:响应包中返回密码信息)
8.密码明文存储(如:前台存储明文密码信息)
解决方案:
加强程序的设计和逻辑判断。加强代码编写约束,必要的单元测试以及核心共用代码的抽取统一维护