本文所涉及漏洞均为互联网上已公开漏洞,仅用于合法合规用途,严禁用于违法违规用途。
通达OA(OfficeAnywhere网络智能办公系统)是由北京通达信科科技有限公司自主研发的协同办公自动化软件,是与中国企业管理实践相结合形成的综合管理办公平台。通达OA11.9存在命令执行漏洞,攻击者可以通过命令执行漏洞并获取服务器权限,导致服务器失陷。
webroot\general\appbuilder\modules\portal\controllers\GatewayController.php#actionGetdata
首先这里判断是否存在id参数
在确定存有id参数值后,判断传入的module的值后依次执行GetData与toUTF8方法
首先跟进GetData方法,根据id值进行查询
数据库中内容如下
接下来判断查询出的$source变量的值,对$data赋值后将值返回
当查询出的 $source 不为 custom_link 时 调用modules\portal\components\AppDesignComponents #data_analysis 这里会根据传入的$model值调用不同类的get_data方法,所以在这种情况下$model值必须为已有的类名
随意跟进一个get_data方法,这里也会根据 $source 值进行匹配,所以传入的id值在数据库中必须有对应的 $source 值
data值仅有 activeTab 是用户传进来的,其余都是根据id值在数据库中查询出来的
$data = array("page_total" => "", "total_nums" => "", "curnum" => "", "pagelimit" => "", "open_mode" => $open_mode, "activeTab" => $activeTab, "data_sources" => $source, "data" => $url);
将data经过GBK转UTF-8后,传入eval进行代码执行
转码时候就与sql注入时接触到的宽字节注入一样,输入%df%27时首先经过上面提到的单引号转义变成了%df%5c%27(%5c是反斜杠\),然后%df%5c正好属于gbk的汉字编码范围,经过iconv转换到utf-8编码转换后变成了汉字,从而吞掉了反斜杠使得单引号逃脱出来,下面就是一个简单的示例
http://192.168.31.70:8088/general/appbuilder/web/portal/gateway/getdata?activeTab=%df%27,1%3D%3Eeval($_POST[c]));/*&id=19&module=Carouselimage;/*&id=19&module=Carouselimage)
经过上述的分析过程,三个参数的值均不唯一,给出的复现链接仅供参考
1 篇文章
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!