一次攻防演练从未授权访问到getshell过程
字数 1716 2025-08-30 06:50:27
微厦在线学习考试系统渗透测试分析报告
1. 系统概述
微厦在线学习考试系统是一个基于.NET开发的在线学习平台,项目地址为:https://github.com/weishakeji/LearningSystem。该系统存在多个安全漏洞,包括前台任意用户登录、未授权访问、任意用户伪造和任意文件上传等严重漏洞。
2. 信息搜集阶段
2.1 系统识别
通过目标主页信息搜集发现授权文件,确认系统为《微厦在线学习考试系统》。CNVD查询显示该系统存在多个历史漏洞,但由于系统较为冷门,公开的POC较少。
3. 漏洞分析与利用
3.1 前台任意用户登录漏洞
漏洞位置:短信登录功能
漏洞分析:
- 系统前端存在验证码校验过程
- 短信登录校验逻辑存在缺陷:
- 前端校验验证码
- 使用MD5(手机号+6位验证码)生成的结果与短信验证码响应包的result值比对
利用方法:
- 抓取验证码响应包获取result值(即密文)
- 编写爆破脚本尝试所有可能的6位验证码组合
- 当MD5(手机号+验证码) == result时,即找到正确验证码
影响:可控制接近1万条用户账号
3.2 未授权访问漏洞
漏洞位置:多个接口存在未授权访问
关键接口:获取岗位员工信息的接口
漏洞详情:
- 接口未进行权限验证
- 通过遍历岗位ID可获取所有员工信息,包括:
- 密码密文(Acc_Pw)
- 后端权限校验用的随机值(Acc_CheckUID)
系统权限级别:
- Super - 超级管理员
- Admin - 管理员
- 普通用户
3.3 任意用户伪造漏洞
漏洞原理:结合未授权访问获取的Acc_CheckUID和Acc_Pw生成逻辑伪造用户身份
认证字段:Authorization
管理员认证字段生成逻辑:
- 登录成功后查询账号信息
- 生成随机UID(CheckUID)存入数据库
- 调用
_generate_checkcode方法生成Acc_Pw
Acc_Pw生成细节:
- 校验码格式:
keyname,id,name,datetime,CheckUID- 对于super账号示例:
emp,1,admin,2026-04-18 03:50:28,c4ca4238a0b923820dcc509a6f75849b
- 对于super账号示例:
- 使用DES-CBC模式加密
- 密钥:Web.Config中的
secretkey(默认rmYk0h3F) - 向量:
0x12,0x34,0x56,0x78,0x90,0xab,0xcd,0xef
- 密钥:Web.Config中的
普通用户认证字段差异:
- 不同接口
- 不同密钥
- 不同前缀
- 格式有所差别
利用步骤:
- 通过未授权接口获取CheckUID
- 按照格式构造校验码
- 使用DES-CBC加密生成Acc_Pw
- 构造Authorization请求头
3.4 任意文件上传漏洞
漏洞接口:/api/v2/Upload/Chunked
漏洞详情:
- 用于大文件分块传输的接口
- 未进行充分的安全过滤
- 结合管理员权限可上传任意文件
利用方法:
- 构造上传数据包
- 分块传输恶意文件
- 上传WebShell获取服务器权限
4. 漏洞利用链
完整利用流程:
- 通过短信登录漏洞获取普通用户权限
- 利用未授权访问接口获取管理员信息(包括CheckUID)
- 分析认证机制伪造管理员身份
- 使用管理员权限访问文件上传接口
- 上传WebShell获取服务器控制权
5. 修复建议
-
短信登录漏洞:
- 移除前端验证码校验
- 服务端严格校验验证码
- 增加验证码尝试次数限制
-
未授权访问:
- 对所有接口实施权限验证
- 实施最小权限原则
-
认证机制:
- 使用标准认证方案如JWT
- 避免可预测的认证令牌
- 加强密钥管理
-
文件上传:
- 实施严格的文件类型检查
- 限制上传目录的执行权限
- 对上传文件重命名
- 实施内容检查
-
其他建议:
- 定期安全审计
- 及时更新依赖组件
- 实施Web应用防火墙
6. 总结
本报告详细分析了微厦在线学习考试系统的多个安全漏洞及其利用方法。这些漏洞组合利用可导致系统完全沦陷,建议用户及时采取修复措施。渗透测试过程中,系统审计、接口分析和加密机制逆向是关键环节,本案例展示了如何通过系统分析发现并利用复杂漏洞链。