程氏舞曲CMS最新php版本高危SQL注入漏洞

2014-02-18T00:00:00
ID SSV:94562
Type seebug
Reporter Root
Modified 2014-02-18T00:00:00

Description

简要描述:

注入毫无限制!

详细说明:

昨天刚下载的源码(应该最新的吧...) bug文件位置:https://images.seebug.org/upload/app/models/csdjskins.php第3466行

function GetIP(){ //定义了一个获取ip地址的函数 if (getenv("HTTP_CLIENT_IP") && strcasecmp(getenv("HTTP_CLIENT_IP"), "unknown")) //换取ip地址,如果存在,则使用client_ip。 $ip = getenv("HTTP_CLIENT_IP"); else if (getenv("HTTP_X_FORWARDED_FOR") && strcasecmp(getenv("HTTP_X_FORWARDED_FOR"), "unknown")) //同上,获取x-forwarded-for的ip $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 = ""; return($ip);

跟踪GetIp()函数调用地址:https://images.seebug.org/upload/app/controllers/open.php第186行。

$regip=$this->CsdjSkins->GetIP();//使用句柄调用了前面的获取ip函数 if(empty($regip)){//仅仅判断是否为空,没做处理 $this->CsdjSkins->Msg_url('请不要使用代理注册!','javascript:history.back();'); } if($this->CsdjSkins->Getqx($user['CS_Name'],User_RegJzName)=='ok'){ //禁止帐号 $this->CsdjSkins->Msg_url('您的帐号已被禁止注册!','javascript:history.back();'); } if($this->CsdjSkins->Getqx($user['CS_Nichen'],User_RegJzName)=='ok'){ //禁止帐号 $this->CsdjSkins->Msg_url('您的呢称已被禁止注册!','javascript:history.back();'); } $sqlu="SELECT cs_id,CS_AddTime FROM ".CS_SqlPrefix."user where CS_Regip='".$regip."'";//带入查询

漏洞证明:

本地环境搭建演示:去前台注册会员,然后burp抓包,伪造ip参数。这边伪造Clien-IP和x-forwarded-for都可以,

<img src="https://images.seebug.org/upload/201402/18115325465f61c5c621ae08656d78843c521546.jpg" alt="QQ图片20140218114031.jpg" width="600" onerror="javascript:errimg(this);">

可以看到日志中'被带入查询了。 Post注入还是使用sqlmap演示下吧

<img src="https://images.seebug.org/upload/201402/1811543180a62daf5c21a2bff43f0fa0aa20d973.jpg" alt="QQ图片20140218114102.jpg" width="600" onerror="javascript:errimg(this);">