### 简要描述:
Easytalk <= V2.5 任意用户登录,包括管理员后台登陆
### 详细说明:
Easytalk <= V2.5 任意用户登录,包括管理员后台登陆
--------
首先是前台:
问题出在:Home/Common/function.php中的function authcode()
```
function authcode($string, $operation = 'DECODE', $key = '', $expiry = 0) {
$ckey_length = 4;
$key = md5($key ? $key : SITE_URL);
$keya = md5(substr($key, 0, 16));
$keyb = md5(substr($key, 16, 16));
```
以及Home/lib/Action/IndexAction.class.php中的dologin
```
if ($remember=="checked") {
Cookie::set('authcookie', authcode("$user[user_name]\t$user[user_id]\t1",'ENCODE'), 31536000);
} else {
Cookie::set('authcookie', authcode("$user[user_name]\t$user[user_id]\t0",'ENCODE'));
}
```
由于只验证了$user[user_name]\t$user[user_id] 而user_id可以在收听时候得到:
[<img src="https://images.seebug.org/upload/201402/241528446026d70ddad0f51b2d96f57eac88190e.jpg" alt="1.jpg" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201402/241528446026d70ddad0f51b2d96f57eac88190e.jpg)
而在function authcode()中,唯一用来判别不同网站的key,默认是没有的,那就会使用SITE_URL,也就是网站地址:例如http://wb.sol.net.cn这个站点,那SITE_URL=http://wb.sol.net.cn
我们可以通过指定SITE_URL来得到authcookie:
[<img src="https://images.seebug.org/upload/201402/24152907e8155f2d767d7d8c8a9336e59a149094.jpg" alt="2.jpg" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201402/24152907e8155f2d767d7d8c8a9336e59a149094.jpg)
然后登录~~
[<img src="https://images.seebug.org/upload/201402/2415292101c512ff9628d01ff390535bb7b98adf.jpg" alt="3.jpg" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201402/2415292101c512ff9628d01ff390535bb7b98adf.jpg)
---------------------------------------------
------------------
同样,在后台登陆时候,也使用了这个函数:
```
if($user) {
Cookie::set('adminauth', authcode("$user_name\t$user[user_id]",'ENCODE'));
echo '<script>parent.location.href="'.SITE_URL.'/admin.php?s=/Index"</script>';
} else {
$this->redirect('/Login/index');
}
```
用户可以自己使用authcode函数计算出adminauth的值,登录后台。
### 漏洞证明:
已测V2.5,V2.4
暂无评论