在针对目标网站的渗透测试过程中,常规的SQL注入、XSS、SSRF及业务逻辑测试未能取得突破后,注册一个普通用户账号继续进行深入测试。

登录后台后,在浏览功能时发现一个显眼的 /api 路径。结合前期信息搜集得知该网站基于 Java技术栈 开发,因此推测其可能集成了 Swagger 接口文档框架。

随即对网站进行抓包,针对常见 Swagger 路径进行 Fuzz 测试,测试字典如下:
/swagger/
/api/swagger/
/swagger/ui/
/api/swagger/ui/
/swagger-ui.html
/api/swagger-ui.html
/user/swagger-ui.html
/swagger/ui/
/api/swagger/ui/
/libs/swaggerui
/api/swaggerui
/swagger-resources/configuration/ui
/swagger-resources/configuration/security
/v3/api/
/v2/api/
/v1/api/
/v1/api-docs/
/v2/api-docs/
/v3/api-docs/
测试发现 /v2/api-docs/ 路径可访问,导致全部API接口文档泄露。此类信息泄露本身即可提交为漏洞,但通常评级较低。考虑到存在未授权访问,往往能发现更深层次的利用点。

此处推荐一款 Burp Suite 插件 APIKit,当遇到接口数量庞大时,它能自动识别参数并构造请求包,便于快速测试未授权或需要认证的接口,极大提升 渗透测试 效率。需要注意的是,该插件默认在根目录下拼接接口路径,使用时需根据实际环境调整。项目地址:https://github.com/API-Security/APIKit
其操作流程为:在插件界面左上角选择测试模式(如未授权或带Cookie),插件会自动编辑并发送构造好的请求包,无需手动构造,非常便捷。

接下来,对所有泄露的接口进行逐一审计,发现其中存在大量未授权访问接口。其中,applications/templates/forms 接口疑似文件上传功能。尝试上传 JSP 木马时被拦截,随即对允许的后缀名进行 Fuzz 测试。

然而,允许的后缀(如 .txt, .docx 等)危害有限。尝试绕过 WAF 上传 JSP 文件虽成功,但接口未返回文件存储路径,导致无法进一步利用,遂转向其他接口测试。
随后,发现一个发送验证码的接口 applications/send/email 存在两处逻辑缺陷。首先,该接口根据邮箱参数返回不同的信息,通过差异可判断邮箱是否已注册,从而存在 用户枚举漏洞。

其次,该接口会对请求的邮箱地址发送验证码,即使该邮箱未注册。攻击者可通过构造大量不存在的邮箱地址进行请求,从而导致 邮箱轰炸 攻击。


综上,本次测试提交了Swagger接口未授权访问导致的API信息泄露、用户枚举及邮箱轰炸逻辑漏洞,最终获得中危评级与奖励。

|