### 简要描述:
WSS最新版设计缺陷导致任意用户密码重置,包括管理员,官方demo演示
### 详细说明:
WSS最新版设计缺陷导致任意用户密码重置,包括管理员
文件user_edit_password.php
```
<?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用户密码
[<img src="https://images.seebug.org/upload/201411/21230619119b56d2587c392980d77bc4e58b9a69.png" alt="1.png" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201411/21230619119b56d2587c392980d77bc4e58b9a69.png)
保存成功
如果UID不正确会返回错误,没权限,但是不影响密码重置
这里测试用户的UID=7
重置之后,admin用户登录:
[<img src="https://images.seebug.org/upload/201411/21230710e7a8dd96f6edc8d36d5b9f2c0b2ad747.png" alt="2.png" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201411/21230710e7a8dd96f6edc8d36d5b9f2c0b2ad747.png)
Unavailable Comments