DEDECMS在17年时,曾被曝光一个留言板导致CSRFgetshell的漏洞,如果站长审核到你发的链接并且点击的时候会生成一个木马。路径为include/taglib/shell.lib.php
该漏洞成因:
在tpl.php中
/*---------------------------
function savetagfile() { }
保存标签碎片修改
--------------------------*/else if($action=='savetagfile')
{
if(!preg_match("#^[a-z0-9_-]{1,}\.lib\.php$#i", $filename))
{
ShowMsg('文件名不合法,不允许进行操作!', '-1');
exit();
}
require_once(DEDEINC.'/oxwindow.class.php');
$tagname = preg_replace("#\.lib\.php$#i", "", $filename);
$content = stripslashes($content);
$truefile = DEDEINC.'/taglib/'.$filename;
$fp = fopen($truefile, 'w');
fwrite($fp, $content);
fclose($fp);
$msg = "
测试标签:(需要使用环境变量的不能在此测试)
{dede:{$tagname} }{/dede:{$tagname}}
";
$wintitle = "成功修改/创建文件!";
$wecome_info = "标签源码碎片管理 << 修改/新建标签";
$win = new OxWindow();
$win->AddTitle("修改/新建标签:");
$win->AddMsgItem($msg);
$winform = $win->GetWindow("hand"," ",false);
$win->Display();
exit();
}
这里是漏洞利用写入文件的地方,但是我们知道,基本所有的不安全情况,是在数据输入输出时发生的,这里的参数是怎么传递过来的呢?还有$filename和$content是怎么传递参数的呢ÿ