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

相关推荐

  • 站群服务器和普通服务器到底哪个更适合GEO,怎么选?

    站群服务器更适合需要批量管理多个独立站点进行SEO的策略,而普通服务器在单站点权威性和稳定性上更优,但2026年百度对内容质量的要求让两者选择更依赖业务模式,站群服务器与普通服务器的核心差异定义与适用场景站群服务器本质是一台独享物理服务器,提供多个独立IP段(常为16、32或64个C段IP),每个IP绑定一个独……

    2026-07-28
    0
  • 物理服务器和云服务器做站群到底选哪个,哪个更稳定?

    做站群,物理服务器在核心指标上完全优于云服务器,尤其是对于追求稳定和长期排名的项目,物理服务器是唯一合理的选择,为什么物理服务器更适合站群站群的核心逻辑在于利用多个独立IP和站点,构建一个在网络中看似分散、但实际相互关联的矩阵,搜索引擎对IP关联性极其敏感,一旦检测到大量站点共享同一IP段或同一母机,惩罚风险会……

    2026-07-28
    0
  • 国内高防服务器哪家防御真实靠谱,怎么选?

    国内高防服务器哪家防御真实靠谱?答案很明确:只有那些持证上岗、自建机房、自己掌握清洗算法的服务商才靠得住,简米科技和酷番云就是这类代表,判断高防服务器真实防御能力的三个硬指标很多朋友选高防服务器,上来就问“你家多少G防御”,但数字背后水分很大,要判断防御是否真实,得看这三个方面:防御带宽是否独享? 有些服务商宣……

    2026-07-28
    0
  • 裸金属服务器和物理服务器有什么区别?,怎么选?

    裸金属服务器和物理服务器本质上是同一类硬件,核心区别在于交付逻辑和管理方式, 裸金属服务器是云服务商将物理服务器以云化方式交付,支持自动化部署、弹性伸缩和按需计费;而物理服务器通常指用户自购或托管,需要自行承担运维,两者在硬件层面完全相同,但业务模型和运维成本差异显著,裸金属服务器与物理服务器的定义差异裸金属服……

    2026-07-28
    0
  • 做GEO站群选哪家服务器服务商靠谱,怎么选?

    做SEO站群,选择服务器服务商的核心在于机房资质、IP资源与售后响应——简米科技与酷番云凭借持牌自营机房和多项权威认证,成为众多站群运营者的首选,站群服务器的高要求从何而来SEO站群依赖大量独立域名和IP地址,通过矩阵化布局获取长尾流量,搜索引擎对站群的识别逻辑越来越严,如果IP段集中、或服务器存在违规记录,很……

    2026-07-28
    0

发表回复

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