【逃离计划】Swagger API 信息泄露漏洞

admin 2023年10月17日11:33:58评论105 views字数 2231阅读7分26秒阅读模式

Swagger未授权访问

Swagger是一个规范和完整的框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务。总体目标是使客户端和文件系统作为服务器以同样的速度来更新。相关的方法,参数和模型紧密集成到服务器端的代码,允许API来始终保持同步。Swagger-UI会根据开发人员在代码中的设置来自动生成API说明文档,若存在相关的配置缺陷,攻击者可以未授权翻查Swagger接口文档,得到系统功能API接口的详细参数,再构造参数发包,通过回显获取系统大量的敏感信息。

漏洞成因

Swagger未开启页面访问限制,Swagger未开启严格的Authorize认证。

漏洞危害

直接构造参数发包,通过回显可以得到大量的用户信息,包含了手机号,邮箱等。

漏洞验证

/api/api-docs/api-docs/swagger.json/api.html/api/api-docs/api/apidocs/api/doc/api/swagger/api/swagger-ui/api/swagger-ui.html/api/swagger-ui.html//api/swagger-ui.json/api/swagger.json/api/swagger//api/swagger/ui/api/swagger/ui//api/swaggerui/api/swaggerui//api/v1//api/v1/api-docs/api/v1/apidocs/api/v1/swagger/api/v1/swagger-ui/api/v1/swagger-ui.html/api/v1/swagger-ui.json/api/v1/swagger.json/api/v1/swagger//api/v2/api/v2/api-docs/api/v2/apidocs/api/v2/swagger/api/v2/swagger-ui/api/v2/swagger-ui.html/api/v2/swagger-ui.json/api/v2/swagger.json/api/v2/swagger//api/v3/apidocs/apidocs/swagger.json/doc.html/docs//druid/index.html/graphql/libs/swaggerui/libs/swaggerui//spring-security-oauth-resource/swagger-ui.html/spring-security-rest/api/swagger-ui.html/sw/swagger-ui.html/swagger/swagger-resources/swagger-resources/configuration/security/swagger-resources/configuration/security//swagger-resources/configuration/ui/swagger-resources/configuration/ui//swagger-ui/swagger-ui.html/swagger-ui.html#/api-memory-controller/swagger-ui.html//swagger-ui.json/swagger-ui/swagger.json/swagger.json/swagger.yml/swagger//swagger/index.html/swagger/static/index.html/swagger/swagger-ui.html/swagger/ui//Swagger/ui/index/swagger/ui/index/swagger/v1/swagger.json/swagger/v2/swagger.json/template/swagger-ui.html/user/swagger-ui.html/user/swagger-ui.html//v1.x/swagger-ui.html/v1/api-docs/v1/swagger.json/v2/api-docs/v3/api-docs

解决办法

  • 在生产节点禁用Swagger2,在maven中禁用所有关于Swagger包

  • 结合SpringSecurity/shiro进行认证授权,将Swagger-UI的URLs加入到各自的认证和授权过滤链中,当用户访问Swagger对应的资源时,只有通过认证授权的用户才能进行访问。

swagger:  config:    # 开启身份认证功能    login: true    username: admin    password: admin
  1. 结合nginx/Filter对对应的接口端点进行访问控制。
    enable = false 关闭

public Docket createRestApi() {        return new Docket(DocumentationType.SWAGGER_2)                .apiInfo(apiInfo()).enable(false)                .select()                //为当前包路径                .apis(RequestHandlerSelectors.any())                .paths(PathSelectors.any())                .build();    }

原文始发于微信公众号(Devil安全):【逃离计划】Swagger API 信息泄露漏洞

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年10月17日11:33:58
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   【逃离计划】Swagger API 信息泄露漏洞https://cn-sec.com/archives/2120063.html

发表评论

匿名网友 填写信息