漏洞说明
信呼OA是一款免费开源的办公OA系统,包括APP,pc上客户端,REIM即时通信,服务端等。
信呼OA在2.3.3版本之前存在代码注入漏洞。该漏洞影响到组件配置文件处理程序的webmainConfig.php文件的代码。篡改导致代码注入。
补丁对比情况如下
漏洞复现
漏洞分析
重要文件分析
config.php
信呼oa初始化的时候会调用index.php,其内部包含config.php文件,作用如下
(1)定义了初始化需要的一些常量
(2)包含了chajian.php,rockFun.php,rockClass.php,主要是从数据包中提取参数和定义程序运行需要的一些函数信息
index.php
(1)包含config.php
(2)获取m,d,a,ajaxbool
(3)包含View.php
View.php
此文件比较重要和路由相关
m可以用|分隔,分隔的时候取m[0]为action php。分别判断m[0]Action.php,m[1]Action.php是否存在,存在都会进行文件包含
m:模版文件内容 拼接路径为wen主目录路径+d+mAction.php
d:webmain下面的action的前置路径,这里如果当m存在|的时候,会将|的后面部分拼接到d后面
a:Class action里面对应的方法调用
ajaxbool 如果为true,则会调用$aAjax的方法,如果为false,直接调用$aAction方法。如果$ajaxbool == 'html' || $ajaxbool == 'false' 则会进行模版渲染。所以调用的方法是ACtion或者Ajax结尾
那么路由格式就解析出来了如会调用xinhuwebmainflowinputmode_bianjianAction.php下面的homedataAjax()方法。
http://10.211.55.8:8088/xinhu/index.php?a=homedata&m=mode_bianjian|input&d=flow&ajaxbool=true&rnd=9724&st1=2023-11-26&st2=2024-01-06
模版方法
m()
此方法会包含model下面的$nameModel.php
漏洞分析
(1)配置文件写入
cogAction.php文件中savecongAjax()方法存在文件写入,这里默认写入webmainConfig.php文件中。
这里的str写入在文件中为''内的内容,由于存在对'的处理,所以这里没办法逃逸出来。
观察$this->adminname.,发现此字段会从数据库中取admin的name,所以如果找到一处能修改的地方就能进行利用了。
(2)sql注入
reimplatAction.php中存在sql注入,由于我们需要修改管理员的用户名,所以要找adminmodel的地方进行尝试。这里有几处注入,最终我选择了$msgtype=='editmobile'
获取的数据需要解密,所以这里我们增加一个加密去获取加密后的数据
根据参数要求,构造如下包进行发送
查看数据库字段,发现已经做了改变
这时候因为修改的配置文件,重新登陆一次系统然后寻找一个包含配置文件的php就行了。
config.php是初始化会包含的,所以这么打了 index.php也会成为phpinfo(),访问就行
原文始发于微信公众号(e0m安全屋):信呼oa命令执行分析分析(CVE-2023-1773)
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论