Mock在渗透测试中的通与变

Mock 简述

Mock 这个词在软件测试行业较为常用。Mock方法是单元测试中常见的一种技术, 它的主要作用是模拟一些在应用中不容易构造或者比较复杂的对象,例如模拟某个接口在特殊情况下的返回值。亦或者前/后端测试团队用于检验数据返回和展示数据是否满足期望值。

目前有很多开源或者商业Mock平台,例如阿里妈妈前端团队出品的RAP就是一款出色的接口文档管理和MOCK平台。

RAP通过GUI工具帮助WEB工程师更高效的管理接口文档,同时通过分析接口结构自动生成Mock数据、校验真实接口的正确性,使接口文档成为开发流程中的强依赖。有了结构化的API数据,RAP可以做的更多,而我们可以避免更多重复劳动。

需要 Mock的场景

在渗透测试过程中,经常会遇到权限控制,无法访问到某个角色下的功能菜单。 因此本文会从两个角度来说明MOCK是如何起作用的,并一起讨论如何通过MOCK挖掘到更多的漏洞。首先要说明一下为什么渗透测试中也需要MOCK,一方面是为了绕过前端的限制,例如前端的timeout设置,抓包改包手动来不及,另一方面是为了方便接口“造数据”——也就是有些接口的一些参数规则手动构造麻烦,在MOCK了前一个请求返回值后,下一个请求才会自动拼接好参数请求,这样就省去了自己看js 代码构造的麻烦。 俗话说“工欲善其事,必先利其器”,那就看看有哪些工具可以辅助我们测试。

Mock 工具

笔者分别在Proxyman和Burpsuite 这两款抓包工具使用了MOCK功能/插件。在Proxyman 中,它是在Tools-Map Local (本地)和Tools-Map Remote (远程)。以Map Local 为例,我们可以选中感兴趣的接口右键添加到Map Local/Remote。

然后编辑期望的返回类型和返回值,同时可以设置匹配的路径,匹配的请求方法等。

下面演示了某系统前端根据result 的value 是否为true 来判断是否可进入到登录后的index页面,否则会提示用户名和密码错误。如果通过手动改包的话,会提示超时或者请求错误,前端无法跳转到登录后的页面。这个时候就可以通过MOCK将result的值修改为true ,这样就进入到系统从而进一步进行测试,挖掘功能模块是否存在未授权访问等漏洞了。

还有些系统的权限资源是根据接口返回的资源路径来做展示的,例如会请求https://testivy.local/resource/list,根据返回报文中的ifBinding来确定当前登录用户是否具有该对应菜单的权限,因此就可以MOCK这个ifBinding 全为true 就可以了访问所有功能菜单了。

在BurpSuite中同样也有MOCK插件,在插件市场安装HTTP MOCK

同样在HTTP history 右键选中Mock HTTP response

然后编写期望的MOCK值,最后要点击save 生效。(确认Enabled 那栏是否选中)。

下面举个例子

可注册的低权限账号/商家审核中的账号

在测试过程中,当核心系统或者面向C端用户的系统被撸了个遍的时候,通常是很难找到漏洞的,即使能找到也多是一些重复的或者内部已知的。因此柿子就要找软的捏,哪种柿子好捏,一种是面向商家的系统,但这种系统的特点也很明显,要么就是可以注册但是必须提交各类证件,例如法人身份zheng,营业执照等后台人员审核通过后才能使用商家系统的功能;要么就是商务合作之后分配的账号,没有注册入口。首先我们来说可以注册但需要审核的商家账号吧。

首先来看下提交资质文件审核的一般流程:

通常这类商家资质材料需要营业执照、法人身份zheng、法人姓名、门头照、开户行等,能够正确准备这些材料并且顺利通过审核还是难的。尤其对于我们想快速测试下接口漏洞来说,时间就是金钱。因此通过MOCK 可以快速测试审核通过后有哪些功能模块以及相应接口是否存在可挖掘的漏洞。

比如某系统需要提交一些资质信息进行审核,审核通过才具有商家功能。

(图片中的数据为示例数据)

由于这个系统是人工进行审核的,而且提交过几次都是被打回来了,审核不通过。这个时候想到用MOCK下。

首先打开首页的时候是有一个接口请求当前商家状态的,是未提交、审核中还是审核通过状态。 发现查询审核状态接口:/**/company/detail/v2 这个时候可以把这个接口进行MOCK,在proxyman 中对应的是Map。将状态改成6(审核中是1,待审核是0),可以通过js (在js 搜“待审核”,找到对应的代码行位置,然后就能轻松找到“已审核”对应的状态码了—状态码是6)

(图片中的数据为示例数据)

由于商家通过审核,前端一般会展示出对应的功能,如果后续还有新的接口校验商家状态的,也一样进行MOCK。这样就方便了针对接口的参数构造,省去了一行行看代码的烦恼,而你只需要做的就是点点,获取完整请求参数后再进行工具扫描。 通过上面的MOCK过程,就可以顺利进入到合同页面:

接下来,我们可以找到对应模块的功能点开始“大刀阔斧”了。这里可能很多人会有疑问,有很多工具可以从js 提取接口,这样多麻烦。这在前面的文章《现代前后端分离式应用API渗透测试探究》已经讨论过。

接下来再看下另外一种场景。

无法注册的后台账号/内部员工账号

针对这类系统,由于没有注册入口,通常都是管理员或者内部员工才能登录。这个地方MOCK 的难度在于不知道应该如何找对参数。一些简单的系统根据Response 中的resultCode 是true 还是false 决定是否跳转到后台页面,但有些系统相对来说是有些复杂的,这个时候就要看一看js了,需要花费一点时间。

以上内容如有错误之处,还请大家不吝指出。

总结

MOCK可以辅助我们安全测试,正所谓”通则变,变则通“,安全亦如此。

文章来源网络,作者:运维,如若转载,请注明出处:https://shuyeidc.com/wp/149760.html<

(0)
运维的头像运维
上一篇2025-03-12 18:37
下一篇 2025-03-12 18:38

相关推荐

  • 个人主题怎么制作?

    制作个人主题是一个将个人风格、兴趣或专业领域转化为视觉化或结构化内容的过程,无论是用于个人博客、作品集、社交媒体账号还是品牌形象,核心都是围绕“个人特色”展开,以下从定位、内容规划、视觉设计、技术实现四个维度,详细拆解制作个人主题的完整流程,明确主题定位:找到个人特色的核心主题定位是所有工作的起点,需要先回答……

    2025-11-20
    0
  • 社群营销管理关键是什么?

    社群营销的核心在于通过建立有温度、有价值、有归属感的社群,实现用户留存、转化和品牌传播,其管理需贯穿“目标定位-内容运营-用户互动-数据驱动-风险控制”全流程,以下从五个维度展开详细说明:明确社群定位与目标社群管理的首要任务是精准定位,需明确社群的核心价值(如行业交流、产品使用指导、兴趣分享等)、目标用户画像……

    2025-11-20
    0
  • 香港公司网站备案需要什么材料?

    香港公司进行网站备案是一个涉及多部门协调、流程相对严谨的过程,尤其需兼顾中国内地与香港两地的监管要求,由于香港公司注册地与中国内地不同,其网站若主要服务内地用户或使用内地服务器,需根据服务器位置、网站内容性质等,选择对应的备案路径(如工信部ICP备案或公安备案),以下从备案主体资格、流程步骤、材料准备、注意事项……

    2025-11-20
    0
  • 如何企业上云推广

    企业上云已成为数字化转型的核心战略,但推广过程中需结合行业特性、企业痛点与市场需求,构建系统性、多维度的推广体系,以下从市场定位、策略设计、执行落地及效果优化四个维度,详细拆解企业上云推广的实践路径,精准定位:明确目标企业与核心价值企业上云并非“一刀切”的方案,需先锁定目标客户群体,提炼差异化价值主张,客户分层……

    2025-11-20
    0
  • PS设计搜索框的实用技巧有哪些?

    在PS中设计一个美观且功能性的搜索框需要结合创意构思、视觉设计和用户体验考量,以下从设计思路、制作步骤、细节优化及交互预览等方面详细说明,帮助打造符合需求的搜索框,设计前的规划明确使用场景:根据网站或APP的整体风格确定搜索框的调性,例如极简风适合细线条和纯色,科技感适合渐变和发光效果,电商类则可能需要突出搜索……

    2025-11-20
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注