YTray 与 Memfit 协同使用指南:多账号越权测试

· 2026-09-24 17:14 · 0 阅读

原创 Yak 2026-09-24 17:14 四川

YTray、Yakit、Memfit 和浏览器插件该怎么一起用?

测试业务系统的权限边界时,往往需要同时保留两个账号的登录状态。测试人员既要确认页面当前属于哪个账号,又要检查请求携带的认证信息,还可能需要让 AI 继续操作已经登录的页面。浏览器环境、HTTP 请求和 AI 任务因此出现在同一项工作中,也带来了一个具体问题:YTray、Yakit、Memfit 和浏览器插件,分别应该在什么时候使用?

本文以 Vulinbox 本地靶场的双账号权限测试为例,先说明各组件的职责,再完成浏览器准备、账号登录和引擎配对,最后通过 Memfit 发起测试并查看风险记录。整条流程围绕四个动作展开:用 YTray 保留测试身份,用插件接入浏览器,用 Memfit 组织任务,再结合执行记录检查测试结论。 Yakit 在本例中用于启动靶场,也可以用于进一步查看和重放 HTTP 请求。

一、组件分工:浏览器环境、测试工作台与执行引擎

上述场景包含两类工作:保持账号及页面状态,以及围绕这些状态开展验证。YTray 和浏览器插件负责准备与接入测试环境,Yakit 和 Memfit 提供不同的工作入口。明确这层分工后,就能根据任务选择工具,并判断连接应该建立在哪两个组件之间。

YAK

1.1 YTray与浏览器插件:管理实例,接入页面

YTray 是浏览器实例管理工具。 它调用本机的 Chrome、Chromium、Edge 或 Chrome for Testing 等浏览器运行时,为新实例配置独立用户数据目录、启动参数、代理和本地插件。测试人员可以让实例 A、B 分别登录不同账号,并通过实例标识管理、停止和恢复这些环境。实际打开网页、执行 JavaScript 和维护登录态的,仍然是所选浏览器。

Yakit Browser Agent 是运行在浏览器中的扩展。 YTray 负责分发和加载插件,插件提供 Cookie、User\-Agent(UA)和代理等本地工具,并通过 Bridge(插件与引擎之间的能力调用通道)连接 Yak 引擎。连接后,引擎可以调用插件提供的能力,读取页面上下文、操作页面元素、获取网络记录,或请求人工接管浏览器。测试人员已经完成登录的页面,由此可以成为 AI 任务的操作对象。

只需要同时登录两个账号时,可以直接使用 YTray 创建两个实例。使用插件中的本地工具,也不要求先启用 AI。需要从 Yakit 或 Memfit 调用浏览器时,再完成插件与 Yak 引擎之间的配对和连接。

YAK

1.2 Yakit与Memfit:按任务选择工作入口

Yakit是交互式安全测试工作台。

MITM(Man\-in\-the\-Middle,中间人代理)用于观察和处理经过代理的浏览器通信,Web Fuzzer 用于编辑、重放请求并比较响应,HTTP History 用于回看请求记录。测试人员可以从正常业务请求出发,保持认证信息不变,只修改资源标识,验证服务端是否正确检查数据归属。Yakit 同时提供 AI Agent 入口,支持手工测试与 AI 任务衔接。

Memfit是以 AI Agent任务为主要入口的工作台。

用户在其中描述目标、引用浏览器实例,查看执行过程和工具返回,并按当前审查模式处理需要人工决定的操作。浏览器提供已登录的页面环境,Yak 引擎提供工具执行与调度能力,模型参与任务理解和步骤选择。因此,开始任务前需要分别确认引擎连接、模型配置和浏览器状态。

Yakit 和 Memfit 都通过 Yak引擎 执行相应能力,可以按下表选择工作入口。使用 Memfit 操作浏览器,并不要求同时启动 Yakit 客户端;本例打开 Yakit,是为了使用其靶场管理功能。若两个客户端需要访问同一组浏览器,应确认它们连接的引擎与插件配对的引擎一致。

当前要完成的工作

使用组合

主要操作位置

两个账号同时登录,人工比较页面

YTray+浏览器

YTray 创建实例,在各自窗口中登录

抓取、修改和重放 HTTP 请求

YTray+Yakit(连接 Yak 引擎)

Yakit MITM、Web Fuzzer;浏览器配置对应代理

让 AI 操作已经登录的页面

YTray+浏览器插件+Memfit(连接 Yak 引擎)

插件配对,在 AI 工作台引用实例并提交任务

浏览器能力调用和代理抓包是两条不同路径:前者让工作台读取、操作页面,后者让业务流量经过 MITM。下文先采用直连方式完成浏览器接入,不需要预先配置 MITM 代理。

二、首次使用:准备双账号环境,完成浏览器配对

明确组件分工后,接下来按“创建实例—登录账号—配对引擎”的顺序准备环境。

本例使用 YTray 0\.2\.6,并通过 Yakit 启动本地 Vulinbox 靶场。完成本章后,应能在 Memfit 的浏览器实例面板中看到 A、B 两个在线实例,并确认各自对应的登录账号。

YAK

2.1 用YTray创建两个独立浏览器实例

同一浏览器用户目录中的普通窗口,通常共享对应站点的 Cookie 和持久化存储,因此仅多开一个窗口不能可靠地分离测试身份。YTray 为不同实例指定不同的--user-data-dir,使Cookie、LocalStorage、缓存及扩展状态分别存放。这里的隔离针对浏览器数据,并不意味着每个实例拥有独立的操作系统或网络出口。

首先进入“浏览器运行时”,确认已经识别到可用浏览器。可以选择本机已有的 Chrome,也可以安装指定版本的 Chrome for Testing(CfT)。随后在“插件管理”中确认 Yakit Browser Agent 的“默认加载”已经开启,建议同时开启“固定工具栏”,便于在新实例中找到插件。

接下来进入“快速配置”,点击“无代理启动”,使用当前默认配置创建独立实例。浏览器打开后,检查工具栏中是否出现 Yakit Browser Agent 图标。再次点击“无代理启动”,即可创建一个独立实例。

当启动多个独立实例后,多个实例可以通过字母角标和窗口颜色区分。本例中,橙色窗口对应 A,蓝色窗口对应 B,插件图标也显示相应角标。

YAK

2.2 启动Vulinbox,分别注册并登录测试账号

打开 Yakit,点击“靶场”进入 Vulinbox 管理器,按界面提示完成安装并启动。靶场启动后,可以在日志中确认访问地址;本例为 http://127.0.0.1:8787。端口以当前运行结果为准,浏览器中填写的是靶场地址,而不是 Yak 引擎的连接地址。

在 A、B 两个测试浏览器中分别打开登录页:

http://127\.0\.0\.1:8787/logic/user/login

点击“注册”,在 A 中注册 testA,在 B 中注册 testB。注册完成后,分别返回登录页,使用各自账号登录,并确认资料页中的用户名与实例对应。注册成功不等于已经登录,后续测试需要使用两个已经建立的登录会话。

若停止实例后还要继续使用原来的登录环境,应从 YTray 的“运行与历史”恢复原实例。重新创建实例会使用新的用户目录,不能自动继承原实例的登录态。恢复能够保留浏览器侧的数据,但网站会话已经失效时,仍然需要重新登录。

YAK

2.3 配对Yak引擎,在工作台确认实例在线

浏览器已经运行,并不表示 Memfit 已经能够调用它。需要由浏览器插件与 Yak 引擎建立配对,并在 Memfit 中批准该请求。以下以 Memfit 为例;使用 Yakit 时,可从“实验功能”中的 AI Agent 入口完成同类操作。

第一步:打开连接入口。 在 Memfit 中确认引擎连接正常,进入 AI Agent 页面并展开“浏览器实例”面板。在目标浏览器中,打开页面侧边工具的“Agent”页,点击“管理 Agent 连接”,进入“Yak 引擎连接”设置页。也可以从插件工具栏入口进入配对设置。

第二步:发起配对。 在连接设置页点击“查找本机 Yakit”,插件会显示本次配对验证码并等待批准。该按钮连接的是 Yak 引擎;使用 Memfit 时,同样可以在 Memfit 中处理配对请求。确认码过期后,需要重新发起配对。

第三步:批准并确认在线。 回到 Memfit,在等待审批的浏览器卡片上核对实例信息和两端确认码,点击“批准”。对另一个实例重复上述操作,直到 A、B 都出现在“使用中”列表。此时可以核对卡片中的页面地址,确认接入的是本次测试使用的浏览器。

至此,双账号环境已经具备登录态和Memfit连接。当前插件采用实例级页面访问机制,刷新、跳转和新标签页会自动跟随,无需逐页重复授权。接下来需要把这两个实例明确加入测试任务,让 Agent 使用预期的账号环境。

三、使用 Memfit 执行双账号权限测试

前一章准备了两个可调用的浏览器实例,本章从资料访问入手,检查 testA 和 testB 之间是否存在越权。验证的关键是保持请求者的认证身份不变,观察其能否读取或修改另一用户的数据。本次演示还报告了注册接口的提权问题,下面分别说明任务发起方式与结果解读。

YAK

3.1 引用浏览器实例,提交测试任务

提交任务前,先确认两个浏览器都已登录,并记录正常访问自己的资料时显示的用户名和 ID。本例中,A 登录 testA,资料 ID 为 27;B 登录 testB,资料 ID 为 28,两者角色均为 user。这些信息构成后续交叉访问的对照基线;重新部署靶场后,ID 应以实际页面为准。

在 Memfit 的“浏览器实例”面板中,分别点击 A、B 卡片上的纸飞机图标,将两个实例引用到输入框。看到 A、B 引用标签后,再输入测试目标并提交任务。引用用于指定 Agent 应使用的浏览器。

截图中使用的提示词较简短:

两个浏览器分别登录了TestA和TestB账号帮我检查是否存在越权

这条提示词结合两个实例引用,提供了测试对象和任务目标。截图中的任务采用“托管 YOLO”模式;其他审查模式可能需要在执行过程中确认工具调用。复现时,还可以进一步说明允许测试的接口、是否允许修改资料以及需要保留的证据,使任务范围更加明确。

YAK

3.2 查看执行结果,核对风险记录

提交后,可以在任务记录中查看工具调用及返回结果。本次演示中,Memfit 报告了三类问题:资料接口的水平越权读取、资料更新接口的水平越权修改,以及注册接口接受 role 字段引发的提权。其中,水平越权读取的核心对照是:保留 testB 的会话访问 id=27 时返回 testA 的资料,反向访问也报告了相同问题。

判断资料读取是否越权,需要同时检查请求身份、目标 ID 和响应中的用户信息,不能只依据 HTTP 200。对于资料修改,还应核对修改前后的字段及恢复情况;对于注册接口提权,则需要确认提交的角色字段是否实际改变了账号权限。这三类问题的验证对象不同,应分别保留相应的请求和响应。

任务输出后,可以在“漏洞与风险”中看到本次写入的三条 Risk 记录,分别对应上述问题。风险记录便于归档和后续复测,原始工具结果与 HTTP 流量则用于核对结论。需要逐条复现时,可以进一步在 Yakit 中检查和重放关键请求。

本例展示了从双账号登录环境、浏览器引用到测试结果入库的过程。测试人员先准备账号并明确任务,Memfit 再调用工具执行验证、整理结果;最终仍应把风险描述与实际访问行为对应起来。

四、工作流程:从浏览器引用到页面执行

前面的操作可以归纳为一条调用链:工作台接收任务,Yak 引擎确定目标实例并调度能力,浏览器插件在相应页面中执行操作,再将结果返回。下图回顾这条链路,也说明了浏览器环境、引擎连接和任务引用分别承担的作用。

YTray 通过独立用户目录保持测试身份,插件把已有环境接入 Yak 引擎,实例引用则告诉任务具体使用哪一个浏览器。配对完成后,Agent 可以继续使用人工准备好的登录态。页面刷新或元素变化时,仍需重新获取当前页面上下文,确保后续操作对应有效的页面对象。

这条调用链与 MITM 代理路径相互独立。插件在线,说明引擎具备调用该浏览器的条件;只有实际配置了代理,业务请求才会按相应规则进入 MITM。掌握这一区别后,就可以在本例的浏览器操作流程上加入 Yakit 请求复核,逐步扩展到更复杂的权限验证与页面交互场景。

END

  • Memfit:是万径安全旗下Yaklang团队研发的面向长程渗透测试、漏洞挖掘、应急响应等全链路攻防任务的生产级安全领域Agent系统

  • Yakit:是万径安全旗下Yaklang 团队开源的一款完全国产的交互式安全测试平台

YAK官方资源

Yakit官网下载地址:
https://yaklang.com/

Github地址:
https://github.com/yaklang/yakit

Yakit 视频教程:
https://space.bilibili.com/437503777

Memfit下载地址:
https://memfit.ai/

IRify下载地址:
https://ssa.to/

YTray下载地址:
https://yaklang.io/ytray/

跳转微信打开