未授权访问漏洞的利用链
字数 1088 2025-08-22 12:23:06

未授权访问漏洞利用链实战教学文档

一、前置背景

本案例针对一个PRS系统进行授权渗透测试,系统表面看似无内容,但通过精细信息收集和漏洞链利用最终获取系统权限。

二、渗透测试流程详解

1. 初始信息收集

1.1 基础访问

  • 访问系统跳转至登录页面
  • 尝试常规弱口令(admin:123456)失败
  • 注册功能返回空页面,初步判断可能为假页面

1.2 目录爆破

  • 使用工具进行目录扫描未获有效结果

1.3 JS文件分析

  • 发现JS文件泄露API接口路径
  • 拼接泄露路径访问接口,如:/productBase.do?method=delete&id=
  • 通过错误信息识别Struts框架

框架识别技巧

返回堆栈分析:
- org.apache.struts.action 开头 → Struts1
- org.apache.struts2.interceptor/xwork 等关键词 → Struts2

注:本案例实际为Struts1,不支持OGNL表达式注入

2. 接口FUZZ与构造

2.1 接口测试

  • 测试接口:/productBase.do?method=delete&id=
  • 构造类似接口:/user.do?method=deleteUser&id=
  • 响应分析:
    • 初始返回"删除失败"
    • 后续请求返回所有账户信息

2.2 账户信息收集

  • 从响应中提取所有账户
  • 生成用户名字典

3. 密码爆破

  • 使用常用密码字典进行爆破
  • 成功获取2个有效账户凭证

4. 权限提升

4.1 水平/垂直越权

  • 使用findsomething插件发现敏感接口:
    /user.do?method=UpdatePassword&id=
    /user.do?method=deleteUser&id=
    /user.do?method=goListIndex&current=
    /user.do?method=goSearch&searchtext=
    
  • 测试/user.do?method=UpdatePassword&id=1成功重置管理员密码
  • 通过猜测id=1为管理员账户实现权限提升

5. 获取系统权限

5.1 文件上传测试

  • 发现KindEditor编辑器(版本≤4.1.10)
  • 尝试已知漏洞利用(参考:kindeditor<=4.1.10上传漏洞)
  • 其他上传点测试:
    • 上传文件返回200状态但无明确响应
    • 需结合研发确认上传结果和文件位置

三、关键技术点总结

  1. JS文件分析:前端资源常泄露敏感接口信息
  2. 框架识别:通过错误堆栈准确判断技术栈版本
  3. 接口构造:基于已知接口模式推测其他功能接口
  4. 权限提升:ID参数枚举和功能接口滥用
  5. 漏洞链利用:信息收集→接口发现→账户获取→权限提升→系统控制

四、防御建议

  1. 前端资源最小化,移除敏感信息
  2. 实施严格的接口权限控制
  3. 密码策略强化,防范爆破攻击
  4. 关键操作(如密码修改)增加二次验证
  5. 及时更新老旧框架和组件
  6. 文件上传功能实施严格过滤和响应反馈

五、渗透测试方法论

本案例展示了渗透测试的核心思路:

  1. 不放过任何细节(如JS文件分析)
  2. 从失败响应中提取有用信息
  3. 基于已知信息进行合理推测
  4. 保持耐心,多角度尝试突破点
  5. 漏洞链思维,将小问题串联成大威胁
未授权访问漏洞利用链实战教学文档 一、前置背景 本案例针对一个PRS系统进行授权渗透测试,系统表面看似无内容,但通过精细信息收集和漏洞链利用最终获取系统权限。 二、渗透测试流程详解 1. 初始信息收集 1.1 基础访问 访问系统跳转至登录页面 尝试常规弱口令(admin:123456)失败 注册功能返回空页面,初步判断可能为假页面 1.2 目录爆破 使用工具进行目录扫描未获有效结果 1.3 JS文件分析 发现JS文件泄露API接口路径 拼接泄露路径访问接口,如: /productBase.do?method=delete&id= 通过错误信息识别Struts框架 框架识别技巧 : 注:本案例实际为Struts1,不支持OGNL表达式注入 2. 接口FUZZ与构造 2.1 接口测试 测试接口: /productBase.do?method=delete&id= 构造类似接口: /user.do?method=deleteUser&id= 响应分析: 初始返回"删除失败" 后续请求返回所有账户信息 2.2 账户信息收集 从响应中提取所有账户 生成用户名字典 3. 密码爆破 使用常用密码字典进行爆破 成功获取2个有效账户凭证 4. 权限提升 4.1 水平/垂直越权 使用findsomething插件发现敏感接口: 测试 /user.do?method=UpdatePassword&id=1 成功重置管理员密码 通过猜测id=1为管理员账户实现权限提升 5. 获取系统权限 5.1 文件上传测试 发现KindEditor编辑器(版本≤4.1.10) 尝试已知漏洞利用(参考:kindeditor <=4.1.10上传漏洞) 其他上传点测试: 上传文件返回200状态但无明确响应 需结合研发确认上传结果和文件位置 三、关键技术点总结 JS文件分析 :前端资源常泄露敏感接口信息 框架识别 :通过错误堆栈准确判断技术栈版本 接口构造 :基于已知接口模式推测其他功能接口 权限提升 :ID参数枚举和功能接口滥用 漏洞链利用 :信息收集→接口发现→账户获取→权限提升→系统控制 四、防御建议 前端资源最小化,移除敏感信息 实施严格的接口权限控制 密码策略强化,防范爆破攻击 关键操作(如密码修改)增加二次验证 及时更新老旧框架和组件 文件上传功能实施严格过滤和响应反馈 五、渗透测试方法论 本案例展示了渗透测试的核心思路: 不放过任何细节(如JS文件分析) 从失败响应中提取有用信息 基于已知信息进行合理推测 保持耐心,多角度尝试突破点 漏洞链思维,将小问题串联成大威胁