spring boot未授权访问及Swagger漏洞处理

无需修改源码,处理spring boot未授权访问及Swagger漏洞处理

漏洞说明

spring boot未授权访问

风险程度:【高危】
漏洞概述
未授权访问可以理解为需要安全配置或权限认证的地址、授权页面存在缺陷,导致其他用户可以直接访问,从而引发重要权限可被操作、数据库、网站目录等敏感信息泄露。登陆验证一般的方式都是将用户在登录口输入的账号密码拿去与数据库中的记录做验证,并且要求输入的账号密码要等于数据库中某条记录的账号密码,验证通过则程序就会给用户一个session,然后进入后台,否则就返回到登陆口。然而攻击者可以找到一些缺乏权限验证的URL,直接绕过登录执行数据库查询,构成未授权访问。
漏洞危害
攻击者可绕过登录验证非法访问资源,如后台功能、敏感文件等。
整改建议
建议增加漏洞页面(接口)的访问认证,防止未授权访问直接浏览访问或调用。
涉及的请求地址包括但不限于:

  1. [http://ip:port/env/]
  2. http://ip:port/mappings
  3. http://ip:port/dump/

Swagger接口文档泄露

风险程度:【高危】
漏洞概述
Swagger生成的[API文档],是直接暴露在相关web路径下的。所有人均可以访问查看。通过这一点即可获取项目上所有的接口信息。那么结合实际业务,例如如果有文件读取相关的接口,可能存在任意文件下载,相关的业务访问可能存在未授权访问等。
漏洞危害
业务敏感信息泄露后可能会对用户带来危害,系统敏感信息泄露可能会协助攻击者提供更多的攻击途径和方法。
整改建议
结合SpringSecurity/shiro进行认证授权,将Swagger-UI的URL加入到各自的认证和授权过滤链中,当用户访问Swagger对应的资源时,只有通过认证授权的用户才能进行访问。
涉及的请求地址包括但不限于:

  1. [http://ip:port/swagger-ui.html#/cag45controller]
  2. http://ip:port/v2/api-docs

漏洞处理

spring boot未授权访问

官方给的整改建议,涉及修改代码,不方便实施。若涉及到的请求地址非必须,则可以通过修改配置文件进行处理:

# 若原来的配置如下,则表明访问时不需要认证,可直接访问,此时删除此配置即可。
management.security.enabled=false

上述方案亲测有效。

从网上查找,有如下方案(此方案未亲测),增加配置:

management.endpoints.web.exposure.exclude=env,heapdump,threaddump,mappings

或者是(未亲测),增加配置:

# 完全禁用actuator
management.server.port=-1

Swagger接口文档泄露

官方给的建议或网上其他帖子给的方案,都涉及修改代码,在生产环境下,一旦涉及代码修改,动作过大,又要重新测试、发布,太麻烦。
我采用的方案是通过nginx配置,过滤掉漏洞涉及的url,禁止方案,nginx中增加如下配置,亲测有效:

server { 
    listen       8081; 
    server_name  127.0.0.1; 
		if ($request_uri ~* "/swagger-ui") {
			return 403;
		}
		if ($request_uri ~* "/api-docs") {
			return 403;
		}
    location / {
        proxy_pass  http://127.0.0.1:8080;
    }
}

注意,上述server_name,要换成自己系统的域名或服务器ip地址;listen和location重定向的ip、端口信息,要结合自己的实际情况修改。

  • 3
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
Swagger授权访问漏洞可以通过以下方法修复,并确保正常访问Swagger文档: 1. 禁用Swagger UI的默认URL路径:可以通过更改Swagger UI的URL路径来防止授权访问。可以将Swagger UI的URL路径更改为一个不容易被猜测到的路径,例如将默认路径`/swagger-ui.html`更改为`/random-path/swagger-ui.html`。 2. 添加访问控制:可以通过在应用程序中添加访问控制来修复授权访问漏洞。可以使用身份验证和授权机制来限制对Swagger UI的访问。例如,可以要求用户进行身份验证并授予访问Swagger UI的权限。 3. 使用安全代理或反向代理:可以使用安全代理或反向代理来保护Swagger UI免受授权访问安全代理可以拦截对Swagger UI的请求,并根据特定的访问规则进行验证和授权。 4. 配置Swagger文档的访问权限:可以通过配置Swagger文档的访问权限来修复授权访问漏洞。可以将Swagger文档的访问权限设置为仅限于授权用户或特定IP地址。 5. 更新Swagger版本:如果发现Swagger存在已知的安全漏洞,可以尝试升级到最新版本的Swagger框架,以修复这些漏洞。 请注意,以上方法仅提供了一些常见的修复授权访问漏洞的方法,具体的修复方法可能因项目的具体情况而有所不同。在实施任何修复方法之前,请确保对项目的影响进行充分评估,并遵循最佳实践和安全建议。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值