记一次安服仔薅洞实战(lucky)
字数 1487 2025-08-09 18:44:09
记一次安服仔薅薅洞实战(Lucky) 技术解析与教学
前言
本文基于奇安信攻防社区《记一次安服仔薅薅洞实战(Lucky)》的技术分享,将详细解析其中涉及的安全测试技术和方法,帮助安全服务人员提升实战能力。
1. 信息收集阶段
1.1 目标识别
- 确定目标系统为某企业Web应用
- 初步判断系统架构:Java Web应用(基于URL特征)
1.2 资产发现
- 使用子域名爆破工具(如subfinder、amass)发现相关资产
- 端口扫描(nmap/masscan)识别开放服务
- 重点关注:80/443端口Web服务,8080/8443管理端口
1.3 指纹识别
- 使用Wappalyzer/WhatWeb识别Web框架和组件
- 识别出Spring Boot框架特征
- 发现存在Swagger UI接口文档
2. 漏洞探测阶段
2.1 API接口分析
- 通过Swagger UI发现多个API端点
- 重点关注:
/api/user/login用户登录接口/api/user/info用户信息查询接口/api/admin/**管理员接口
2.2 认证绕过测试
- 发现JWT认证机制
- 测试JWT篡改可能性:
- 修改算法为"none"
- 密钥爆破测试
- 签名移除测试
- 发现系统未验证JWT签名,可构造任意token
2.3 水平越权测试
- 通过修改用户ID参数访问其他用户信息
- 构造请求:
GET /api/user/info?id=2 HTTP/1.1
Authorization: Bearer [任意构造的JWT]
- 成功获取其他用户敏感信息
2.4 垂直越权测试
- 尝试访问管理员接口:
GET /api/admin/users HTTP/1.1
Authorization: Bearer [构造的admin权限JWT]
- 成功获取所有用户列表
3. 漏洞利用阶段
3.1 数据泄露利用
- 通过越权接口获取:
- 用户手机号、邮箱等PII信息
- 系统内部配置信息
- 数据库连接信息(部分系统配置中泄露)
3.2 权限提升
- 发现数据库连接信息后:
- 尝试外连数据库
- 使用默认/弱密码成功连接
- 直接修改用户权限字段
3.3 持久化访问
- 创建高权限后门账户
- 上传Webshell(发现存在文件上传功能)
- 建立SSH隧道(发现服务器SSH端口开放)
4. 漏洞修复建议
4.1 JWT安全加固
- 强制验证JWT签名
- 使用强密钥(HS256/RS256)
- 设置合理的token过期时间
- 实现token黑名单机制
4.2 权限控制优化
- 实现严格的RBAC模型
- 服务端校验用户权限
- 接口级别访问控制
- 敏感操作二次认证
4.3 数据保护措施
- 敏感信息脱敏
- 最小化数据返回原则
- 实施数据访问日志审计
4.4 其他安全建议
- 关闭调试接口(如Swagger UI)
- 加强数据库访问控制
- 定期安全审计和渗透测试
5. 经验总结
- 信息收集是关键:全面的资产发现往往能暴露更多攻击面
- 不要忽视API安全:现代Web应用API往往是安全薄弱点
- 认证机制要完整:JWT等机制配置不当会导致严重漏洞
- 最小权限原则:所有接口都应实施严格的权限控制
- 纵深防御:单一防线被突破后应有其他防护措施
6. 工具推荐
-
信息收集:
- Subfinder
- Amass
- Nmap
-
API测试:
- Postman
- Burp Suite
- Swagger UI
-
JWT测试:
- jwt_tool
- Burp JWT插件
-
漏洞利用:
- SQLMap
- Metasploit
- Webshell管理工具
7. 学习资源
- OWASP API Security Top 10
- JWT官方安全规范(RFC 7519)
- Spring Security最佳实践
- 奇安信攻防社区其他相关案例
通过本案例的学习,安全服务人员可以掌握从信息收集到漏洞利用的完整流程,特别关注API安全和认证机制方面的测试方法,提升在实际工作中的漏洞发现能力。