从spring未授权到任意用户密码获取
字数 1161 2025-08-12 11:34:11

Spring框架未授权访问漏洞利用与用户密码获取实战教学

漏洞背景

Spring框架在Web应用中广泛使用,但由于配置不当可能导致未授权访问漏洞,攻击者可以利用这些漏洞获取敏感信息,包括用户凭证。

漏洞发现流程

1. 信息收集阶段

  • 观察错误页面:访问网站时注意错误页面特征,识别Spring框架特有的错误信息
  • 使用浏览器插件:通过插件识别网站使用的技术栈,确认Spring框架使用情况
  • 经验判断:内网项目中Spring未授权访问漏洞出现概率较高

2. 路径爆破

  1. 初始尝试

    • 使用常见路径字典进行爆破(如祖传字典)
    • 初始爆破失败表明API可能需要特定前缀路径
  2. 路径分析

    • 观察用户跳转页面,发现/common/api/user/login路径
    • 使用Spring常见未授权路径字典爆破/common{/}路径

3. 敏感信息获取

  • heapdump分析(虽然本例未使用):

    • 下载heapdump文件
    • 搜索AKSK、password等敏感字段
    • 本例中因服务器未上云,无AKSK信息
  • mappings端点利用

    • 访问/mappings端点查看所有URL映射
    • 从下往上仔细检查每个URL,寻找可疑端点

漏洞利用过程

关键接口发现

发现敏感接口路径://common//public/xxx/userInfo/12138

请求构造

GET //common//public/xxx/userInfo/12138 HTTP/1.1
Host: xxx.xxx.com
referer: 123
Connection: close

关键点

  • 服务端校验Referer字段存在性但不校验值
  • 这种设计通常是为了防止扫描器自动扫描
  • 接口直接返回了用户密码(MD5加密形式)

密码破解

  1. 识别加密方式为MD5
  2. 使用MD5解密网站尝试破解
    • 注意:部分解密网站需要付费
  3. 批量利用:
    • 通过修改userID参数批量获取其他用户密码
    • userInfo/{userid}形式

防御建议

  1. 权限控制

    • 严格配置Spring Security权限
    • 避免敏感接口未授权访问
  2. Referer校验

    • 如需使用Referer校验,应验证其合法性而非仅检查存在性
  3. 敏感信息保护

    • 避免在接口中直接返回密码明文或可逆加密形式
    • 使用不可逆的强哈希算法(如bcrypt)
  4. 端点管理

    • 生产环境关闭/mappings等调试端点
    • 禁用或保护swagger-ui等API文档界面

经验总结

  1. API发现技巧

    • mappings端点是发现隐藏API的有效途径
    • swagger-ui是理想的信息来源(虽然本例未发现)
  2. 参数构造

    • 注意观察服务端校验逻辑(如本例中Referer的校验方式)
    • 尝试各种路径变形(如//path//形式)
  3. 加密分析

    • 熟悉常见加密方式特征(如MD5的32位十六进制形式)
    • 准备多个解密渠道应对付费限制

本教学详细展示了从Spring未授权访问到获取用户密码的完整攻击链,强调了配置安全的重要性及常见防护措施。

Spring框架未授权访问漏洞利用与用户密码获取实战教学 漏洞背景 Spring框架在Web应用中广泛使用,但由于配置不当可能导致未授权访问漏洞,攻击者可以利用这些漏洞获取敏感信息,包括用户凭证。 漏洞发现流程 1. 信息收集阶段 观察错误页面 :访问网站时注意错误页面特征,识别Spring框架特有的错误信息 使用浏览器插件 :通过插件识别网站使用的技术栈,确认Spring框架使用情况 经验判断 :内网项目中Spring未授权访问漏洞出现概率较高 2. 路径爆破 初始尝试 : 使用常见路径字典进行爆破(如祖传字典) 初始爆破失败表明API可能需要特定前缀路径 路径分析 : 观察用户跳转页面,发现 /common/api/user/login 路径 使用Spring常见未授权路径字典爆破 /common{/} 路径 3. 敏感信息获取 heapdump分析 (虽然本例未使用): 下载heapdump文件 搜索AKSK、password等敏感字段 本例中因服务器未上云,无AKSK信息 mappings端点利用 : 访问 /mappings 端点查看所有URL映射 从下往上仔细检查每个URL,寻找可疑端点 漏洞利用过程 关键接口发现 发现敏感接口路径: //common//public/xxx/userInfo/12138 请求构造 关键点 : 服务端校验Referer字段存在性但不校验值 这种设计通常是为了防止扫描器自动扫描 接口直接返回了用户密码(MD5加密形式) 密码破解 识别加密方式为MD5 使用MD5解密网站尝试破解 注意:部分解密网站需要付费 批量利用: 通过修改userID参数批量获取其他用户密码 如 userInfo/{userid} 形式 防御建议 权限控制 : 严格配置Spring Security权限 避免敏感接口未授权访问 Referer校验 : 如需使用Referer校验,应验证其合法性而非仅检查存在性 敏感信息保护 : 避免在接口中直接返回密码明文或可逆加密形式 使用不可逆的强哈希算法(如bcrypt) 端点管理 : 生产环境关闭/mappings等调试端点 禁用或保护swagger-ui等API文档界面 经验总结 API发现技巧 : mappings端点是发现隐藏API的有效途径 swagger-ui是理想的信息来源(虽然本例未发现) 参数构造 : 注意观察服务端校验逻辑(如本例中Referer的校验方式) 尝试各种路径变形(如 //path// 形式) 加密分析 : 熟悉常见加密方式特征(如MD5的32位十六进制形式) 准备多个解密渠道应对付费限制 本教学详细展示了从Spring未授权访问到获取用户密码的完整攻击链,强调了配置安全的重要性及常见防护措施。