记录黑客技术中优秀的内容, 传播黑客文化,分享黑客技术精华

WSS最新版任意用户密码重置(官方demo演示)

2014-12-30 21:35

WSS最新版设计缺陷导致任意用户密码重置,包括管理员

文件user_edit_password.php

code 区域
<?php require_once('config/tank_config.php'); ?>

<?php require_once('session_unset.php'); ?>

<?php require_once('session.php'); ?>

<?php



$editFormAction = $_SERVER['PHP_SELF'];

if (isset($_SERVER['QUERY_STRING'])) {

$editFormAction .= "?" . htmlentities($_SERVER['QUERY_STRING']);

}



$password = "-1";

if (isset($_POST['tk_user_pass'])) {

$password = $_POST['tk_user_pass'];

}



$tk_password = md5(crypt($password,substr($password,0,2)));



if ((isset($_POST["MM_update"])) && ($_POST["MM_update"] == "form1")) {

$updateSQL = sprintf("UPDATE tk_user SET tk_user_pass=%s WHERE uid=%s",

GetSQLValueString($tk_password, "text"),

GetSQLValueString($_POST['ID'], "int"));



mysql_select_db($database_tankdb, $tankdb);

$Result1 = mysql_query($updateSQL, $tankdb) or die(mysql_error());



此文件及功能为修改用户密码,本为后台管理员权限

但是由于设计缺陷,导致未判断用户权限,导致全部用户都可以重置任意用户密码

通过POST[ID]即可重置对应用户密码了

漏洞证明:

官方demo演示:

官方demo测试账户为只读账户

这里我们利用漏洞可以重置admin用户密码

1.png



保存成功

如果UID不正确会返回错误,没权限,但是不影响密码重置

这里测试用户的UID=7

重置之后,admin用户登录:

2.png

修复方案:

code 区域
$restrictGoTo = "user_error3.php";

if ($_SESSION['MM_rank'] < "5") {

header("Location: ". $restrictGoTo);

exit;

}



将上面代码放到最前面即可

知识来源: www.wooyun.org/bugs/wooyun-2014-084203

阅读:60556 | 评论:0 | 标签:无

想收藏或者和大家分享这篇好文章→复制链接地址

“WSS最新版任意用户密码重置(官方demo演示)”共有0条留言

发表评论

姓名:

邮箱:

网址:

验证码:

公告

关注公众号hackdig,学习最新黑客技术

推广

工具

标签云