在学习本章前,建议先对前序章节进行了解,传送门如下:
本章节结合靶场试验来仔细研究基于密码的登录机制中最常见的一些漏洞。
上一章节介绍了三种枚举的方式,并通过试验演示了其中通过状态码来进行爆破的场景,本章节继续通过另外两个试验来演示剩下的两种枚举方式。
场景试验-通过响应差异爆破:
https://portswigger.net/web-security/authentication/password-based/lab-username-enumeration-via-subtly-different-responses
场景说明:
这个场景容易受到用户名枚举和密码暴力破解攻击,这里提供了一个可预测用户名和密码的字典,可以在场景列表中找到。
试验目的:
要完成这个试验,需要枚举一个有效的用户名,暴力破解该用户的密码,然后访问他的账户页面。
攻击过程:
①访问首页后进入登录页面,随便填写个用户名和密码,会显示" Invalid username or password",随后将这个请求发送到Intruder进行自动化攻击改在。
②在Inspector中首先清除所有变量,再将Username的输入部分变为变量,同时在Payloads选项卡中将用户名字典粘贴进去
③因为要通过页面的差异化响应来确认正确的用户名,接下来我们需要设置下从响应中来进行关键字的判定,设置过程如下图所示,最后在响应包中选中" Invalid username or password",单击"OK"后即可开始攻击
④从攻击完成的结果中,可以找到一条与其他响应有些许不一致的响应,记住这个用户名
⑤再次回到Inspector中将那个请求的变量全部清楚,把用户名改成刚才确认的那个,密码变成变量,同时在Payloads中将密码列表字典粘贴进去,完成后点击开始攻击
⑥攻击完成后,从响应结果中找出响应码是302的,对应的就是正确的密码。结合前面的用户名和这个密码进行登录,登录成功即可完成试验
场景试验-通过响应时间爆破:
https://portswigger.net/web-security/authentication/password-based/lab-username-enumeration-via-response-timing
场景说明:
这个场景容易受到用户名枚举和密码暴力破解攻击,这里提供了一个可预测用户名和密码的字典,可以在场景列表中找到。场景提供了一个可登录账号wiener:peter。
试验目的:
要完成这个试验,需要枚举一个有效的用户名,暴力破解该用户的密码,然后访问他的账户页面。
攻击过程:
①访问登录页面,随便输入用户名和密码后发现输错几次后,就被锁定IP无法登录了
②将登录的请求发送给Repeater,增加X-Forwarded-For标头,这个标头允许采用IP地址欺骗来绕过基于IP的暴力保护,确认可以通过此方法解决IP封锁的问题
③继续使用正确的用户名和不正确的用户名进行尝试,注意下响应时间。可以发现当用户名无效时,响应时间大致相同。但是,当输入有效的用户名"wiener"时,响应时间会根据您输入的密码长度而增加。
④将这个请求发送到Intruder进行自动化攻击改造,攻击类型选择"Pitchfork",清除所有变量,随后将X-Forwarded-For标头后IP地址的最后一位和用户名设置为变量,同时将密码设置成一个很长的字符串(大约200个字符左右)
⑤修改Payloads,分别设置两个变量的范围
并在Resource Pool中修改测试并发,每次只发送一个,从而方便进行时间延迟判断,随后发起攻击
⑥在攻击结果的列表中,打开Responsereceived列,降序排序,可以看到有一个用户名延迟非常高,把延迟最大的前五位做下记录,考虑到网络有时会发生延迟,我们多测几次,最后会发现有一个用户名延迟总是在前五中,抄录下来
⑦重新构造Intruder中的攻击语句,取消所有变量后,用户名就用前面刚抄录的那个,将IP和密码设置为变量,攻击方式不变,同时可以把并发恢复成默认的10个,随后进行攻击
⑧从结果中找出响应码是302的就是密码,用这个用户名和密码进行登录即可完成试验
SQL注入攻击-利用UNION检索其他数据(上)
SQL注入攻击-检索隐藏的数据
HTTP高级请求走私-HTTP请求隧道(上)
HTTP高级请求走私-CRLF的利用(上)
HTTP高级请求走私-响应队列中毒
HTTP请求走私漏洞-漏洞利用场景(上)
HTTP Host头漏洞-密码重置投毒
HTTP Host头漏洞攻击-概念梳理
原文始发于微信公众号(H君网安白话):身份验证漏洞-基于密码的登录漏洞(中)
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论