万户OA代码审计与0day挖掘
字数 2058
更新时间 2025-09-01 11:25:53

万户OA系统代码审计与漏洞挖掘技术文档

1. 系统概述

万户OA(又名万户ezOFFICE)是由北京万户网络技术有限公司开发的一套协同办公平台,广泛应用于政府、企事业单位。该系统特点包括:

  • 采用Struts框架+jsp混合架构
  • 支持多种操作系统(Windows/Linux/Unix)
  • 支持多种数据库(Oracle/SQL Server/MySQL等)
  • 指纹特征:"defaultroot/scripts/main/whir.util.js"

2. 鉴权机制分析与绕过

2.1 鉴权机制分析

系统核心安全过滤器为SetCharacterEncodingFilter,主要处理请求编码和鉴权验证。分析发现三种绕过方式:

2.1.1 第一种绕过方式

  • 原理:系统会检查请求路径是否包含/iWebOfficeSign/OfficeServer.jsp
  • 绕过方法:构造包含该路径的请求即可绕过鉴权

2.1.2 第二种绕过方式

  • 原理:路径包含/xfservices/GeneralWeb/services/ExchangeService时,会检查IP白名单
  • 绕过方法
    1. 伪造X-Forwarded-For头
    2. 构造路径如/xfservices/GeneralWeb../../admin/info

2.1.3 第三种绕过方式

  • 原理:系统对特定后缀和路由有特殊处理
  • 绕过方法
    1. 构造/admin.jsp;.js使后缀检测失效
    2. 构造/evo/weixin/../../admin.jsp利用白名单路由
    3. 添加参数whir_new_verifyCode=1

3. SQL注入漏洞

3.1 审计方法

  • 优先寻找非参数绑定的SQL语句拼接点
  • 搜索关键词:+||append
  • 注意自写JDBC连接查询

3.2 漏洞实例

3.2.1 第一处注入

  • 文件hospital/checkwork/checkwork_httprequest.jsp
  • 参数statDateuserId
  • 触发条件type == checkStatDate
  • 利用方式:结合鉴权绕过构造POC

3.2.2 第二处注入

  • 文件govoffice/gov_documentmanager/govdocumentmanager_judge.jsp
  • 参数numId
  • 特点:直接拼接SQL语句并执行

3.2.3 第三处注入

  • 文件DocumentSave.jsp
  • 参数RecordID
  • 执行方式:通过DbaObj.ExecuteQuery执行

4. 文件操作漏洞

4.1 文件读取/下载

4.1.1 第一处任意文件下载

  • 文件logset/down.jsp
  • 参数name
  • 原理:未对路径穿越进行检查
  • 影响:可读取WEB-INF/logs/目录下任意文件

4.1.2 第二处任意文件下载

  • 文件public/download_ftp/download.jsp
  • 参数pathfilename
  • 特点:两种下载模式,参数均部分可控

4.2 任意文件删除

  • 文件public/upload/uploadify/deleteFile.jsp
  • 参数filenamepath
  • 限制:需要附件上传权限
  • 绕过:检查了path但未检查filename的路径穿越

4.3 文件上传

  • 入口FileUploadAction.java中的saveFileFromInputStream方法
  • 路由/defaultroot/upload/fileUpload
  • 特点
    • 未校验文件后缀
    • 使用随机文件名但保留原后缀
  • 风险:可上传任意文件类型

5. 其他漏洞

5.1 SSRF漏洞

  • 文件platform/portal/portlet/rssproxy.jsp
  • 参数rssUrl
  • 限制:仅支持HTTP/HTTPS协议

5.2 XXE漏洞

  • 文件XMLParse.java中的extract方法
  • 调用链
    1. WXBizMsgCrypt.java中的DecryptMsg方法
    2. CallBackAction.java中的callback方法
  • 路由/WeiXin!callback.action
  • 特点:未禁用外部实体解析

6. 防御建议

  1. 鉴权机制

    • 实现统一的权限验证框架
    • 严格校验路径规范化
    • 加强会话管理
  2. SQL注入

    • 统一使用预编译语句
    • 禁用动态SQL拼接
    • 实施ORM框架规范
  3. 文件操作

    • 实施严格的路径校验
    • 限制文件操作权限
    • 实现文件操作白名单
  4. 其他

    • 禁用XML外部实体
    • 限制SSRF的目标地址
    • 实施文件上传类型检查

7. 总结

万户OA系统存在多处高危漏洞,主要由于:

  1. 鉴权机制设计缺陷
  2. 未严格实施安全编码规范
  3. 输入验证不足
  4. 危险函数使用不当

建议用户及时更新系统,或实施严格的安全防护措施。

相似文章
相似文章
 全屏