### 简要描述: 过滤不严。 ### 详细说明: ``` public function getClientIp() { if(!isset($this->e['ip'])) { if (getenv("HTTP_CLIENT_IP") && strcasecmp(getenv("HTTP_CLIENT_IP"), "unknown")) $ip = getenv("HTTP_CLIENT_IP"); else if (getenv("HTTP_X_FORWARDED_FOR") && strcasecmp(getenv("HTTP_X_FORWARDED_FOR"), "unknown")) $ip = getenv("HTTP_X_FORWARDED_FOR"); else if (getenv("REMOTE_ADDR") && strcasecmp(getenv("REMOTE_ADDR"), "unknown")) $ip = getenv("REMOTE_ADDR"); else if (isset($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR'] && strcasecmp($_SERVER['REMOTE_ADDR'], "unknown")) $ip = $_SERVER['REMOTE_ADDR']; else $ip = "unknown"; $this->e['ip'] = $ip; } return $this->e['ip']; } ``` 这里x-forwarded-for可控 无过滤。 在注册的时候调用了这个函数。 造成了注入。 ### 漏洞证明: 测试一下官网。 [<img src="https://images.seebug.org/upload/201405/171459185155895bb9b5de7666f7199511e4a005.jpg" alt="phpems3.jpg" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201405/171459185155895bb9b5de7666f7199511e4a005.jpg) 成功。
### 简要描述: 过滤不严。 ### 详细说明: ``` public function getClientIp() { if(!isset($this->e['ip'])) { if (getenv("HTTP_CLIENT_IP") && strcasecmp(getenv("HTTP_CLIENT_IP"), "unknown")) $ip = getenv("HTTP_CLIENT_IP"); else if (getenv("HTTP_X_FORWARDED_FOR") && strcasecmp(getenv("HTTP_X_FORWARDED_FOR"), "unknown")) $ip = getenv("HTTP_X_FORWARDED_FOR"); else if (getenv("REMOTE_ADDR") && strcasecmp(getenv("REMOTE_ADDR"), "unknown")) $ip = getenv("REMOTE_ADDR"); else if (isset($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR'] && strcasecmp($_SERVER['REMOTE_ADDR'], "unknown")) $ip = $_SERVER['REMOTE_ADDR']; else $ip = "unknown"; $this->e['ip'] = $ip; } return $this->e['ip']; } ``` 这里x-forwarded-for可控 无过滤。 在注册的时候调用了这个函数。 造成了注入。 ### 漏洞证明: 测试一下官网。 [<img src="https://images.seebug.org/upload/201405/171459185155895bb9b5de7666f7199511e4a005.jpg" alt="phpems3.jpg" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201405/171459185155895bb9b5de7666f7199511e4a005.jpg) 成功。