未授权访问漏洞的利用链
字数 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¤t= /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状态但无明确响应
- 需结合研发确认上传结果和文件位置
三、关键技术点总结
- JS文件分析:前端资源常泄露敏感接口信息
- 框架识别:通过错误堆栈准确判断技术栈版本
- 接口构造:基于已知接口模式推测其他功能接口
- 权限提升:ID参数枚举和功能接口滥用
- 漏洞链利用:信息收集→接口发现→账户获取→权限提升→系统控制
四、防御建议
- 前端资源最小化,移除敏感信息
- 实施严格的接口权限控制
- 密码策略强化,防范爆破攻击
- 关键操作(如密码修改)增加二次验证
- 及时更新老旧框架和组件
- 文件上传功能实施严格过滤和响应反馈
五、渗透测试方法论
本案例展示了渗透测试的核心思路:
- 不放过任何细节(如JS文件分析)
- 从失败响应中提取有用信息
- 基于已知信息进行合理推测
- 保持耐心,多角度尝试突破点
- 漏洞链思维,将小问题串联成大威胁