Tag - 信息安全

信息安全 限制绕过    2017-01-05 23:36:52    26    0    0

背景

    原本是想寻找让mplayer播放youku视频的. 但是想了好多种方法. 都不知道如何让mplayer接管flash来播放视频. 最终在研究这个问题的过程中.发现了flvcd居然出现了,广告!!!, 虽然我能理解flvcd的做法.毕竟他们破解了人家视频网站的加密url, 让他们损失了不少的广告流量. 但是flvcd好歹提供一种更加友好(自动化)的广告播放方式吖. 你用flash是算什么

信息安全 代码审计    2017-01-05 11:42:10    157    0    0

漏洞描述

xiaocms后台文章发布存在缩略图上传. 该处并没有对文件类型进行校验. 导致可以上传任意文件, 直接getshell.

漏洞分析

通过xiaocms后台的文件上传URL可以得知URL是c=uploadfile&a=uploadify_upload&type=gif,jpg,jpeg,png

根据core/xiaocms.php中的parse_request()可以知道c参数是控制器,a参数是方法名, 可以定位到admin/contronller/uploadfile.php

而后根据a参数找到uploadify_upload方法定义的位置:

/** 
* uploadify_upload 
*/ 
public function uploadify_uploadAction() { 
     $type = $this->get('type'); 
     $size = (int)$this->get('size'); 
     if ($this->post('submit')) { 
     $data = $this->upload('file', explode(',', $type), $size); 
     if ($data['result']) echo $data['path']; 
     } 
} ​ 


可以看见实际的文件上传动作是由$this->upload完成的, 对$this->upload传入了三个参数, 一个字符串常量'file' , 一个$type参数从URL中获取的, 然后一个文件大小$size, 其中$type是我们可以控制的, 这里没有对$type做任何处理.

我们继续跟入$this->upload看看它的实现:

/** 
* 文件上传 
*/ 
private function upload($fields, $type, $size) { 
    $upload = xiaocms::load_class('upload'); 
    $ext = strtolower(substr(strrchr($_FILES[$fields]['name'], '.'), 1)); 
    if (in_array($ext, array('jpg','jpeg','bmp','png','gif'))) {