从 3.99 美元到 1,650 美元(第一部分)——通过更改 HTTP 响应实现简单的垂直特权提升

admin 2025年4月10日13:55:56评论0 views字数 4845阅读16分9秒阅读模式

这个故事讲述了我如何通过使用高级电话号码在目标上(仅允许特定国家代码进行注册)发现几个简单的错误。

与往常一样,我将尝试采用两种不同的方式来发布这篇文章,即:

  • 对于那些只需要本研究结果要点的人(像往常一样,如果读者已经理解了每一个流程,InshaAllah 可以节省大量的时间)——请参阅 TL;DR 部分,以及
  • 对于那些需要了解这一发现的执行流程或旅程的人来说。InshaAllah,它可以告诉读者一些心态,并希望能够帮助人们丰富他们的见解。

请尽情欣赏这个故事。

一、简介

以下是关于此问题的简单7点:

  • 目标仅允许人们使用特定国家代码的电话号码注册他们的账户。
  • 使用可以生成虚拟电话号码的应用程序来接听电话或短信。由于我需要两个不同的帐户和不同的电话号码,所以我使用2ndline(免费获取号码,但有多个条件)Hushed(需要付费才能获取号码)。
  • 在同一实体上创建两个账户,分别为“管理员”和“员工”。
  • 登录应用程序并尝试搜索常见参数,例如“ isAdm ”、“ isAdmin ”、“ isAdministrator ”或类似的任何内容(“Adm”可以是“Root”)。
  • 使用“ staff ”帐户登录时,将“ isAdm ”参数的值从“ false ”更改为“ true ” 。同时将“ Edit ”参数的值从某个数字更改为“ 1 ”(它将提供编辑可用设置/配置的功能)。
  • 成功将“员工”账户提升为“管理员”权限。
  • 几周后(由于一些问题,在与程序所有者进行了深入讨论之后),感谢真主,它最终被标记为 P2 并获得 1,000 美元的奖励。

从 3.99 美元到 1,650 美元(第一部分)——通过更改 HTTP 响应实现简单的垂直特权提升

图 1 该 Bug 被标记为 P2

二、旅程

我忘记具体什么时候收到这个邀请了,但我相信这个程序已经在我的“私人主页”上呆了大约1年了。(请不要问程序名称,我不会回答)。

有一天,我决定查看仪表板上每个私人计划,并查看“漏洞奖励”的数量。请注意,这没有证据/明确的理由,但有时,我对“漏洞奖励”数量较少感到更放心,尽管实际上有几种情况会导致这种情况发生,例如:

  • 这个目标非常困难,
  • 目前还没有用户对该计划感兴趣(赏金范围、道德异议等),
  • 该项目邀请的研究人员并不多,但受邀的研究人员有很多项目要处理,或者
  • 研究人员仍然专注于特定程序(是的,有时我们很难从基础开始重新学习目标)-> 除非你想专注于特定功能上的某些类型的漏洞。因此,改变目标并不太难。

原因可能各不相同,但正如我所说,有时我觉得奖励报告数量较少更合适,尽管不是每个人都同意这一点。花了一点时间后,我终于找到了这个程序(报告数量低于 100 份)。

2.1. 注册我们的账户

在测试目标时,最好有一个账户,这样我们就可以更广泛地了解目标本身(不是强制性的,但最好有)。通过登录,我们还有机会看到其中许多可能对其他用户或应用程序所有者构成风险的功能。简而言之,这种情况将使测试人员拥有更多的“游乐场”,能够在其中发现潜在风险。

回到正题。第一次看到可以免费注册账号的功能时,我非常开心。但当我发现需要一个带有特定国家代码的电话号码并需要我们验证时,这种喜悦立刻就消失了。

我从未想过,在我开始测试之前,挑战就已经开始了。以下是我注册账户时做的一些事情:

  • 我尝试了几种绕过方法来确定是否可以用自己的电话号码注册,但并没有得到很好的结果(读作:失败)。
  • 我也尝试使用了一些免费的公共短信接收器,是的(正如你可能猜到的),电话号码已经被使用。
  • 最后,我尝试用那些公共电话号码来重置密码,但目标屏蔽了它。我猜,很多人都会尝试通过重置密码来使用它。

2.1.1. 虚拟电话号码服务的使用

几乎绝望,因为我也没有住在那里的同事可以寻求帮助,但是感谢真主,我终于想起了一位同事,尽管他住在印度尼西亚,但他喜欢使用海外的 WhatsApp 号码。

从那里,我尝试找到可能帮助我做到这一点的应用程序(可以为我们提供具有特定国家代码的唯一电话号码),并且我很高兴,我找到了可用于注册我的第一个帐户的第二行应用程序(免费,但有几个条件),以及可用于注册我的第二个帐户的Hushed 应用程序(高级应用程序)。

从 3.99 美元到 1,650 美元(第一部分)——通过更改 HTTP 响应实现简单的垂直特权提升

图 2 左 (Hushed — Premium) — 右 (2ndline — 免费)

笔记:

  • 我无意推广该应用程序。我只讲述我从谷歌搜索中得到的信息以及我使用的内容。
  • 为了使这部分更简单,让我们跳过注册过程(因为我想解释的重点是如何从海外获取虚拟电话号码)。

因此,通过使用这两个应用程序,我成功地在同一实体上注册了 2 个账户。其中一个注册为“管理员”,另一个注册为“员工”。

一个是 2ndLine App 的账户(免费获得虚拟电话号码,但有多个条件),另一个是 Hushed App 的账户(一周的访问权限需要我支付 3.99 美元)。有了这种有限的访问权限,我应该优化测试。

2.2. 测试!

2.2.1. 我有两个不同类型的账户,我该怎么办?

基本上,当我们有权访问应用程序时,可以做的事情很少(即登录)。但就我个人而言,我喜欢先测试逻辑。在这种情况下,就是权限提升(水平或垂直)。

那么,现在我有 2 个不同类型的帐户,我应该怎么做才能解决权限提升问题?

  • 将用户 ID 从一个帐户更改为另一个帐户(通过 POST / GET / 任何 HTTP 方法);
  • 当应用程序提供 POST 方法并且更改用户 ID 不起作用时,请尝试将请求从 GET 更改为 POST。反之亦然;
  • 尝试直接从“低级别”账户访问受保护的URL(例如,管理员有https://target/protect-url,然后尝试在“低级别”账户中访问这个受保护的URL);
  • 尝试查看并分析会话是如何创建的(创建的会话是否可预测);
  • 还有更多可以尝试的东西。我建议读者查看Pentester Land门户。他们收集了大量令人惊叹的资源。

那么,我终于找到了吗?是的,但是在这种情况下,权限提升是通过更改 HTTP 响应中的几个参数来实现的。

2.2.2. 分析 HTTP 响应

我们应该看到什么才能通过 HTTP 响应中的参数更改来执行权限提升?好吧,执行此操作的基本方法是查看登录后的应用程序响应。如果您收到一些带有常见参数的响应,例如:“isAdm”,“isAdmin”,“isAdministrator”或类似的任何内容(“Adm”可以是“Root”),则尝试将值从一种状态更改为另一种状态。

请注意,burpsuite(我相信其他类似工具也一样)具有拦截服务器响应的功能。这将使我们能够在将值直接发送到客户端之前对其进行更改。

从 3.99 美元到 1,650 美元(第一部分)——通过更改 HTTP 响应实现简单的垂直特权提升

图 3 Burpsuite 上的拦截服务器响应功能

因此,在这个目标上,我在 HTTP 响应中发现了“isAdm”参数(在 1 个请求中的 3 个不同端点上),这引起了我的注意。从这里,我直接尝试了解当我使用两种不同类型的帐户(即“管理员”和“员工”)登录时此参数发生的变化。

结果是:我发现当我们使用管理员账户登录时, “isAdm”参数的值将被设置为“ true ”,而当我们使用“staff”账户登录时,“isAdm”参数的值将被设置为“ false ”。

因此,我立即在使用“staff”帐户登录时将“isAdm”参数的值从“false”更改为“true”(在这 3 个不同的端点上),希望该帐户具有管理员权限。

有用吗?太遗憾了,没有。

从这次执行开始,我的“员工”帐户状态已完全从“员工”变为“管理员”。但是,此帐户无法修改管理员帐户通常可以修改的任何内容。这就像我们拥有最高权限的帐户却没有任何权限。报告此事听起来很糟糕——拥有无法执行管理操作的管理员标签会有什么影响?

2.2.3. 赋予修改权限的参数

因为这些账户无法更改任何内容,所以应用程序中一定有某些东西赋予了访问权限来进行更改。从这里,我再次回过头来分析 HTTP 响应并找到了“Edit”参数。

就像之前的活动一样,我尝试比较“管理员”和“员工”帐户上此“编辑”参数的值。最后我看到了差异。在管理员帐户中,“编辑”参数的值将设置为“ 1 ”。但在员工帐户中,该值将设置为“ 2 ”。因此,我假设如果此参数“阻止”我的员工帐户更改设置/配置,即使它已经具有“管理员”标签。

基于这个假设,我立即重新执行该过程。如果在上一个活动中我只更改了“isAdm”参数的值,那么在这种情况下,我尝试同时修改“isAdm”和“Edit”参数。

因此,这是我执行的流程:

  • 使用员工账户登录。在 HTTP 响应中,我们发现“isAdm”参数的值为“ false ”,而“Edit”参数的值为“ 2 ”。
  • 将“isAdm”参数的两个值都更改为“ true ”,将“Edit”参数的值更改为“ 1 ”。
  • 转发请求,最终我们的“员工”账户就拥有了管理员权限
  • 为了确保此更改确实有效,请尝试使用该帐户登录另一个浏览器,并尝试更改一些只能由管理员更改的设置/配置。 如果有效,则权限提升已成功执行。

从 3.99 美元到 1,650 美元(第一部分)——通过更改 HTTP 响应实现简单的垂直特权提升

图 4 执行流程

确保一切正常后,我尝试从头开始记录该活动。

请注意,记录拦截器中有关您所做事情的日志非常重要。有时,如果您确实可以重现您所述行为的问题,则确实需要此日志作为证据。

大约 17 天后,他们终于将这个问题标记为 P2。大约一个月后,这个问题得到了修复。

从 3.99 美元到 1,650 美元(第一部分)——通过更改 HTTP 响应实现简单的垂直特权提升

图 5 该漏洞被标记为 P2

三、经验教训

在本节中,我想添加一个简单的回顾,以便读者更容易理解这一简单旅程的一些教训:

  • 有时,我们需要付出更多努力来寻找漏洞。在很多情况下,我发现人们还试图购买目标提供的高级服务(我不会这样做),以便看到普通帐户无法看到的东西。就我而言,我试图花费大约 3.99 美元只是为了允许我创建另一个帐户(因为我需要另一个电话号码)。

在某些情况下,Alhamdulillah,它给出了一个很好的结果(他们发现了一个错误,就像我发现的那样),但在其他情况下,它也没有给出任何好的结果。

是的,正如我在上一篇文章(关于“从侦察到优化 RCE 结果”)中所说的那样,我们无法保证购买优质服务(直接或间接)就能获得良好的结果。但这就是测试/狩猎的意义所在,对吧?这不是“设计脆弱”的竞争,如果我们没有测试过,我们就无法确定。

如果你问我的建议,我更愿意先尝试在目标上找到漏洞以获得赏金。当我从该目标获得赏金时,我会用一小部分赏金购买高级服务(直接或间接),只要价格对我来说合理。当时 3.99 美元是合理的。

但如果您可以免费获得优质服务(例如,程序所有者提供给您的),那就太好了。

  • 当第一次更改不起作用时(就像我刚刚更改“isAdm”参数的值时一样),请尝试寻找可能使我们有能力使其起作用的其他参数。
  • 始终确保我们所做的更改是否真的有效。简单的方法是尝试使用我们修改后的帐户在另一个浏览器上登录,然后尝试更改一些只能由管理员更改的设置/配置。如果有效,则权限提升已成功执行。
  • 始终用详细的 PoC 视频记录您的活动(可以从这些视频中截取屏幕截图)。这将非常有助于分类人员/程序所有者重现问题。在其他情况下,当您尝试在测试的版本中重现时,它还有助于证明错误是否存在。一位 Bugcrowd 分析师对此给出了很好的建议:

“… 做一个视频 poc,或者截取屏幕截图来证明漏洞存在/曾经存在。当你把事实摆到桌面上时,程序所有者和分析师都无法否认这一点。” — Timmy —摘自他的一条公开推文

因此,不要忘记始终保留拦截器活动(日志)作为成功利用的证据(至少在做出决定之前——即:奖励)。并确保拦截器的时间与 PoC 视频中显示的时间相同。InshaAllah,当您遇到问题时,Bugcrowd 团队“将帮助您将事实摆在桌面上”。

  • 如果读者想知道我的 PoC 视频怎么样,好吧,我的 PoC 视频就像是这份报告的摘要。我一步一步地记录在笔记上,(希望)可以更容易地重现这个问题。

从 3.99 美元到 1,650 美元(第一部分)——通过更改 HTTP 响应实现简单的垂直特权提升

图 6 我的 PoC 视频截图

是的,这样做很累。但相信我,InshaAllah,这可以节省我们稍后解释错误细节的时间。

好了,我这篇简单的文章终于结束了。下次再见,InshaAllah。

公众号:安全狗的自我修养

bilibili:haidragonx

原文始发于微信公众号(安全狗的自我修养):从 3.99 美元到 1,650 美元(第一部分)——通过更改 HTTP 响应实现简单的垂直特权提升

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2025年4月10日13:55:56
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   从 3.99 美元到 1,650 美元(第一部分)——通过更改 HTTP 响应实现简单的垂直特权提升https://cn-sec.com/archives/3939408.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息