### 简要描述:
thinksaas2.4+php2.6+apache2 未过滤
感谢@xfkxfk
### 详细说明:
先看消息写入代码:
/var/www/html/thinksaas/app/user/action/message.php
```
case "do":
	
		$msg_userid = $userid;
		$msg_touserid = intval($_POST['touserid']);
		$msg_content = tsFilter($_POST['content']); //用tsFilter过滤
		
		aac('system')->antiWord($msg_content); //过滤垃圾词
		
		aac('message')->sendmsg($msg_userid,$msg_touserid,$msg_content);
               /×	
//发送消息
	public function sendmsg($userid,$touserid,$content){
	
		$userid = intval($userid);
		
		$touserid = intval($touserid);
		
		$content = str_replace(SITE_URL,'[SITE_URL]',$content);
		
		$content = addslashes(trim($content));
		
		if($touserid && $content){
		
			$messageid = $this->create('message',array(
				'userid'		=> $userid,
				'touserid'		=> $touserid,
				'content'		=> $content,
				'addtime'			=> time(),
			));
			
		}
	}
	
	
}
×/
		header("Location: ".tsUrl('message','my'));
		
		break;
}
```
/var/www/html/thinksaas/thinksaas/tsFunction.php
```
function tsFilter($value) {
	$value = trim($value);
	//定义不允许提交的SQl命令和关键字
	$words = array();
	$words[] = "add ";
	$words[] = "and ";
	$words[] = "count ";
	$words[] = "order ";
	$words[] = "table ";
	$words[] = "by ";
	$words[] = "create ";
	$words[] = "delete ";
	$words[] = "drop ";
	$words[] = "from ";
	$words[] = "grant ";
	$words[] = "insert ";
	$words[] = "select ";
	$words[] = "truncate ";
	$words[] = "update ";
	$words[] = "use ";
	$words[] = "--";
	$words[] = "#";
	$words[] = "group_concat";
	$words[] = "column_name";
	$words[] = "information_schema.columns";
	$words[] = "table_schema";
	$words[] = "union ";
	$words[] = "where ";
	$words[] = "alert";
	$value = strtolower($value);
	//转换为小写
	foreach ($words as $word) {
		if (strstr($value, $word)) {
			$value = str_replace($word, '', $value);
		}
	}
	return $value;
}
```
可以看到只过滤了一些sql注入关键字,问题是仅仅过滤了一遍。继续来看取出有没有过滤
/var/www/html/thinksaas/app/message/action/my.php
```
<?php
defined('IN_TS') or die('Access Denied.');
$arrMsg = $new['message']->findAll('message',array(
	'touserid'=>$strUser['userid'],
	'isread'=>'0',
));
foreach($arrMsg as $key=>$item){  //可以看到没编码也没过滤
	$arrMsg[$key]['content'] = str_replace('[SITE_URL]',SITE_URL,$item['content']);
	if($item['userid']){
		$arrMsg[$key]['user'] = aac('user')->getOneUser($item['userid']);
	}
}
$title = '我的消息盒子';
include template("my");
```
 
### 漏洞证明:
[<img src="https://images.seebug.org/upload/201512/251050037b33243aa7b137ec894b0b57dead9cc0.png" alt="th1.png" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201512/251050037b33243aa7b137ec894b0b57dead9cc0.png)
[<img src="https://images.seebug.org/upload/201512/251050100ea4af784d78f3b527a6284d7c4ce5c7.png" alt="th2.png" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201512/251050100ea4af784d78f3b527a6284d7c4ce5c7.png)
[<img src="https://images.seebug.org/upload/201512/2510501768a505f10bf7a6cc536767efc4eb5a13.png" alt="th4.png" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201512/2510501768a505f10bf7a6cc536767efc4eb5a13.png)
[<img src="https://images.seebug.org/upload/201512/251050240441e4513c29d059c2b6ba34d0c65aef.png" alt="th5.png" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201512/251050240441e4513c29d059c2b6ba34d0c65aef.png)
 
                       
                       
        
          
暂无评论