记录黑客技术中优秀的内容,传播黑客文化,分享黑客技术精华

winmail过滤不严getshell+任意文件下载(需要登录邮箱)

2016-06-27 13:15

winmail邮箱管理系统过滤不严,导致任意文件上传

需要以普通用户身份登录邮箱,登录以后有个网络磁盘功能,随意上传一个文件,选择文件上传!



上传url

http://xxx.xxx.xxx.xxx:6080/main.php?sessid=5772430e1cd708d2521d9a0dedadd904&act=netdisk&opt=html5upload&ftpfolder=Ly4uLy4uL3dlYm1haWwvd3d3Lw==&retid=0.8386508285207916



winmail_1.jpg





winmail_2.jpg





winmail_3.jpg





burpsuit拦截,看到其中有个ftpfolder参数,base64编码的解码后为/,通过修改ftpfolder参数为/../../webmail/www/再base64编码。/对应的原来的目录为 server/netstore/test(用户目录).



winmail_4.jpg





getshell成功!



同样的下载文件时修改filename参数跳转到data/adminuser.cfg 可下载管理员用户密码,密码md5加密!

/main.php?sessid=6ca89212aceb7b4b6997d3b1b4b9eaf0&act=netdisk&opt=download&ftpfolder=Lw%3D%3D&filename=cGhwaW5mby5waHA%3D&retid=33938934



winmail_5.jpg







对应的代码!

code 区域
case 'download':

$filename = base64_decode($filename);

$ftpfile = $ftpfolder;

if (substr($ftpfile, -1) != '/')

$ftpfile .= '/';

$ftpfile .= $filename;



header('Content-type: application/force-download');

header('Content-Disposition: attachment; filename="'.$filename.'"');



$localfile = $ftphandle->ftp_home_directory.$ftpfile;

//if(file_exists($localfile))

//die($localfile);

if (file_exists($localfile)) {

$length = filesize($localfile);



header('Accept-Ranges: bytes');

header('Content-Length: '.$length);



$fp = fopen($localfile, "rb");

if ($fp){

while(!feof($fp))

echo fread($fp, 655360);



fclose($fp);

}

}





都差不多不贴了!

漏洞证明:

用的客户蛮多的,等我找到一个个邮箱进去,或者前台getshell再证明!

修复方案:

过滤用户输入的参数!


知识来源: www.wooyun.org/bugs/wooyun-2016-0189060

阅读:413800 | 评论:0 | 标签:无

想收藏或者和大家分享这篇好文章→复制链接地址

“winmail过滤不严getshell+任意文件下载(需要登录邮箱)”共有0条留言

发表评论

姓名:

邮箱:

网址:

验证码:

ADS

标签云