给你一个登陆口的网站,渗透测试的基本思路应该有哪些?
登陆接口测试
想一下登陆口的基本按扭会有哪些,登陆按扭?注册按钮?忘记密码按钮?短信验证码发送?
好,具体测试点思路你已经有了,现在围绕这四个按钮去想,每一个按钮可能存在的漏洞有哪些?
登陆按钮
1.登陆绕过
2.用户遍历
3.暴力破解
4.弱口令
5.多点登陆
注册按钮
1.任意用户注册
2.批量用户注册
3.用户注册覆盖
忘记密码按钮
1.任意用户密码重置
2.忘记密码步骤绕过
短信验证码发送
1.短信验证码轰炸
2.短信多用户发送
3.短信响应包返回
4.短信验证码复用
5.短信验证码绕过
以上是明面上能看到的按钮所能做到的测试,再想想是不是网页由html、css、JavaScript组成,好这时候想到js就有接下来的测试。
JS接口测试
1.敏感信息泄漏:身份证号码、用户账号密码、AccessKey&Scretkey
2.接口未授权:接口信息,参数信息
3.js文件调试:加解密函数调用
总结
以上的所有漏洞基本上都属于逻辑漏洞,再加上owsaptop的漏洞和常见的框架漏洞,差不多就已经覆盖百分之九十的测试。
如何修复
一、图片验证码
- 验证码必须要在服务端生成添加杂点干扰项并足够扭曲以图片格式返回前端且服务端应第一优先级先验证验证码的存在性、正确性、一次性,其次可对参数进行正则格式验证、之后对不能验证参数进行过滤编码、验证用户名和认证因子的匹配性、最后再触发相关功能
二、登录数据传输
- 采取 HTTPS 加密通道进行数据传输
- 采取有效的加密算法对敏感数据传输进行加密
三、手机和邮箱验证码
- 验证码要有一定的复杂度,至少 6 位,验证码不能返回前端
- 基于客户端 session 进行次数限制,制定合适的锁定策略
- 进行敏感数据操作时对比账号和绑定的手机邮箱是否匹配,做多次验证
除此之外。
一个安全的认证机制的建设还应包含以下规则:
- 用户提交敏感数据时,应把验证码和注册 / 登录信息在同一 http 请求中提交,且服务端应优先验证验证码是否正确,最后再触发相关功能
- 永远不要相信用户在数据交互点的输入数据,面对用户数据输入,应做好相对应的参数过滤。