前言
在针对校园系统的安全测试中,小程序往往是首要目标。也正因如此,众多安全研究人员都在挖掘此类目标,导致漏洞重复率非常高。如果想在这样的环境下有效积累成果,我们的思路就不能局限于小程序本身,还需要去寻找其配套的后台系统。通常来说,一个小程序存在漏洞,它的后台大概率也存在类似问题,因为它们往往出自同一开发商之手。寻找后台的常规方法,就是直接访问其相关域名。
此外,扩大攻击面是提升效率的关键。如果我们在某个小程序中发现漏洞,应该尝试寻找其“同类项”——即由同一开发商为不同学校开发的类似小程序。通常情况下,这些小程序的域名并非学校的官方域名,而是以企业名义进行备案。我们可以通过该企业的备案信息,顺藤摸瓜,找到它服务过的所有学校站点,从而实现批量化发现。下面通过一个实例来具体说明。

如图所示,在语法检索的 domain 字段填入目标小程序域名,可以从中获取其开发厂商的备案信息。随后,可以使用如下查询语法来扩展攻击面:
icp.name="开发商"
这样就能找到该厂商开发的所有系统,从中筛选出学校的站点即可。通过这种方式找到的站点,很多可能就是小程序的后台。我们还可以根据后台的名称,再去微信搜索对应的小程序,形成一个“小程序 -> 后台 -> 更多小程序”的闭环发现流程,从而在一定程度上实现批量通杀。
小程序前台SQL注入
在对多个小程序进行测试后,我发现一个名为xiasql的插件直接提示存在注入点,于是回过头来对其进行验证。

如上图所示,我直接使用了报错注入语句 extractvalue(1,concat(char(126),md5(1836161162))) 并成功触发数据库报错,回显了MD5值,确认存在SQL注入漏洞。
既然小程序前台存在注入,后台很可能也存在同类问题。于是按照前述方法找到了该小程序的后台,遗憾的是登录接口并未发现注入点,无法使用万能密码直接进入。
小程序后台漏洞打包
虽然没有找到万能密码,但我的运气不错,尝试使用默认凭证 admin / 123456 成功进入了后台。接下来的工作便是常规的渗透测试。进入后台后,我主要关注两点:
- 能否获取Webshell:通常通过文件上传、SQL注入写shell或利用框架历史漏洞实现。
- 能否创建低权限账号:如果能创建,则可以利用管理员与低权限账号的组合测试垂直越权,或利用两个低权限账号测试水平越权。这一点常被测试者忽略。
1. 水平与垂直越权
顺着上述思路,我成功创建了两个低权限账号。
- 垂直越权测试:使用低权限账号的会话凭证(如Cookie)去访问或重放仅限高权限管理员访问的接口请求。如果能够成功访问或操作,则证明存在垂直越权。
- 水平越权测试:使用账号A的标识(如ID)去访问或操作本应属于账号B的数据,若能成功,则存在水平越权。
在本次测试中,利用创建的低权限账号,成功发现了多处越权访问漏洞。
2. 文件上传GetShell
此外,在后台找到了一个文件上传功能点,该功能没有任何有效的过滤措施,成功上传了PHP Webshell并连接,获取了服务器权限。

3. 多个接口的SQL注入
和预想的一致,该小程序后台也存在多处SQL注入点,利用方式与前台的报错注入类似。
最终,我将发现的漏洞(包括多个SQL注入、越权、文件上传等)整理打包提交。由于部分漏洞类型重复,最终获得了较高的风险评级。


希望这次从信息收集到深入测试的完整过程记录,能为你的安全测试工作带来一些启发。如果你对这类实战技术分享感兴趣,欢迎来到云栈社区与更多同行交流探讨。
|