Magic WinMail Server漏洞

不久之前我经常去的一家音乐网站突然宣布无限期关闭,但保留对VIPs下载的权利.这个消息对于我这种狂热的音乐爱好者犹如晴天霹雳.但是没有办法,别人的站关不关是别人的事,而我如果想要得到这些音乐,只能操起许久不动的“邪恶”手段了.

一般来说在渗透一个网站之前,脑海中总要有一个大致的渗透思路,将以前对这个站了解的信息全部挖掘出来,分析有用的部分组合应用.我首先想到的是利用以前这个站点的BBS攻击,记得是Phpwind的,因为最近出了一些漏洞,可以很方便的得到WebShell.然后想到的是以前的一些遗留页面.但是这些想法都失败了,因为关站之后,除了首页上几个关站通知以外,好象没有别的信息了.似乎在脚本上攻击不太现实.

这个站没有可以利用的地方并不代表别的站点不存在漏洞,我的第二个思路则是旁注,但是等我仔细一查,发现这个IP上只绑定了一个顶级域名,其他的2级域名也无法通过nslookup列出,看来旁注的想法也告吹.一切看来都像走着背运.没有办法,有点想放弃了..脚本上不行,只能看看主机的安全性了.

如果要对主机进行探测的话,就需要手工的探测一些基本的开放端口,然后整理一个列表,这样可以更详细的了解主机的设置情况,比使用扫描器要方便多了.于是大约在3分钟之内,我探测出来一些开放的端口:21(FTP),80(IIS),3372(MSTDS),3389(Terminal Service),8080(Apache).

对于这些端口,总体来分析一下吧:

FTP上,我没有用户名与密码,采用的是Serv-U Ftp Server 6.0,如果有这个东西的密码的话,主机基本上就下来了.但是似乎得到密码很麻烦.

80端口上配备着IIS 5.0,但是除了端口和一个index.asp就没有任何有价值的东西了.从这里下手也很难.

从开放的3372端口来看,主机并没有做一些安全策略和TCP/IP筛选,或者没有装防火墙,因为凭经验,这个端口一般有安全意识的管理员是不会开放出来的.同时证明这台主机是Server系列版本的.

3389,这个谁都知道,是终端服务的默认端口.登入进去以后发现是Win2000 Advanced Server.

还有一个8080,从Telnet中得到的反馈结果来看,很有可能是Apache的WEB服务器.难说这上面有一些别的什么页面可以浏览的..于是我就打开这个IP的8080端口…居然返回一个Magic WinMail Server..

记得这个WinMail曾经在25端口有个helo的漏洞,但是那个是老漏洞,新版本应该可以避免了.于是省去了找Exploit的打算.不过为了证实,我还是写了一个段程序,发送了20000字节的数据包,服务器没有挂,说明漏洞已经修补掉了.

似乎走到这里没辙了.但是我想,既然来了,就这么走太没意思了吧.于是准备对这个Magic WinMail Server进行一翻测试.

从网上下载了一个Maigc WinMail,然后安装后进行了一番黑盒测试,结果全部失败.想想这个程序写的应该是不错的.但是它的WebMail是用PHP写成的,如果代码不严谨,PHP上就难免出漏洞.至少是明文的代码,可以轻松的找到漏洞.

简单的看了一下各个PHP中的脚本和函数,找到几个似乎可以利用的地方,但是由于一些限制,没有成功,但是很多地方写的的确不是很严谨.当我看到download.php的时候,突然发觉到了一段奇怪的代码。

代码如下:

<?    
$html_compress = "false";    
  
// load session management    
require("./inc/inc.php");    
// check for all parameters    
  
if( $part == "" || $folder == ""    
|| $ix == "")    
Header("Location: error.php?err=3&sid=$sid&tid=$tid&lid=$lid&retid=$retid\r\n");    
  
$mail_info = $sess["headers"][base64_encode($folder)][$ix];    
$localname = $mail_info["localname"];    
// check if the file exists, otherwise, do a error    
  
if($cache) {    
$fullfilename = $temporary_directory."_attachments\\".$sess["user"].’_’.md5(base64_decode($bound))."_".$filename;   
if (!file_exists($fullfilename))   
exit;   
 
clearstatcache();   
 
$fp = fopen($fullfilename,"rb");   
$email = fread($fp, filesize($fullfilename));   
fclose($fp);   
 
echo($email);   
 
exit;   
}   
else {   
 
if ($type == ‘nonmime’){   
$filename = base64_decode($filename);   
$filename = str_replace("\\","",$filename);   
$filename = str_replace("/","",$filename);   
$filename = str_replace("|","",$filename);   
$filename = str_replace("<","",$filename);   
$filename = str_replace(">","",$filename);   
$filename = str_replace(":","",$filename);   
$filename = str_replace("*","",$filename);   
$filename = str_replace("?","",$filename);   
$filename = str_replace("\"", "", $filename);    
  
$fullfilename = $temporary_directory."_attachments\\".$sess["user"].’_’.md5(base64_decode($bound))."_".$filename;   
 
if (file_exists($fullfilename)) {   
header("Content-Type: application/rfc822");   
header("Content-Disposition: attachment; filename=\"".$filename."\"");    
  
clearstatcache();    
  
$fp = fopen($fullfilename,"rb");    
$email = fread($fp, filesize($fullfilename));    
fclose($fp);    
  
echo($email);    
  
exit;    
}    
}    
  
// othe codz………………    
  
?>

其中存在问题的代码是这一段

if($cache) {    
$fullfilename = $temporary_directory."_attachments\\".$sess["user"].’_’.md5(base64_decode($bound))."_".$filename;   
if (!file_exists($fullfilename))   
exit;   
 
clearstatcache();   
 
$fp = fopen($fullfilename,"rb");    
$email = fread($fp, filesize($fullfilename));    
fclose($fp);    
  
echo($email);    
  
exit;

让我来讲解一下这段代码吧~

首先,从浏览器中取得cache的值,如果值不为空,那么就开始组合$fullfilename.然后就是fopen,再是读出所有内容并输出到浏览器中。

但是这里就出现了问题了…我们的$filename变量没有经过任何处理就组合到了读取的文件中。如果我们的$filename中包含目录的跳转符号的话,那么我们就可以跨越目录读取文件了….似乎是个好兆头.先去利用一下看看.

到了那个网站的8080端口,从WebMail注册一个用户进去.提示成功,然后从我的邮箱中发一封带附件的邮件到这个新的邮箱中,得到收到邮件以后,我们就开始来利用一下这个漏洞吧.

在收到的邮件中点开附件,然后按F11将全屏掉IE窗口,再地址栏后输入&cache=kevin1986&filename=/../../../index.php 回车一下,果然读出了index.php的内容.(图P1)

这一下好办了,我只要去读一些默认的配置文件就可以读到比如Metabase.bin,因为在默认配置下,Magic Winmail是以LocalSystem权限启动的,所以相应的Apache服务也是以LocalSystem权限启动的.所以metabase.bin是可以读到的

但是我要下载,文件名这些东西是必要的,从那个中读到路径可以,但是文件名就不行了.所以我得想别的办法..先看看这个Magic WinMail的安装目录吧,猜一个.多加几个../来到根目录,然后读boot.ini,结果正确返回其中的内容,说明Magic WinMail的目录安装在C盘,似乎Magic WinMail本身不是很好玩,干脆去读读别的东西吧…比如Serv-U…

试着读/../../../../../program files/Serv-U/Readme.txt

发现存在,说明Serv-U安装在C盘里.那么读读ServUDeamon.ini吧.

果然不出我所料读出来了,而且管理员似乎很喜欢在注释中写一些很敏感的东西,比如密码.这不是明摆着放我的水吗?不管了.先从Serv-U里进去,然后就发现站点目录下还有一个vipdownloadsmusic目录,在IE中一访问,居然全部是打包好的音乐.足足6个G呀….爽死我了.挑选几个比较喜爱的New Age风格的piano solo专辑下载,然后睡觉去了..有一些兴奋,但是总觉得不爽,至少我总觉得有些东西还没做够…是什么呢?哦….贪心的坏毛病又来了.拿下主机吧…看看是不是还有别的什么好的音乐…这个站的站长可是收集稀有的音乐碟出名的呀.

从FTP上写一个WebShell进去,浏览了一下C盘,发现做了限制了,但是从刚才跳转的目录来看,一般是默认安装位置,那么就直接进C:\Magic WinMail Server目录…很好很好,什么都能做,包括在Magic Winmail的Webmail目录中写的权限..

我随便写一个PHP代码进到主机里,然后执行命令(图P2).由于权限是最高的关系,很轻松的加进了用户,并且进入了终端服务器。..但是很遗憾,别的盘中除了备份文件,再没有别的东西了.有点沮丧的给管理员发了封邮件,然后删除用户走人。玩网络安全的,要玩的适当才有意思.不对吗?

转自《黑客防线》

本文链接:https://www.moyan.net.cn/wooyun/307.html
本文标题:Magic WinMail Server漏洞
本文声明:如无特殊说明,您可以自由转载本文,但需标注转载自莫言斋(https://www.moyan.net.cn/)。本站部分文章信息来源于互联网及公开渠道,如侵犯到您的权益,请及时联系我们(94372#qq.com)处理!
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇