漏洞作者: 索马里的海贼
ajax.php行75
[php]
case 'uploadCloud':
$folder_id = (int)gpc('folder_id','P',0);
$folder_id = $folder_id ? $folder_id : -1;
$data = trim(gpc('data','P',''));
…………省略部分代码…………
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])); //base64_decode 无视防御
$file[file_id] = (int)$file[file_id]; //file_id 检查了
$file[file_size] = (int)$file[file_size]; //file_size检查了
$file[file_extension] = $db->escape(trim($file[file_extension])); //file_extension检查了
$file[file_name] = $db->escape(trim($file[file_name])); //file_name检查了
…………省略部分代码…………
//这里的$file[file_description]没过滤!
$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'),";
…………省略部分代码…………
//进查询了
$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 ;");
[/php]
漏洞证明:
1、先注册一个账号 然后去“我的网盘”新建一个文件夹 记住这个folder_id
2、生成payload
3、提交请求folder_id=刚才记住的id&data=刚才生成的payload
4、查看网盘中的文件就能看到注入结果了
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论