注册、登录、密码修改页面渗透测试经验小结

目录

失效的图形验证码

手机验证码是否可被爆破

手机验证码批量重放(短信炸弹)

注册页面批量注册

注册页面覆盖注册

网站登录页面绕过

任意用户密码重置


失效的图形验证码

在很多的注册、登录、密码修改等页面都需要用户输入图形验证码,目的是为了防止恶意攻击者进行爆破攻击。

但是,在很多网站,存在图形验证码功能失效的问题,也就是说当第一次输入正确的图形验证码提交后,我不刷新该页面,之后该验证码还有用。

那么,我们如何判断该页面的图形验证码功能是否失效呢?

我们先输入正确的图形验证码和信息后,点击提交。用burpsuite抓包,查看返回的数据。然后我们重放,查看服务器返回的数据。如果第二次重放,服务器返回的是验证码错误的话,那么说明就不存在绕过图形验证码的可能性了。如果返回的数据和第一次登陆成功时相同的数据,那么该验证码就存在绕过了。

修复措施:服务器后端应该对图形验证码设置仅用一次,无论输入正确还是错误,该验证码都失效并且返回新的图形验证码。

手机验证码是否可被爆破

对于大多数网站的注册、登录页面,修改密码页面,往往会有用手机号验证码登录的情况。这时,我们就可以考虑是否可以爆破手机验证码?

网站注册、登录、修改密码页面的逻辑是这样子的。我们用手机号码进行操作,输入手机号,然后点击获取验证码,后端服务器将验证码发给我们的手机号,我们将手机收到的验证码填入,点击注册、登录或者修改密码,后端校验验证码是否正确,正确即可成功。那么,我们会想,这种情况下的验证码是否可被爆破呢?

对于手机验证码被爆破的前提是:该页面处没有图形验证码或者图形验证码失效!如下,该页面注册处没有图形验证码。

注册、登录、密码修改页面渗透测试经验小结_第1张图片

倘若后端没有对验证码输入错误次数进行限制的话,也就是说无论你验证码输错几次,后端都不会有任何动作,这种情况下理论是可以爆破的。 一般的手机验证码为6位,当然也有4位的。如果是6位的话,理论情况下就需要爆破100万次,如果是4位就是1万次了。还需要考虑一点的就是后端验证码的时效性,我们进行爆破这么多次,是需要一定时间的。如果该验证码的时效性是一分钟或者低于我们爆破时间的话,也是不能进行爆破的。

如下的截图,就是手机验证码可被爆破!

注册、登录、密码修改页面渗透测试经验小结_第2张图片

修复措施:注册登录页面设置图片验证码,并且图片验证码不可被绕过,后端对验证码的时效性和错误次数做限制,超过一定时间或者输入错误次数过多即该验证码失效。

手机验证码批量重放(短信炸弹)

对于网站发送短信验证码这个功能处,我们会想,是否可以利用这个功能进行短信验证码批量重放,来制造短信炸弹呢?

如下截图就是手机验证码发送的接口,我们可以批量重放该数据包,看后端返回的数据

注册、登录、密码修改页面渗透测试经验小结_第3张图片

如下,就是网站后台对同一手机号60秒钟内只能发送一条短信,这样就不存在手机验证码批量重放漏洞了!

注册、登录、密码修改页面渗透测试经验小结_第4张图片

有些时候,虽然后端会对其进行验证,但是还是可以想办法进行绕过:

  1. 删除Cookie值
  2. 手机号后加空格或者\n

对于手机验证码批量重放的前提是:后端对同一手机号在短时间内的发送短信条数无限制。

相关文章:短信轰炸之空格或\n绕过

注册页面批量注册

对于如下这种网站注册页面,没有手机短信验证码,那么,我们可以考虑,是否可以批量注册呢?

对于批量注册的前提是:该页面处没有图形验证码或者图形验证码失效!如下,该页面注册处没有图形验证码。

如下注册页面虽然需要输入姓名和身份证号,但是并未对姓名和身份证号去做核对,输入任意的姓名和身份证号即可。

注册、登录、密码修改页面渗透测试经验小结_第5张图片

我们抓包,先用正确的信息注册,记住注册成功时服务器返回的数据

{"content":"/User","type":1,"data":null}

然后对手机号进行批量遍历,可以发现,可以批量注册成功,存在批量注册漏洞。

注册、登录、密码修改页面渗透测试经验小结_第6张图片

注册页面覆盖注册

对于注册页面覆盖注册是指原来用一个手机号已经注册了账号,但是由于漏洞,导致可以再利用该手机号进行注册,并且会将之前注册的记录覆盖!

当我们用已经注册了的账号准备再注册时,发现会提示该手机号码已经存在!

注册、登录、密码修改页面渗透测试经验小结_第7张图片

我们抓包,发现后端检测该手机号已经注册了的话,会返回 true。如果检测该手机号没注册的话,会返回false。

注册、登录、密码修改页面渗透测试经验小结_第8张图片

我们修改服务器返回的数据包,改为false

注册、登录、密码修改页面渗透测试经验小结_第9张图片

可以看到,这个手机号现在可以注册了!

注册、登录、密码修改页面渗透测试经验小结_第10张图片

网站登录页面绕过

不同网站判断用户登录成功返回的数据都不一样!

如果网站判断登录成功,网站后端返回设置Cookie的数据这种是没办法绕过的!跳转页面通过Cookie对权限进行了检查,因为Cookie都是后端随机生成的,我们没办法伪造,所以也就绕过不了。

注册、登录、密码修改页面渗透测试经验小结_第11张图片

如果网站判断登录成功,网站后端返回的是JSON格式的数据,并且没有设置Cookie 的话,这种是有可能可以绕过的。

不可靠的前端校验

还是会有许多的网站他们没有严格进行身份校验,他们往往是通过依靠帐号密码登陆后发送后回传的JSON数据来判断用户身份是否正确,这就暴露出了很大的漏洞,这种漏洞利用起来就相当的容易,往往只需要一个安全界的神器 BURP 就可以完成身份验证的绕过,在登录的时候输入正确的账户以及随意的密码,将报文拦截下来,然后选择 burp 里面的拦截返回包的功能,捕捉返回的状态码。

如下,网站后端通过返回JSON格式的数据给前端,前端以此来判断用户是否登录成功!

注册、登录、密码修改页面渗透测试经验小结_第12张图片

我们查看前端判断登录处的JavaScript代码,发现如下。

注册、登录、密码修改页面渗透测试经验小结_第13张图片

于是我们可以伪造服务器返回的数据包进行绕过

注册、登录、密码修改页面渗透测试经验小结_第14张图片

最后成功以admin身份登录系统!

任意用户密码重置

几乎所有需要登录的网站都有一个忘记密码然后重置密码的功能,如果网站在密码重置功能处的代码不够严谨,将可能造成任意密码重置的逻辑漏洞。

  • 验证码失效,导致攻击者可以通过爆破其他用户手机验证码来实现任意用户密码重置
  • 验证码未绑定用户:也就是我们可以利用自己的手机号来进行成功验证手机验证码,然而在提交修改密码处提交其他人的手机号,来实现修改其他人的密码
  • 修改接收验证码的手机或邮箱:当我们修改密码时,输入正确的用户名,点击发送验证码,抓包,发现数据包中有该用户名对应的手机或者邮箱,我们将其修改为自己的手机或邮箱来接收验证码。输入我们收到的验证码,即可实现对该用户的密码进行重置。(这里还存在一个信息泄露,即知道用户名就能知道该用户对于的手机或邮箱)
  • 跳过验证步骤:网站对修改密码的步骤,没有做校验,导致可以直接输入最终修改密码的链接,直接跳转到该页面,然后输入新密码达到重置密码的目的。首先使用我们自己的账号走一次流程,获取每个步骤的页面链接,然后记录页面3对应的输入新密码的链接,重置他人用户时,获取验证码后,直接输入密码修改页面链接到新密码的界面,输入密码重置成功。
  • cookie值的替换:重置密码走到最后一步的时候仅判断唯一的用户标识cookie,并没有判断该cookie有没有通过之前重置密码过程的验证,导致可替换cookie重置他人用户密码。重置自己用户密码到达最后阶段,抓到数据包,并在第一阶段重新获取其他用户cookie,替换cookie到我们抓取的数据包中,发包测试。

相关文章:基于Web页面验证码机制漏洞的检测

                  逻辑漏洞挖掘初步总结篇

 

 

你可能感兴趣的:(Web漏洞,渗透测试)