### 简要描述: 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...
### 简要描述: 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