DedeCMS Xss+Csrf Getshell \dede\file_manage_control.php

目录

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

1. 漏洞描述

对这个漏洞的利用方式进行简单的概括

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管理的形式管理自己的磁盘

Relevant Link:

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. 漏洞触发条件

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: POC

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. 漏洞影响范围

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"的文件进行恶意检测

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

时间: 2024-10-16 07:09:54

DedeCMS Xss+Csrf Getshell \dede\file_manage_control.php的相关文章

浅谈 XSS &amp; CSRF(转)

浅谈 XSS & CSRF 客户端(浏览器)安全 同源策略(Same Origin Policy) 同源策略阻止从一个源加载的文档或脚本获取或设置另一个源加载的文档的属性. 如: 不能通过Ajax获取另一个源的数据: JavaScript不能访问页面中iframe加载的跨域资源. 对 http://store.company.com/dir/page.html 同源检测 跨域限制 浏览器中,script.img.iframe.link等标签,可以跨域引用或加载资源. 不同于 XMLHttpReq

[代码审计]yxcms从伪xss到getshell

0x00 前言 这篇文章首发于圈子,这里作为记录一下. 整个利用链构造下来是比较有趣的,但实际渗透中遇到的几率比较少. 此次审的是yxcms 1.4.6版本,应该是最后一个版本了吧? 0x01 从任意文件删除漏洞说起 yxcms经过修修补补,前台的一些洞都挖得差不多了,一番挖掘没什么效果,转到后台去.后台的防护是比较松懈的.找到了个任意文件删除漏洞. /protected/apps/admin/controller/filesController.php public function del(

dedeCMS远程写入getshell(测试版本V5.7)

该漏洞必须结合apache的解析漏洞: 当Apache检测到一个文件有多个扩展名时,如1.php.bak,会从右向左判断,直到有一个Apache认识的扩展名.如果所有的扩展名Apache都不认识,那么变会按照httpd.conf配置中所指定的方式展示这个问题,一般默认情况下是"text/plain"这种方式. dede在安装完成,如果没有删除install文件夹,在install下会有一个index.php.bak的备份文件,利用apache的解析漏洞,可以以php方式解析该文件. 在

web安全:xss &amp;&amp; csrf

首先在user.php文件中去除黑名单的第一行标签,在白名单中添加<script>E1:csrf攻击zoobarcsrf:cross-site request forgery    跨站伪造请求普通用户登录myzoo网站后,在未退出的状态下,浏览了attack/csrf网站该网站伪造了一份myzoo网站的表单,普通用户在不知情的状态下,自动被提交了一份恶意表单由于http协议的无状态特性,在每一份请求的表单中会自动带上cookie从而在myzoo网站看来一份合法的请求被提交iframe限制了网

Web攻防之XSS,CSRF,SQL注入

摘要:对Web服务器的攻击也可以说是形形色色.种类繁多,常见的有挂马.SQL注入.缓冲区溢出.嗅探.利用IIS等针对Webserver漏洞进行攻击.本文结合WEB TOP10漏洞中常见的SQL注入,跨站脚本攻击(XSS),跨站请求伪造(CSRF)攻击的产生原理,介绍相应的防范方法. 关键字:SQL注入,XSS,CSRF 1.SQL注入 所谓SQL注入式攻击,就是攻击者把SQL命令插入到Web表单的输入域或页面请求的查询字符串,欺骗服务器执行恶意的SQL命令. 攻击者通过在应用程序预先定义好的SQ

dedecms调用相关文章dede:likearticle

当前栏目的调用好像DEDECMS标签中没有提到,其实DEDECMS已经默认了,有心的站长们如果测试过肯定知道.下面为大家介绍下怎么样调用当前栏目,有链接的{dede:type}[field:typename /]{/dede:type} 没链接的{dede:type}[field:typename /]{/dede:type}

XSS CSRF 攻击

XSS:跨站脚本(Cross-site scripting) CSRF:跨站请求伪造(Cross-site request forgery)定义: 跨网站脚本(Cross-site scripting,通常简称为XSS或跨站脚本或跨站脚本攻击),为了与层叠样式表(Cascading Style Sheets)区分,故命名为XSS XSS 攻击通常指的是通过利用网页开发时留下的漏洞,通过巧妙的方法注入恶意指令代码到网页,使用户加载并执行攻击者恶意制造的网页程序.这些恶意网页程序通常 是JavaSc

Web攻防之XSS,CSRF,SQL注入(转)

摘要:对Web服务器的攻击也可以说是形形色色.种类繁多,常见的有挂马.SQL注入.缓冲区溢出.嗅探.利用IIS等针对Webserver漏洞进行攻击.本文结合WEB TOP10漏洞中常见的SQL注入,跨站脚本攻击(XSS),跨站请求伪造(CSRF)攻击的产生原理,介绍相应的防范方法.关键字:SQL注入,XSS,CSRF1.SQL注入 所谓SQL注入式攻击,就是攻击者把SQL命令插入到Web表单的输入域或页面请求的查询字符串,欺骗服务器执行恶意的SQL命令. 攻击者通过在应用程序预先定义好的SQL语

XSS,CSRF,Cookie防劫持的处理

Cookie与sessionHTTP天然是无状态的协议, 为了维持和跟踪用户的状态, 引入了Cookie和Session. Cookie包含了浏览器客户端的用户凭证, 相对较小. Session则维护在服务器, 用于维护相对较大的用户信息. 用通俗的语言, Cookie是钥匙, Session是锁芯. Cookie简单理解就是钥匙, 每次去服务端获取资源, 需要带着这把钥匙, 只有自己的锁芯(资源), 才能打开.. 但是如果钥匙被别人拿了, 那别人就可以冒充你的身份, 去打开你的锁芯, 从而获取