通过Password Vault的XSS漏洞获取用户密码测试

否则,将会由于触发SOP,导致我们所有的XHR调用都被回绝

PS:本文仅作技巧评论争论,禁止用于任何不法用途

媒介

大年夜家好!自我上次写作以来到现在已经有段光阴了本日,我想和大年夜伙分享一些异常故意思的内容为了存储及治理的方便,信托大年夜家可能都邑选择应用一些密码治理器来存储不合网站的密码(例如Facebook,Gmail等其他帐户)那么,作为存储如斯敏感数据的治理对象是否应该包管足够的安然性呢?

场景

在我碰到的这个场景中,此中不仅包孕了账户密码它还包孕了该公司员工的密码令我认为惊疑的是,我在同一域中发清楚明了一个XSS破绽,并终极使用该破绽成功偷取了此中的用户密码信息

每当我测试一个利用法度榜样时,我都邑首先确定我的目标公司类型而当前测试的目标则是一个密码治理器,显而易见这是一个存储密码的地方而密码也这恰是他们所要保护的敏感数据,我的目标便是捕获和检索这些密码

利用事情流程

为了更好的理解利用法度榜样,我们必要懂得它的功能和流程,以及它是若何检索数据以及检索数据的位置

在仔细察看利用法度榜样并完成各个哀求之后,我发明利用法度榜样会从位于利用法度榜样的/api/的API中检索不合的信息

在对利用法度榜样进行一些爬行和抓取后,我发清楚明了一些API端点:

API端点察看

当利用法度榜样与API完全交互时,每个端点都返回了一些值和信息,此中包括record ID,session token和其他一些内容让我来解释下这些API

records/all 端点

位于/api/v3/records/all的端点,它正在吸收GET哀求一旦在进行身份验证时发送了GET哀求,它就会返回具有record ids的JSON工具,以及与可用记录相关的其他信息

passwords/record 端点

该端点位于/api/v1/passwords/record在record IDs从record/all端点被检索后,该端点用于从这些特定记录ID中检索密码及其完备信息

在我们的例子中,我们获取到了以下record IDs:

526882 – “Facebook Account” record ID

526883 -”Google Email” record ID

假如用户单击“ ”Facebook Account” 记录,一个应用以下JSON数据以及record ID为526882的POST哀求,将会被发送到/api/v1/passwords/record端点

这将返回指定ID的以下信息:

现在我们已经知道了ID是若何被检索的,以及它们是若何返回数据的但有个问题便是,利用法度榜样在发送给API的每个POST哀求中都发送了一个CSRF token在哀求中包孕一个 “token“,是为了对用户会话进行验证

session/token 端点

为了弄清楚token是若何天生的,我查看了其它的一些端点,终极发明位于/api/v1/session/token的API端点是认真天生CSRF tokens的

发送一个GET哀求至该端点,你将会获取到以下相应:

XSS破绽

现在,我们开始懂得利用法度榜样的流程和用于数据互换的端点我们必要以某种要领从以下端点获守信息:

Session Token 来自 /api/v1/passwords/record

Record IDs 来自 /api/v3/records/all

Record 信息 来自 /api/v1/passwords/record

从端点获守信息,有一个简单的技术便是使用一些设置设置设备摆设摆设差错的CORS,但可惜的是该利用彷佛并没有将它用于资本共享

另一种可能性是在同一个域的某个地方找到XSS破绽,绕过同源策略(SOP)

颠末一番测试,我成功的在一个电子邮件激活页面上找到了一个XSS破绽如下所示:

现在,我们就不必再担心SOP了,并可应用与利用法度榜样相同的要领与API进行通信

使用脚本

首先,我们将应用javascript的fetch()函数来向/api/v3/records/all发出GET哀求,以获取所有的record ID:

[1] [2]下一页

抓取记录后,接下来便是获取session token以进行POST哀求这里我还将记录的相应转换为了JSON,并直接从JSON工具调用记录ID的值fetch()函数用于发送GET哀求,以捕获令牌并从JSON工具中检索其值:

现在,我们获取到了“session_token”和“record IDs”接下来我们要做的便是将具有”record ID”的POST哀求,发送到/api/v1/passwords/record端点我将应用XHR发送具有指定记录ID的POST哀求我将遍历record IDs逐个检索每笔记录的信息:

如你所看到的第30-34行,我们进行了一些适当设置设置设备摆设摆设在第45行,我们将这些值以 {“id”:record_ID_here,”is_organization:false}的形式放置,然后发出哀求

哀求完成后,将解析相应并从相应中获取值,例如标题,URL,用户名,密码然后将这些值添加到虚拟变量“data_chunks”进行终极的处置惩罚

在应用网络的数据添补虚拟变量之后,它将转换为base64以避免差错字符冲突,并将其发送至进击者的主机上

留意:还有许多其他措施可以用来精确发送抓取的数据,但出于演示目的我应用的措施很简单,例如直接发送base64编码数据着实,经由过程POST将数据发送至特定文件也是一个不错的选择

破绽使用

现在,我们的破绽使用脚本已经编写完成那么我们该若何进行使用呢?这里有两个简单的XSS使用技术

在外部主机上托管你的javascript使用脚本(你可能必须要设置CORS才能成功造访);

直接用eval和atob包孕payload

对付第一种技巧,必要经由过程http://attacker.com/path_to_exploit.js“>来加载外部JS这种措施在处置惩罚大年夜型破绽使用代码时异常有效,并且还有一个好处便是使用代码不会被记录在办事器中

第二种措施可用于处置惩罚一些较简短的payload我应用的payload如下:

现在用我们的base64编码的源代码调换atob()的值首先,我们的payload将由atob解码,然后由eval()履行

终极的payload如下:

这里或许有人会说这并不是一个简短的payload,而是一个较大年夜的payload着实它也可以从外部主机被加载,但这里我为了避免CORS设置所带来的麻烦,以是才应用了这种措施

现在我将托管一个内容如下的exploit.html文件:

现在只需为exploit.html供给一个URL,进击者就可以将用户重定向到一个注入了payload的页面上

成功使用后,我们将获取到以下数据:

可以看到,存储在Password Vault中的记录成功被我们检索了出来,并且我们也放大年夜了该XSS破绽带来的安然影响

破绽使用代码我已经宣布在了https://gist.github.com/shawarkhanethicalhacker/e40a7c3956fdd24b9fb63d03d94c3d34,有兴趣的可以自行下载测试

上一页[1] [2]

赞(0) 打赏
分享到: 更多 (0)
免责申明:本站所有资料均来自于网络,版权归原创者所有!本站不提供任何保证,不保证真实性,并不承担任何法律责任

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

阿里云优惠网 更专业 更优惠

阿里云优惠券阿里云大礼包