基于Burpsuite的安全测试十五:密码找回模块测试

基于Burpsuite的安全测试十五:密码找回模块测试

情景1:验证码客户端回显测试

  1. 有些网站会选择将验证码回显在响应body中,和用户前端输入的验证码做一致性判断,如果一致就会通过校验。比如,在找回密码过程中,需要输入邮箱再点击发送验证码,此时抓包会发现请求参数发送的是输入的邮箱,(将邮箱改为自己的邮箱也可尝试是否可以收到验证码),查看响应包,如果响应包中包含了验证码,则攻击者可以直接把该验证码输入到验证码框中从而进入下一步更改密码,就绕过了必须只有通过用户邮箱才能看到验证码。

系统修复方案:

不要在响应包中返回验证码,验证码一定要放到服务器端校验。

情景2:验证码暴力破解测试

  1. 如果没有对验证码试错次数做限制,验证码容易被暴力破解。首先观察验证码发送内容的规律,如为4位/6位数字,抓取验证码校验请求,在页面中随意输入4位/6位数字并下一步,将抓取到的请求包发送至Burp suite的Intruder模块中,并将验证码参数标记为变量,导入密码字典进行枚举测试,根据响应结果的长度来判断测试结果。

系统修复方案

对校验码采用错误次数限制并提高验证码的复杂度。

情景3:接口参数账号修改测试

  1. 如在找回密码逻辑中,如果客户端发送的账号参数被篡改而服务器端没有对账号逻辑控制好,最终可导致用户密码被篡改。当输入邮箱点击发送重置密码按钮时抓包,对于接口入参中可以更改用户邮箱,比如改为攻击者自己的账号,服务器端并没有校验邮箱是否为该账户绑定的邮箱,所以会将修改密码链接发送到攻击者篡改后的邮箱中,进而被篡改。
  2. 如果某个找回密码发送给用户邮箱中的链接URL地址只包含了account和token,如http://www.xxx.com/[email protected]&token=54545454,如果token可重复使用,此时可以将account更改为攻击者想更改密码的账户的邮箱,从而也能进行更改。

系统修复方案:

要保证token的一对一的校验,一个token只能修改一个用户,同样token也不能泄漏。

情景4:Response状态值修改测试

  1. 服务器端发送某个前端请求的特定的响应值,如ture、1、0、ok、success等,所以可以通过修改响应结果来达到篡改的目的。
  2. 举例,如找回密码时需要发送验证码到用户手机,输入手机号,并随便输入短信验证码,点击找回密码后查看截取到的包,包中包含了手机号和验证码两个参数。在Burp suite中右击intercept选项,选择Do intercept--Response to this request。设置后可以看到这个请求的回显response包了。接着点击Forward转发这个请求,如果Response回显包返回的时false,则说明服务器端发现验证码不一致则返回false给客户端,此时尝试将false改为true,然后单击Intercept is on按钮关闭拦截让数据包正常发送,如果后续能正常的跳转到下一步页面则可以继续进行修改密码操作了。

系统修复方案:

不要在前端利用服务器返回的值判断是否可以修改密码,要把整个验证环节交给服务器端。

情景5:Session覆盖测试

  1. 如果无法修改提交时的参数,服务器端通过读取当前session会话来判断账户,则可以尝试对session中的内容进行修改已到达篡改目的。
  2. 比如A用户在chrome的一个标签页中进行修改密码操作,输入手机号、输入图形验证码、点击下一步、进入短信验证码页面,验证成功后、点击下一步进入重置密码页面,此时该页面保持不动。在chrome中新打开一个标签页中进行目标用户B修改密码操作,输入手机号、输入图形验证码、点击下一步、进入短信验证码页面,因为收不到短信验证码,所以在该页面无法验证成功,此时,因为服务器端已经将当前session会话设置为B用户,所以,此时在A的重置密码页面刷新页面,如果看到手机号已经更新为B用户的手机号,则说明session成功覆盖了,并且可以重置密码了。

系统修复方案:

要保证对修改的账号和凭证是否一致做校验。

情景6:弱Token设计缺陷测试

  1. 弱token,即token的生成方式很容易找到规律,比如是时间戳,也可能是uid加密成MD5或者base64编码,或者直接uid+4位随机数。
  2. 如果在修改密码的链接URL中包含了token参数,服务器通过与数据库生成的token值是否一致来判断当前链接是否有效。
  3. 多次触发修改密码的链接生成,在邮箱中查看链接中token的规律,进而可以制定暴力破解方案。

系统修复方案:

应将token生成机制复杂化,不易推测,不易找出规律。

情景7:密码找回流程绕过测试

  1. 一般找回密码流程分为三个部分
    1. 第一个页面:输入用户名、图形验证码、下一步按钮
    2. 第二个页面:选择验证方式,如邮箱验证,获取邮箱验证码后,邮箱验证码输入框、下一步按钮
    3. 第三个页面:重置新密码页面,新密码输入框、确认密码输入框、下一步按钮
  2. 记录这三个页面的URL,尝试在第一个页面后,在第二个页面,直接将第二个页面的URL改为第三个页面的URL,尝试是否可以更改成功。

系统修复方案:

为了防止跳过验证步骤,一定要在后端逻辑中校验,确认上一步操作流程已经完成。

猜你喜欢

转载自blog.csdn.net/chang_jinling/article/details/93243810