### 简要描述: yxcms是一款内容管理系统。 借助后台一个CSRF起飞,伪造session可直接登录后台~ ### 详细说明: 我也是第一次见到这样有趣的漏洞,yxcms允许我们自定义session,而且这个过程通过get方式来完成。 我觉得这样的问题属于CSRF,不经意之间就能获取大效果。 其问题代码如下: ``` <?php //公共类 class commonController extends baseController{ public function __construct() { parent::__construct(); if(!empty($_GET['phpsessid'])) session_id($_GET['phpsessid']);//通过GET方法传递sessionid,firefox session_starts(); …… ``` 当$_GET[‘phpsessid’]非空时,就令session_id为我们传入的值。 于是我想到一个猥琐的方法,我们构造一个链接让管理员点击,管理员点击后会重新设置他的session,而且这个session就是我们构造的。因为session重置了所以管理员也需要重新登录,而重新登录后其session_id就是我们构造的。我们只要利用这个session_id就能登录管理后台了。 比如我来构造: http://xxxx/index.php?r=admin/index/index&phpsessid=f4cking123 管理员点击后会跳转到登录页面,但此时他的phpsession已经是我们构造的f4cking123了: [<img src="https://images.seebug.org/upload/201401/04025013c4f80a97eed13b19e4852744df63dee3.jpg" alt="04.jpg" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201401/04025013c4f80a97eed13b19e4852744df63dee3.jpg)...
### 简要描述: yxcms是一款内容管理系统。 借助后台一个CSRF起飞,伪造session可直接登录后台~ ### 详细说明: 我也是第一次见到这样有趣的漏洞,yxcms允许我们自定义session,而且这个过程通过get方式来完成。 我觉得这样的问题属于CSRF,不经意之间就能获取大效果。 其问题代码如下: ``` <?php //公共类 class commonController extends baseController{ public function __construct() { parent::__construct(); if(!empty($_GET['phpsessid'])) session_id($_GET['phpsessid']);//通过GET方法传递sessionid,firefox session_starts(); …… ``` 当$_GET[‘phpsessid’]非空时,就令session_id为我们传入的值。 于是我想到一个猥琐的方法,我们构造一个链接让管理员点击,管理员点击后会重新设置他的session,而且这个session就是我们构造的。因为session重置了所以管理员也需要重新登录,而重新登录后其session_id就是我们构造的。我们只要利用这个session_id就能登录管理后台了。 比如我来构造: http://xxxx/index.php?r=admin/index/index&phpsessid=f4cking123 管理员点击后会跳转到登录页面,但此时他的phpsession已经是我们构造的f4cking123了: [<img src="https://images.seebug.org/upload/201401/04025013c4f80a97eed13b19e4852744df63dee3.jpg" alt="04.jpg" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201401/04025013c4f80a97eed13b19e4852744df63dee3.jpg) 这是管理员如果重新登录,那个这个session就有后台权限了。我们也利用这个链接:http://xxxx/index.php?r=admin/index/index&phpsessid=f4cking123,将自己的session设置成f4cking123,或者随意怎么修改,只要把phpsessid修改成f4cking123就能拥有后台权限了: [<img src="https://images.seebug.org/upload/201401/04025045632668c870b2312c61e3e3d8215cd054.jpg" alt="05.jpg" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201401/04025045632668c870b2312c61e3e3d8215cd054.jpg) ### 漏洞证明: 见详细说明。