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

简介: 【bp靶场portswigger-服务端2】身份认证漏洞-16个实验(全)(上)

助你一臂之力


📋问题1:挖身份验证漏洞需要准备什么?


🎯信息收集(收集管理员,被攻击账号的相关消息)

🎯已有账号(将很大长度上提升挖到的概率)

🎯准备好字典


📋问题2:使用的工具有哪些?


🎯BP必备(爆破、数据包的分析)

🎯加解密工具(一些关键值一般会被加密)


823774c977d442e5b110064acf105c10.png

一、身份验证定义


1、三个身份验证因素


(身份验证机制依赖于一系列技术来验证这些因素中的一个或多个)

知识因素:一些你知道,如密码或安全问题的答案。

占有因素:一些你有也就是像移动电话或安全令牌这样的物理对象。

内在因素:您的身份或行为,例如,您的生物特征或行为模式。


2、身份验证和授权


身份验证:验证用户是否确实是他们自称的那个人

授权:涉及验证用户是否被允许做一些事情


3、身份验证漏洞的产生


身份验证机制很弱:不能充分地防止暴力攻击

身份验证失败:实现中的逻辑缺陷或糟糕的编码允许攻击者完全绕过身份验证机制

第三方身份验证机制中的漏洞

————

示例:

1、基于密码的登录中的漏洞:

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

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


4、实验的字典


用户名:

Authentication lab usernames | Web Security Academy

密码:

Authentication lab passwords | Web Security Academy

6612ec5358a64ca584d77c9901c9a15b.png


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


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不存在

(和实战中特别像)

798e4d49c0e8499e889a412c499743e7.png


part2:

爆破用户名

46f1b55147134bea90ed4e696fb94e0a.png

使用实验提供的usernaem


052bc900c17641e2845aed051a52af5b.png


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

账号:alterwind

f6d5377aca8548a796d1d6ec98afae5d.png


part3:

爆破密码

3ec10a9951a14298bde9683395276016.png

使用实验提供的password

fe129e1c25a64d05bd4a9b6ad10d302e.png


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

尝试一下是不是密码

密码:aaaaaa

7f89776aa9be4feeb93a45c2d816883e.png


part4:

登陆进去了


79e03e64553549e7b31f83ffa66a29b2.png


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


part1:

对用户名进行爆破

692bc0f370974ee18ef2124cd3e27bf5.png


使用bp实验提供的username

2e4eb5def02c47769482014bd0203a8c.png


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

(但最后结果是错的)


15098da8ee4f4263a9fdac33696010ec.png


对爆破结果再分析

(提取错误的提示信息)

4a9e8ca315f84cc4b19d82f236400a2b.png


发现了错误提示不一样

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

账号:root

7f833e23f84740489a219cf4c095acb0.png

part2:

对密码进行爆破


20dfc65bf44340198f2beee1a0b191cc.png

使用实验提供的password

839ae8caf27e431faaa8cafd47af411a.png

熟悉的302跳转

密码:666666

4d8926d571464a4f945af0fa093144a5.png


part3:

登陆

root/666666


24f86bde99de47ddb4938aa7dda924dc.png


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


part1:

此实验,对ip有限制

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


4332c2ddd42044318f7962ba86668aac.png


payload1:

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


db1cca4bda814fea8294ba400cc12482.png


payload2:


9b812e8994414af3a10feda9a1e0f59f.png


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


9283645389d5467f8e90fb7676c05cc1.png


part2:


分析结果


把时间勾上


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


85a5949809ae4d27935c68bf32f4edc9.png


oracle

agent

vagrant

alerts

part3:

对密码进行爆破


payload2:


改为密码字典


89eaee14e26e453997de0b3e3356750c.png


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


part4:


登陆账号


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


part1:


题目已经提供了


已有账号:wiener:peter


要攻击的用户名:carlos


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


34839494a0ce4f7080aec17ab56b9e3d.png


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


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


正确账号:wiener


2335a5635195474fb22d9075dff557c0.png


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


5521599af58b4b1aa4ae9ff899e96ce0.png


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

aa8334bed3264a959c66bd5181d23140.png


0927763ec8694b2280501414ad340748.png



part2:


开始使用


要攻击的用户名:carlos

e2553569a28341a1b75509e3cc2863ba.png



payload1:


608d5f061d934a27933a7f5e71a15e56.png


payload2:


2f053424d6404e60ad42afc8062a8ec1.png


a7af009f10f8484db3dde5f704b77bb1.png


part3:


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


账号:carlos


密码:monitoring


fce298b6f79546058b0a91950423fd75.png


part4:


登陆

4e4011adb550418f8fc9aba5e8c7ea17.png


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


part1:


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

8afc8b87d20b49c1919ea73f3e032856.png

90b7ac14285f4c42b27595262df3b257.png

错误的payload2:添加5个null payload


(密码应该不能为空)


c84302deca914c8c9c0bf80b81727192.png


0da016fcde334a3f91c9f4d05981dab4.png


正确的payload2:


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

6fbdffd83634448ebec709312e2a659f.png


part2:


分析账号


账号:att


5052ccae28c242cb9bccec1757a35765.png


part3:


爆破账号att的密码


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

c202fe89c4134f91a9e5f066a5de0d38.png


载入密码

a4d03020142b4f8f9c91c70e286217dd.png

分析结果:


有一个长度出奇的短


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


6631439d7977484f99accd07404e0e31.png


账号:att


密码:iloveyou


part4:


登陆


c79bf1ca1c5a488ba3ec4d04eac92883.png


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

part1:


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


d7b97d57f3ef45f9a65a684076b8f343.png


整理的好看点


184244fa243548f9b0c78562c1334b91.png


提示攻击的用户为carlos


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


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


42fadf600aa148458294a2bdd8b31c7f.png


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


b297d555b0a1416f9f2bb543e7bc200b.png


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


ab975817fae2423aa212f2bb0b1dc3a5.png


0849536068a64f60a315b818b41cd3ce.png


b189605a1dd04ecd87fe8da3c8f949e6.png

a1ab32b797054b44b3f291a24ea58e51.png


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

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旁路

目录
相关文章
|
5月前
|
安全 Shell PHP
一篇文章讲明白Kali学习笔记30:身份认证与命令执行漏洞
一篇文章讲明白Kali学习笔记30:身份认证与命令执行漏洞
24 0
|
安全 Java API
Shiro 身份认证绕过漏洞 CVE-2022-32532
Apache Shiro 是一个强大且易用的 Java 安全框架,通过它可以执行身份验证、授权、密码和会话管理。使用 Shiro 的易用 API,您可以快速、轻松地保护任何应用程序 —— 从最小的移动应用程序到最大的 WEB 和企业应用程序。
458 0
Shiro 身份认证绕过漏洞 CVE-2022-32532
|
安全 数据安全/隐私保护
靶机实战-密码重置与身份认证失效漏洞
靶机实战-密码重置与身份认证失效漏洞
靶机实战-密码重置与身份认证失效漏洞
|
安全 前端开发 中间件
【bp靶场portswigger-服务端2】身份认证漏洞-16个实验(全)(下)
【bp靶场portswigger-服务端2】身份认证漏洞-16个实验(全)(下)
473 0
【bp靶场portswigger-服务端2】身份认证漏洞-16个实验(全)(下)
|
数据安全/隐私保护
|
安全 Ruby
Github Enterprise版本SAML服务两个身份认证漏洞
本文讲的是Github Enterprise版本SAML服务两个身份认证漏洞,在Github Enterprise版本的SAML服务中发现完全身份验证绕过的两个漏洞。作者将这些漏洞通过hackone的漏洞悬赏报告给Github并且已经修复。
2035 0
|
29天前
|
安全 Java 测试技术
ToB项目身份认证AD集成(二):快速搞定window server 2003部署AD域服务并支持ssl
本文详细介绍了如何搭建本地AD域控测试环境,包括安装AD域服务、测试LDAP接口及配置LDAPS的过程。通过运行自签名证书生成脚本和手动部署证书,实现安全的SSL连接,适用于ToB项目的身份认证集成。文中还提供了相关系列文章链接,便于读者深入了解AD和LDAP的基础知识。
|
6月前
|
关系型数据库 MySQL 数据库
云计算|OpenStack|社区版OpenStack安装部署文档(三 --- 身份认证服务keystone安装部署---Rocky版)
云计算|OpenStack|社区版OpenStack安装部署文档(三 --- 身份认证服务keystone安装部署---Rocky版)
170 0