逻辑越权漏洞
垂直越权
任意的用户访问到不属于自己的业务功能。
测试方法:
- 使用不同权限的账号,直接修改
Cookie
值进行测试。
水平越权
用户能够访问与他有相同功能的用户的资源。
测试方法:
- 抓包找出其中的参数值,尝试修改成不同的值,查看回显。
短信轰炸
短时间内可以重复的发送大量的短信,对系统资源产生消耗。
测试方法:
- 使用重放或者爆破模块进行数据包的重放操作。
- 修改 xff 头绕过,burp 插件 https://github.com/TheKingOfDuck/burpFakeIP
- 加空格、任意字母、号码前面 +86 绕过。
- xff 头伪造 ip 绕过。
未授权访问
用户在没有获取登陆权限或未授权的情况下就可以访问系统受限的资源或功能,例如重要的接口。
测试方法:
- 将所有数据包中的认证信息全部删除后进行重放,查看回显。
用户名枚举
系统对用户输入的错误用户名和密码没有进行模糊提示,可能会导致用户名被枚举。
测试方法:
- 尝试输入错误的用户名和密码,查看回显,是否有类似“用户名错误”,“密码错误”等提示信息。
- 账号后加空格绕过账号错误次数限制。
验证码问题
(1)验证码可预测
测试方法:
- 将数据包发送之后查看返回包是否带有验证码回显。
(2)验证码绕过
测试方法:
- 抓包将验证码替换成
0000
或者1111
等特殊的号码,查看回显。 - 将验证码删除后,重放数据包,查看回显。
- 将验证码置空,重放数据包,查看回显。
(3)验证码可重放
测试方法:
- 抓包并使用相同的验证码,查看回显。
(4)验证码暴力破解
测试方法:
- 先测试验证码是否可以重放,如果可以,并且验证码是四位或五位,尝试使用暴力破解。
登陆认证绕过
系统仅对登陆做了前端校验,没有在后端进行身份认证。
测试方法:
- 登陆后抓取返回包,尝试修改返回包中的字段值,如
{"code":"1"}
等。
密码重置
在得知其他用户名账号的时候,通过修改请求的返回值达到欺骗服务器的目的。
测试方法:
- 尝试修改返回包的数据,如
{"code":"1"}
或者{"status":1}
等。
SSO 认证缺陷
服务器对 Cookie 和 Session 等参数过于简单。
测试方法:
- 账号登陆过程中,尝试修改
Cookie
或者Session
中明显参数的值。
空口令
测试方法:
- 在登陆的时候将账号和密码均设置为空。
会话固定
在用户未登录的时候就已经产生了一个 Session,用户输入信息登陆后,Session 信息没有进行重新修改,依旧使用了之前的 Session。
测试方法:
- 在登陆前和登陆后分别将
Session
记录下来,进行对比。
会话未及时销毁
用户退出系统后,服务端的 Session 未失效。
测试方法:
- 尝试退出系统,在退出系统后回退,查看是否可以返回到还在登陆的页面。
重放攻击
服务端没有对关键业务操作进行唯一标识。
测试方法:
- 对某些功能抓包后进行数据包的重放,查看是否成功执行相应操作,如重复注册账号等。
图片地址可控
图片的地址可以由前端修改。
测试方法:
- 抓包后修改图片的地址,之后点击该图片,查看是否会跳转至其他页面。
搜索字段参数为空
在搜索框中,只是做了前端限制搜索的内容不能为空。
测试方法:
- 抓包后将搜索的内容置空,查看是否会返回所有的内容。