通过模拟功能进行权限提升功能

admin 2024年12月20日10:01:38评论8 views字数 2115阅读7分3秒阅读模式

我将与您分享我在 Bugcrowd 的一个程序中发现的一个有趣的错误。它位于具有 “impersonating user” 功能的程序中。

什么是模拟?

模拟允许管理员在不知道其他用户的凭据的情况下 “以 ” 其他用户的身份登录。此功能在管理员需要调试问题、查看用户权限或解决投诉的平台中很常见,管理员使用模拟来:

  1. 排查用户报告的问题。
  2. 验证特定于用户的配置。
  3. 从用户的角度调试平台行为。

例如,如果用户报告他无法访问其文件,则管理员可能会模拟该用户来测试上传功能并调查问题。解决后,管理员将结束模拟会话并恢复其管理员帐户。

通过模拟功能进行权限提升功能

模拟在我们的目标上的工作原理

现在让我们谈谈目标系统 — example.com。该平台提供了一项功能来模拟用户,以帮助他们解决问题。以下是它的工作原理:

1.管理员模拟用户:

  • 管理员导航到 “Users” 部分并选择他们想要模拟的用户。
  • 单击 Impersonate(模拟)后,应用程序将为管理员创建一个新会话以充当用户。

2. 会话管理:

  • 模拟时,管理员的原始会话将暂停。
  • 模拟会话已创建并绑定到被模拟的用户。

3. 停止冒充:

  • 当管理员单击 Stop Impersonating(停止模拟)时,他们将返回到其原始会话。

当我调查“活动会话”功能(它是不同终端节点的一部分)时,我发现该页面显示了与登录用户关联的所有活动会话,包括在模拟期间创建的会话。它显示如下内容:

通过模拟功能进行权限提升功能

我决定撤销除当前会话之外的所有会话(对于清理不必要的会话很重要)。现在,唯一活跃的会话是我的会话。

通过模拟功能进行权限提升功能

现在,当管理员冒充我的帐户时,我们会发现一些有趣的东西:

通过模拟功能进行权限提升功能

是 当管理员模拟我的帐户时,它会显示在 Active Sessions (活动会话) 部分中,其会话 ID 以两种方式显示:

选项 1:通过检查页面 HTML 源中的“撤销”按钮(在浏览器的开发人员工具中使用 F12)。会话 ID 在请求负载中公开。它看起来像这样:

<buttonid="revoke-session-1234" class="revoke-button" data-session-id="abcd1234efgh5678ijklmnop">Revoke</button>

选项 2:通过在单击 “Revoke” 按钮后拦截 HTTP 请求,如下所示:

POST /users/sessions/revoke HTTP/1.1
Host: example.com
Content-Type: application/json
Authorization: Bearer <access_token>
{
"session_id":"abcd1234efgh5678ijklmnop"
}

我从拦截的请求中复制了会话 ID 并将其删除。现在,我已将临时会话 ID 分配给模拟我的帐户的管理员。

为了控制,我:

打开 F12,转到 Cookie 部分,并将会话 ID 替换为管理员的会话 ID :

通过模拟功能进行权限提升功能

或者,我可以在控制台中手动设置它:

document.cookie ="_session_id=SESSION_ID";

然后刷新页面。

此时,我以管理员身份登录,冒充我的帐户。

发生了什么事?

该漏洞利用起作用的原因是临时会话仍然处于活动状态,并且管理员仍在模拟它。从本质上讲,我跳转到了管理员使用的临时会话,而不是管理员的原始会话。

当管理员请求模拟用户时,应用程序首先检查用户是否为管理员。如果是,则会为模拟创建一个临时会话 ID。当管理员停止模拟时,应用程序会检查会话 ID 并恢复管理员的原始会话。

通过模拟功能进行权限提升功能

这是关键部分

进入管理员的帐户后,我点击了“停止冒充”,结束了冒充会话并恢复了管理员的原始会话。但是,由于系统只检查了临时会话 ID 值

我能够以管理员身份保持登录状态,从而有效地提升了我的权限。

利用此漏洞的步骤:

  1. 以普通用户(攻击者)身份登录平台
  2. 撤销 “Active Sessions” 选项卡中的所有会话,攻击者的会话除外
  3. 管理员登录
    并模拟攻击者的帐户。
  4. 模拟后,管理员会收到与模拟用户(攻击者)关联的临时会话 ID
  5. 攻击者检查页面 HTML 源中的“撤销”按钮,或拦截请求并从请求中复制会话 ID。
  6. 攻击者打开 Developer Console (F12),转到 Cookie 部分,清除其现有的会话 Cookie,并将其替换为管理员的会话 ID。然后,他们刷新页面。
  7. 现在,攻击者以 admin 身份登录。攻击者现在可以单击“停止模拟”按钮,管理员通常会单击该按钮。
  8. 由于攻击者的会话现在正在使用模拟的会话 ID,因此单击“停止模拟”会将其返回到管理员的原始会话

最后,该公司承认该问题严重性较高,并获得了 1250 美元的报酬

通过模拟功能进行权限提升功能

感谢阅读!

其它相关课程

通过模拟功能进行权限提升功能
通过模拟功能进行权限提升功能
通过模拟功能进行权限提升功能
通过模拟功能进行权限提升功能

详细目录

QT开发底层原理与安全逆向视频教程

通过模拟功能进行权限提升功能
  • 通过模拟功能进行权限提升功能
  • 通过模拟功能进行权限提升功能

linux文件系统存储与文件过滤安全开发视频教程(2024最新)

通过模拟功能进行权限提升功能

linux高级usb安全开发与源码分析视频教程

通过模拟功能进行权限提升功能

linux程序设计与安全开发

通过模拟功能进行权限提升功能
  • windows恶意软件开发与对抗视频教程

  • 通过模拟功能进行权限提升功能
  • 通过模拟功能进行权限提升功能
  • windows

  • 通过模拟功能进行权限提升功能
  • windows()

  • 通过模拟功能进行权限提升功能
  • USB()

  • 通过模拟功能进行权限提升功能
  • ()

  • 通过模拟功能进行权限提升功能
  • ios

  • 通过模拟功能进行权限提升功能
  • windbg

  • 通过模拟功能进行权限提升功能
  • ()

  • 通过模拟功能进行权限提升功能通过模拟功能进行权限提升功能通过模拟功能进行权限提升功能

  • 通过模拟功能进行权限提升功能

rust语言全栈开发视频教程

通过模拟功能进行权限提升功能
  • 通过模拟功能进行权限提升功能
  • 通过模拟功能进行权限提升功能

原文始发于微信公众号(安全狗的自我修养):通过模拟功能进行权限提升功能

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年12月20日10:01:38
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   通过模拟功能进行权限提升功能https://cn-sec.com/archives/3526920.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息