### 简要描述: ThinkSAAS 设计缺陷导致严重漏洞 ### 详细说明: ThinkSAAS 的管理后台是system目录。 但是在每一个功能的目录下有一个amdin目录,这下面的功能和system管理后台功能一样。 如\app\article\action\admin\post.php ``` <?php defined('IN_TS') or die('Access Denied.'); switch($ts){ case "list": $page = isset($_GET['page']) ? intval($_GET['page']) : 1; $url = SITE_URL.'index.php?app=article&ac=admin&mg=post&ts=list&page='; $lstart = $page*20-20; $arrArticle = $new['article']->findAll('article',null,'addtime desc',null,$lstart.',20'); $articleNum = $new['article']->findCount('article'); $pageUrl = pagination($articleNum, 20, $page, $url); include template('admin/post_list'); break; //审核 case "isaudit": $articleid = intval($_GET['articleid']); $strArticle = $new['article']->find('article',array( 'articleid'=>$articleid, )); if($strArticle['isaudit']==0){ $new['article']->update('article',array( 'articleid'=>$articleid, ),array( 'isaudit'=>1, )); }else{ $new['article']->update('article',array( 'articleid'=>$articleid, ),array( 'isaudit'=>0, )); }...
### 简要描述: ThinkSAAS 设计缺陷导致严重漏洞 ### 详细说明: ThinkSAAS 的管理后台是system目录。 但是在每一个功能的目录下有一个amdin目录,这下面的功能和system管理后台功能一样。 如\app\article\action\admin\post.php ``` <?php defined('IN_TS') or die('Access Denied.'); switch($ts){ case "list": $page = isset($_GET['page']) ? intval($_GET['page']) : 1; $url = SITE_URL.'index.php?app=article&ac=admin&mg=post&ts=list&page='; $lstart = $page*20-20; $arrArticle = $new['article']->findAll('article',null,'addtime desc',null,$lstart.',20'); $articleNum = $new['article']->findCount('article'); $pageUrl = pagination($articleNum, 20, $page, $url); include template('admin/post_list'); break; //审核 case "isaudit": $articleid = intval($_GET['articleid']); $strArticle = $new['article']->find('article',array( 'articleid'=>$articleid, )); if($strArticle['isaudit']==0){ $new['article']->update('article',array( 'articleid'=>$articleid, ),array( 'isaudit'=>1, )); }else{ $new['article']->update('article',array( 'articleid'=>$articleid, ),array( 'isaudit'=>0, )); } qiMsg('操作成功!'); break; //删除 case "delete": $articleid = intval($_GET['articleid']); $strArticle = $new['article']->find('article',array( 'articleid'=>$articleid, )); if($strArticle['photo']){ unlink('uploadfile/article/'.$strArticle['photo']); } $new['article']->delete('article',array( 'articleid'=>$articleid, )); $new['article']->delete('tag_article_index',array( 'articleid'=>$articleid, )); qiMsg('删除成功!'); break; //推荐 case "isrecommend": $articleid = intval($_GET['articleid']); $strArticle = $new['article']->find('article',array( 'articleid'=>$articleid, )); if($strArticle['isrecommend']==0){ $new['article']->update('article',array( 'articleid'=>$articleid, ),array( 'isrecommend'=>1, )); }else{ $new['article']->update('article',array( 'articleid'=>$articleid, ),array( 'isrecommend'=>0, )); } qiMsg('操作成功!'); break; } ``` 这个目录下的功能就是操作文章的,可以修改,审核,删除等操作。 这些都是system目录下的功能,但是这里普通用户通构造连接即可进入,访问,操作。 http://localhost/thinksaas/index.php?app=article&ac=admin/post&ts=list [<img src="https://images.seebug.org/upload/201402/201146152a2b74becd7c9366a434318659990f8b.png" alt="0.png" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201402/201146152a2b74becd7c9366a434318659990f8b.png) 这里就可以访问到需要审核的文章,而且只要改变参数ts的内容进行相关操作就可以,审核,推荐,删除操作。 这样跟system的功能一直。 这样一来,每一个功能都有admin目录,构造url就能访问,操作,普通会员就成了system管理员了。 所以是一个很严重的漏洞,而且这里面都没有过滤,很多sql注入等漏洞。 ### 漏洞证明: 见详细说明