### 0x01 框架概述
泛微e-office是泛微公司面向中小型组织推出的OA产品,简单易用高效,部署快、投资少。提供免费试用体验。至今已为超过一万家客户提供方便高效的办公体验.
官方主页: www.weaver.com.cn
主页截图如下。
![](https://images.seebug.org/contribute/f9742087-2d8b-40a0-a1dd-564b12e5358c-2015-12-30 16_19_19.jpg)
### 0x02 漏洞信息
先对系统进行解密。
/inc/priv_user_list/priv_xml.php 大概18行开始
```
$pararr = explodestpar( $_REQUEST['par'] );
$userpriv = $pararr['userpriv'];
...
if ( $pararr['view_type'] == 0 )
{
unset( $deptnameutf8 );
unset( $action );
unset( $src );
unset( $target );
unset( $icon );
$usql = "\r\n\t\t\tSELECT * FROM USER,USER_PRIV \r\n\t\t\t\tWHERE USER.USER_PRIV=".$userpriv." \r\n\t\t\t\tAND USER.USER_PRIV=USER_PRIV.USER_PRIV \r\n\t\t\t\tORDER BY PRIV_NO,USER_NAME\r\n\t\t\t";
$urs = exequery( $connection, $usql );
```
$pararr = explodestpar( $_REQUEST['par'] );获取到request后,调用explodestpar处理,将$pararr['userpriv']传入SQL语句。
看看explodestpar函数:
```
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解码后7788处理一堆,出来一个数组。
既然是base64解码后的,所以可以有任何字符。不过本来这个注入点也没有单引号限制,所以也是直接注入的。
案例:
加单引号1',报错
![](https://images.seebug.org/contribute/83af3576-2631-431d-a85e-bb88069a4796-2016-01-16 00_09_43.jpg)
爆出绝对路径
### 0x03 参考链接
http://www.wooyun.org/bugs/wooyun-2015-0105290/
暂无评论