目录

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

1. 漏洞描述

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

. 这个漏洞的利用前提是需要登录到后台进行操作,准确来说是从cookies的角度来说是需要处于登录的后台状态
. 后台的Logo上传存在xss漏洞,黑客可以在img的src中注入xss的代码
. 黑客可以利用xss未过滤漏洞,发起CSRF攻击,劫持目标用户向"/dede/file_manage_control.php"文件发送畸形POST数据包
. "/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. 漏洞触发条件

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

0x1: POC

. 利用XSS强制劫持用户发起POST请求
注入xss代码 . POST
http://localhost/dedecms5.7/dede/file_manage_control.php . DATA
fmdo=edit&backurl=&activepath=&filename=csrf.php&str=<?php eval($_post[op]);?>&b1=

3. 漏洞影响范围

. DedeCMS-V5.-UTF8-SP1
. <= DedeCMS-V5.-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

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

  1. XSS CSRF

    XSS CSRF XSS 参考 https://zh.wikipedia.org/wiki/%E8%B7%A8%E7%B6%B2%E7%AB%99%E6%8C%87%E4%BB%A4%E7%A2%BC ...

  2. 关于安全性问题:(XSS,csrf,cors,jsonp,同源策略)

    关于安全性问题:(XSS,csrf,cors,jsonp,同源策略) Ajax 是无需刷新页面就能从服务器获取数据的一种方法.它的核心对象是XHR,同源策略是ajax的一种约束,它为通信设置了相同的协 ...

  3. XSS/CSRF跨站攻击和防护方案

    Xss(Cross Site Scripting 跨站脚本攻击)/CSRF(Cross-site request forgery 跨站请求伪造),它与著名的SQL注入攻击类似,都是利用了Web页面的编 ...

  4. 深入理解OAuth2.0 XSS CSRF CORS 原理

    基于Token的WEB后台认证机制 http://www.cnblogs.com/xiekeli/p/5607107.html 深入理解OAuth2.0协议http://blog.csdn.net/s ...

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

    0x00 前言 这篇文章首发于圈子,这里作为记录一下. 整个利用链构造下来是比较有趣的,但实际渗透中遇到的几率比较少. 此次审的是yxcms 1.4.6版本,应该是最后一个版本了吧? 0x01 从任意 ...

  6. Web攻防之XSS,CSRF,SQL注入

    摘要:对Web服务器的攻击也可以说是形形色色.种类繁多,常见的有挂马.SQL注入.缓冲区溢出.嗅探.利用IIS等针对Webserver漏洞进行攻击.本文结合WEB TOP10漏洞中常见的SQL注入,跨 ...

  7. XSS CSRF 攻击

    XSS:跨站脚本(Cross-site scripting) CSRF:跨站请求伪造(Cross-site request forgery)定义: 跨网站脚本(Cross-site scripting ...

  8. web安全:xss && csrf

    首先在user.php文件中去除黑名单的第一行标签,在白名单中添加<script>E1:csrf攻击zoobarcsrf:cross-site request forgery    跨站伪 ...

  9. XSS,CSRF,Cookie防劫持的处理

    Cookie与sessionHTTP天然是无状态的协议, 为了维持和跟踪用户的状态, 引入了Cookie和Session. Cookie包含了浏览器客户端的用户凭证, 相对较小. Session则维护 ...

随机推荐

  1. Web服务器之iis,apache,tomcat三者之间的比较

    IIS-Apache-Tomcat的区别 IIS与Tomcat的区别 IIS是微软公司的Web服务器.主要支持ASP语言环境. Tomcat是Java Servlet 2.2和JavaServer P ...

  2. Webwork 学习之路【03】核心类 ServletDispatcher 的初始化

    1. Webwork 与 Xwork 搭建环境需要的的jar 为:webwork-core-1.0.jar,xwork-1.0.jar,搭建webwork 需要xwork 的jar呢?原因是这样的,W ...

  3. Theano3.3-练习之逻辑回归

    是官网上theano的逻辑回归的练习(http://deeplearning.net/tutorial/logreg.html#logreg)的讲解. Classifying MNIST digits ...

  4. 别再迷信 zepto 了

    希望网上公开课的老师们不要再讲移动端网页用zepto了,坑了无数鸟啊 ~~~. 1.自己/公司/项目组所写和所积累(网上下的)的js函数都是以jQuery插件的写法来写的,如果要换到zepto上的话那 ...

  5. Jump Game 的三种思路 - leetcode 55. Jump Game

    Jump Game 是一道有意思的题目.题意很简单,给你一个数组,数组的每个元素表示你能前进的最大步数,最开始时你在第一个元素所在的位置,之后你可以前进,问能不能到达最后一个元素位置. 比如: A = ...

  6. 怎样关闭google的自动更新

    谷歌的自动更新很烦人的,只要你点击关于Google Chrome,谷歌就会自动更新成最新版本. 但是sencha框架好像与谷歌29.0以上的兼容性不是很好,所以关闭谷歌自动更新的需求来了,网上很多人说 ...

  7. 关于图像文章垂直无缝连接滚动——JS实现

    <!-- 作者:chenyehuacecil@163.com 时间:2015-02-04 描述:实现整篇文章从下到上的无缝连接滚动--><html xmlns="http: ...

  8. ElasticSearch入门系列(二)交互API

    一.基于HTTP协议,以JSON为数据交互格式的RESTful API 向ElasticSearch发出请求的组成部分与其他的普通的HTTP请求是一样的: curl -X<VERB> '& ...

  9. LVS+MYCAT读写分离+MYSQL同步部署手册(第三版)

    1      配置MYSQL主备同步 1.1    测试环境 mysql版本:5.6.24: 操作系统内核版本:Linux-3.13-0-32 主数据库IP:192.168.10.3: 主数据库名:d ...

  10. 屠龙之路_向恶龙Alpha进发_FirstDay

    听说山的那边海的那边,出现了一头名为Alpha的恶龙,此龙无恶不作,还掠走了国王那漂酿的公主.少年很是气愤,大吼:"放开那女孩!!!",于是找到了志同道合的六位勇士,一起组成了屠龙 ...