一、验证机制

验证机制注意分为:设计缺陷和执行缺陷

Web程序常用的验证机制有:

二、设计缺陷
1、可预测的用户名

2、非唯一性用户名

3、弱口令

4、密码确认不完善

5、可预测的密码

6、密码重置



7、记住密码

8、证书

当验证机制设置不完全的时候,可以通过暴力破解来获得用户名和密码
三、暴力破解
暴力破解的工具有很大,有hackcat、hydra、Burpsuite等等

使用暴力破解的前提是可以试错,错误次数没有限制

四、执行机制
1、异常开放登录机制


2、多阶段登录机制中的缺陷



原理:
登录页面在设置用户名和密码的时候,没有遵循密码设置规则,借助字典利用穷举法将所有可能的用户名和密码一一尝试,进行蛮力攻击,最后暴力破解出用户名和密码,绕过验证机制。
1、打开浏览器,访问http://ip/webug/pentest/test/b2e16da5985ee1be/index.html

2、随便输入用户名为:“root”,密码为“123456”提交,登陆失败

3、返回登陆页面,还是随便输入用户名为:“root”,密码为“123456”

4、启动Burp Suite抓包工具,设置参数和浏览器代理,开始抓包

5、点击“登录”,提交输入的用户名和密码,Bp成功抓取数据包

6、全选数据包,右键,选择“Send to Intruder”,将数据包发送到暴破模块

7、将攻击模式设置为“Cluster bomb”


8、切换到“Payloads”,设置攻击载荷。设置攻击位置1的payload类型为"Simple list",并加载用户名字典

9、设置攻击位置2的payload类型为"Simple list",并加载密码字典

10、点击“Start attack”,开始暴力破解,暴破成功

按一下Length

注:使用字典暴力破解,对暴破的结果根据长度进行分析,长度值与其他不同的就是正确结果,从而绕过登录验证机制。
原理:
登录页面在设置用户名和密码的时候,没有遵循密码设置规则,但是增加了验证码,需要输入验证码,而验证码的逻辑又放在前端,通过抓包发现后台不会对输入错误的验证码进行验证,在浏览器中,输入错误的验证码是有提示的。前端设置的验证码如同虚设,后端又不会对验证码进行验证。那么可以略过验证码,直接进行暴力破解就可以了,借助字典利用穷举法将所有可能的用户名和密码一一尝试,进行蛮力攻击,最后暴力破解出用户名和密码,绕过验证机制。
1、打开浏览器,访问http://ip/pikachu/vul/burteforce/bf_client.php

2、随便输入用户名为:“root”,密码为“123456”以及随意验证码进行提交,弹框提示验证码输入错误

3、点击“确定”,还是随便输入用户名为:“root”,密码为“123456”以及正确验证码

4、启动Burp Suite抓包工具,并设置参数和浏览器代理

5、点击“Login”,提交输入的用户名、密码以及验证码,Bp成功抓取数据包(验证码输入错误时,无法抓取到数据包,只有验证码输入正确时才能抓到数据包,由此可以判断验证码的验证逻辑在前端)

6、右键,选择“Send to Intruder”以及“Send to Repeater”,分别将数据包发送到暴破模块和重发模块

7、在“Repeater”中对数据包修改验证码为任意,然后点击“Send”放包,查看响应包发现后台不会对输入错误的验证码进行验证,在浏览器中,输入错误的验证码是有提示的


8、切换到浏览器,右键选择“查看页面源代码”,浏览代码中发现验证码的验证逻辑是在客户端的实现规则

9、通过前端验证码的验证逻辑的代码可以发现Javascript会从0-9和26个大写字母中随机挑选5个作为验证码,然后用 validate() 去验证,并且每点一次验证码,就会调用 createCode() 改变验证码


10、前端设置的验证码如同虚设,后端不会对验证码进行验证。那么不用理会验证码,直接进行暴力破解。切换到BurpSuite的的“Intruder”模块

11、点击“Clear §”,清除所有Payload位置标志,重新选择“username”和“password”两个需要暴破的位置标志,点击“Add §”,将攻击模式设置为“Cluster bomb”


12、切换到“Payloads”,设置攻击载荷。设置攻击位置1的payload类型为"Simple list",并加载用户名字典

13、设置攻击位置2的payload类型为"Simple list",并加载密码字典

14、点击“Start attack”,开始暴力破解,暴破成功



注:在遇到登录页面增加有验证码验证,首先判断是前端验证还是后端验证,前端设置的验证码如同虚设,就可以略过验证码,直接使用字典暴力破解,对暴破的结果根据长度进行分析,长度值与其他不同的就是正确结果,从而绕过登录验证机制。
原理:
登录页面在设置用户名和密码的时候,没有遵循密码设置规则,但是增加了验证码,用来防止恶意注册、防止暴力破解;验证码需要判断验证的逻辑是放在前端还是服务端,服务端验证码常见问题:
- 1、验证码不生效,导致验证码的验证逻辑无效
- 2、验证码不过期,导致验证码不失效,可以长期使用
- 3、验证码设计太简单以及有规律,可以被预测、猜解
- 4、验证码校验不严格,验证逻辑出现问题
利用验证码的问题,进行验证码绕过,再借助字典利用穷举法将所有可能的用户名和密码一一尝试,进行蛮力攻击,最后暴力破解出用户名和密码,绕过验证机制。
1、打开浏览器,访问http://ip/pikachu/vul/burteforce/bf_server.php

2、随便输入用户名为:“root”,密码为“123456”以及随意验证码进行提交,页面提示验证码输入错误


3、随便输入用户名为:“root”,密码为“123456”以及正确验证码进行提交,页面提示“username or password is not exists”


4、启动Burp Suite抓包工具,设置参数和代理

5、随便输入用户名为:“root”,密码为“123456”以及随意验证码,点击“Login”,提交输入的用户名、密码以及验证码,Bp成功抓取数据包,说明后端对验证码是有验证的


6、点击“Drop”,丢弃数据包
7、随便输入用户名为:“root”,密码为“123456”以及正确验证码进行提交,重新抓包


8、右键,选择“Send to Intruder”以及“Send to Repeater”,分别将数据包发送到暴破模块和重发模块

9、 在“Repeater”中点击“Send”,发送数据包,查看响应包,提示“username or password is not exists”

10、换个密码再发送一次数据包,查看响应包,依然提示“username or password is not exists”,正常来说应该提示验证码错误,说明验证码长期有效,可以直接暴力破解
11、切换到BurpSuite的的“Intruder”模块,点击“Clear §”,清除所有Payload位置标志,重新选择“username”和“password”两个需要暴破的位置标志,点击“Add §”,将攻击模式设置为“Cluster bomb”


12、切换到“Payloads”,设置攻击载荷。设置攻击位置1的payload类型为"Simple list",并加载用户名字典

13、设置攻击位置2的payload类型为"Simple list",并加载密码字典

14、点击右上角的“Start attack”,开始暴力破解,暴破成功


原理:
在网站的忘记密码位置进行找回密码的过程中,可以利用密码重置过程中常见的一些问题绕过安全验证,从而实现重置密码。常见密码重置问题:
- 1、用户名枚举:网站反馈多余信息,可猜测用户信息
- 2、验码返回前端处理:可截获、修改
- 3、修改Request:用户名、手机号、邮箱、Cookie等信息可修改
- 4、修改Response:操作结果成功/失败可修改
- 5、暴力破解验证码:验证码长度有限,或验证码未设置可靠的失效时间
- 6、拼凑密码重置链接:重置密码链接有规可循
1、访问http://ip/index.php

2、根据提示,点击“点击运行安装向导”,安装cms
3、点击“我同意”,然后一直点击“下一步”


4、填写必要信息,数据库密码要填写“root”;数据库名任意设置,比如“zzcms”;管理员密码任意设置,比如“123456”

5、然后一直点击“下一步”,直至安装完成

6、点击“网站首页”,跳转至网站首页,至此企业网站搭建完成

7、点击右上角的“免费注册”,跳转到注册账号界面


8、填写相关信息,点击“提交”,注册账号成功

9、点击“安全退出”,退出登录

10、点击右上角的“请登录”,跳转登录账号界面

11、由于攻击者不知道账号密码,点击“找回密码”,进行尝试

12、输入任意用户名,提示“该用户名不存在”,利用网站反馈的多余信息,不断猜测用户名,直到正确为止

13、根据图片验证码中的结果填写,进行验证码验证,然后点击“下一步”,进入安全验证阶段


14、由于验证码会发送到用户的邮箱进行安全验证,而攻击者无法获取到验证码,无法进入下一步。尝试抓包,启动Burp Suite抓包工具,设置参数和代理

15、随便输入验证码(不要点击获取验证码),点击“下一步”,提交输入的验证码,Bp成功抓取数据包

18、右键,选择“Do intercept”下的“Response to this request”,抓取响应数据包(即可以抓取数据包的响应包进行修改)

19、点击“Forward”,转发数据包,获取响应数据包

20、把响应数据包中的“no”改为“yes”,然后点击“Forward”,继续转发数据包

21、切换到浏览器,发现已经绕过安全验证,关闭浏览器代理,输入任意新密码即可,比如“hello123”,点击“确定”即可

22、重置密码成功


23、点击“登录”,用修改的密码尝试登录,成功登录

注:在找回密码的过程中,可以利用密码重置的常见攻击方法进行尝试,枚举用户名、抓包修改数据包、暴力破解验证码、拼接重置密码连接等方法尝试绕过安全验证,从而重置密码,登录账户。
这篇文章就写到这里了!